Spring Bootアプリケーションの保護

はじめにの動画

▶️ YouTube

▶️ Bilibili

ダウンロード

https://protector4j.com/download にアクセスして最新バージョンをダウンロードしてください。

インストール

WindowsおよびLinux

特別なインストール手順はありません。アーカイブをダウンロードして解凍するだけです。

macOS

dmgファイルをダウンロードし、Protector4JをApplicationsにドラッグしてください。このツールの実際の内容は/Applications/Protector4J.app/Contents/protector4j-macにあります。

GUIツールでSpring Bootアプリケーションを暗号化する

Protector4Jフォルダに移動し、p4j-ui[.exe] を実行すると、以下のユーザーインターフェースが表示されます。

macOSユーザーの場合は、通常のMacアプリケーションと同様にProtector4J.appをダブルクリックするだけです。

ログイン

既にライセンスを購入している場合は、右上のログインボタンをクリックしてユーザー情報を入力してください。ライセンスをお持ちでない場合でも、このツールを試用できます。

アプリケーションタイプの選択

アプリケーションタイプページで「Spring Boot Application」ボタンをクリックしてください。

暗号化するjar/warファイルの選択

暗号化したいjar/warファイルを選択します。1つまたは複数のファイルを選択できます。

オプション

jarファイルのみ暗号化

JRE全体をデプロイせずに、jarファイルのみを暗号化します。このオプションは通常、KeySeed機能と組み合わせて既存のプログラムを更新する際に使用されます。

実行ファイルの作成

アプリケーション起動用の実行ファイルを作成します。.exe拡張子は追加しないでください。

コンソール非表示

このオプションはWindowsのGUIプログラムにのみ有効で、プログラム実行中のコマンドラインウィンドウを非表示にします。

JVMオプション

-Xmxや-XmsなどのJVMオプションを設定します。スペースまたは改行で区切ります。

出力

Javaバージョン選択

Javaバージョンを選択します。Java 8、Java 11、Java 17、Java 21に対応しています。

新規フォルダ作成

デフォルトで選択されています。暗号化タスクは出力フォルダにp4j-[task-id]という名前のフォルダを作成し、出力結果はこのフォルダに保存されます。

JavaFXを含む

JavaFXアプリケーションの場合は、このオプションを選択してください。

SWTアプリケーション

SWTアプリケーションの場合は、このオプションを選択してください。

KeySeed

暗号化タスクはデフォルトでサーバーからランダムキーを要求して暗号化します。異なる暗号化タスクで生成されたファイルは一緒に使用できません。 KeySeedを指定すると、同じKeySeedは同じ暗号化キーを生成します。このオプションは前述の「jarファイルのみ暗号化」オプションと組み合わせて、既存のアプリケーションを更新する際に使用できます。 このオプションはライセンスユーザーのみ有効です。

暗号化タスクの実行

しばらくお待ちください。暗号化タスクが完了すると、出力フォルダに暗号化されたアプリケーションの出力結果が表示されます。

暗号化されたアプリケーションの実行

暗号化されたアプリケーションを実行するには3つの方法があります。

  1. exeファイルで実行

ターゲットプラットフォームがWindowsの場合、暗号化タスクで生成された実行ファイルで暗号化されたアプリケーションを実行できます。

  1. スクリプトで実行

ターゲットプラットフォームがLinuxまたはmacOSの場合、exe-name.shという名前のスクリプトファイルがあります。このスクリプトファイルでアプリケーションを実行できます。

  1. 従来のJavaコマンドでプログラムを実行

vlxjre/bin/javaを使用してプログラムを手動で実行することもできます。このコマンドの形式は通常のjavaコマンドと同じです。

出力ディレクトリにvlxjreという名前のフォルダがあります。これはカスタマイズされたJREで、暗号化されたjarファイルはvlxlibフォルダに保存されています。

vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass

Java 8は現在vlxjre/bin/java -jarでの実行をサポートしていません。vlxjre/bin/java -cp xx MainClassを使用してください。

注意事項

このプログラムのターゲットプラットフォームがmacOSまたはLinuxで、Windows上でビルドされた場合は、初回起動前にターゲットプラットフォームでadd-executable-permission.shを実行して実行権限を付与してください。

exeファイルのJVMパラメータの変更

Windows

exeファイルのJVMパラメータを変更する必要がある場合は、exe-name.jsonを編集してJArgs配列の値を変更してください。

"JArgs": [
  "-DParam1=value1",
  "-DParam2=value2"
]

LinuxおよびmacOS

スクリプトファイルを開いてJVMパラメータを追加または変更するだけです。

CLIツールでSpring Bootアプリケーションを暗号化する

構成ファイル

CLIツールはタスクファイルをパラメータとして指定する必要があります。

protector4j/task-templatesフォルダに移動し、spring-boot-task.ymlを見つけてコピーし、変更してください。

# Available values: 8,11,17,21
javaVersion: 17

# The jar file of spring boot application
springBootJarFile: ''
# Only encrypt the jar files, do not deploy the runtime
# This option is used while upgrading an existing application
onlyEncryptJarFiles: false

## [ Executable file information ]
# The executable file name
exeFileName: ''
# Hide command line window, only valid for Windows
hideConsole: false
# The splash image
splash: ''
# JVM Options
jvmOptions: []

## [ Output Options ]
# The output folder
outputFolder: ''
# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true
# Whether this is a JavaFX application
includeJavaFX: false
# Whether this a swt gui application
swtApplication: false
# Fixed key seed, only avaiable for licensed user
# Jars encrypted in different tasks can be used together with same key seed
keySeed: ''
# The target platforms, keep it empty for current plaform,
# available values: [win, linux, mac]
platforms: []

## [ Windows exe file information (Optional and only valid for Windows) ]
icon: ''
productName: ''
productVersion: ''
fileVersion: ''
fileDescription: ''
companyName: ''
legalCopyright: ''

暗号化タスクの実行

Protector4Jフォルダに移動して以下のコマンドを実行してください。

LinuxまたはmacOS

macOSユーザーの場合、CLIツールは/Applictions/Protector4J.app/Contents/protector4j-macにあります。

./p4j -t spring-boot -f path-of-task-file

Windows

p4j -t spring-boot -f path-of-task-file

p4j --helpを実行して詳細なパラメータを確認できます。

アカウント情報付きで実行

./p4j -t spring-boot -f path-of-task-file -u email -p password

結果の確認

暗号化タスクが完了したら、出力フォルダに移動して結果を確認してください。

暗号化されたアプリケーションの実行

暗号化されたアプリケーションを実行するには3つの方法があります。

  1. exeファイルで実行

ターゲットプラットフォームがWindowsの場合、暗号化タスクで生成された実行ファイルで暗号化されたアプリケーションを実行できます。

  1. スクリプトで実行

ターゲットプラットフォームがLinuxまたはmacOSの場合、exe-name.shという名前のスクリプトファイルがあります。このスクリプトファイルでアプリケーションを実行できます。

  1. 従来のJavaコマンドでプログラムを実行

vlxjre/bin/javaを使用してプログラムを手動で実行することもできます。このコマンドの形式は通常のjavaコマンドと同じです。

出力ディレクトリにvlxjreという名前のフォルダがあります。これはカスタマイズされたJREで、暗号化されたjarファイルはvlxlibフォルダに保存されています。

vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass

Java 8は現在vlxjre/bin/java -jarでの実行をサポートしていません。vlxjre/bin/java -cp xx MainClassを使用してください。

注意事項

このプログラムのターゲットプラットフォームがmacOSまたはLinuxで、Windows上でビルドされた場合は、初回起動前にターゲットプラットフォームでadd-executable-permission.shを実行して実行権限を付与してください。