Tomcat Webアプリケーションの保護
はじめにの動画
ダウンロード
https://protector4j.com/download にアクセスして最新バージョンをダウンロードしてください。
インストール
WindowsおよびLinux
特別なインストール手順はありません。アーカイブをダウンロードして解凍するだけです。
macOS
dmgファイルをダウンロードし、Protector4JをApplicationsにドラッグしてください。このツールの実際の内容は/Applications/Protector4J.app/Contents/protector4j-macにあります。

GUIツールでTomcat Webアプリケーションを暗号化する
Protector4Jフォルダに移動し、p4j-ui[.exe] を実行すると、以下のユーザーインターフェースが表示されます。
macOSユーザーの場合は、通常のMacアプリケーションと同様にProtector4J.appをダブルクリックするだけです。

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

アプリケーションタイプの選択
アプリケーションタイプページで「Tomcat Web Application」ボタンをクリックしてください。

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

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

Javaバージョン選択
Javaバージョンを選択します。Java 8、Java 11、Java 17、Java 21に対応しています。
新規フォルダ作成
デフォルトで選択されています。暗号化タスクは出力フォルダにp4j-[task-id]という名前のフォルダを作成し、出力結果はこのフォルダに保存されます。
KeySeed
暗号化タスクはデフォルトでサーバーからランダムキーを要求して暗号化します。異なる暗号化タスクで生成されたファイルは一緒に使用できません。 KeySeedを指定すると、同じKeySeedは同じ暗号化キーを生成します。このオプションは前述の「jarファイルのみ暗号化」オプションと組み合わせて、既存のアプリケーションを更新する際に使用できます。 このオプションはライセンスユーザーのみ有効です。
暗号化タスクの実行
しばらくお待ちください。暗号化タスクが完了すると、出力フォルダに暗号化されたアプリケーションの出力が表示されます。

暗号化されたアプリケーションの実行
出力フォルダに移動し、tomcat/binに入り、startup.shまたはstartup.batを実行してアプリケーションを起動します。
META-INF/classesはどこに?
webappsフォルダにアプリケーションを見つけることができますが、元のWEB-INF/classesは存在しなくなっています。アプリケーションの構造を保護し、外部ユーザーがクラス名やその他の情報にアクセスできないようにするため、WEB-INF/classesをWEB-INF/vlxapp.jarにパッケージ化しました。これは当社独自の暗号化JARX形式です。
注意事項
このプログラムのターゲットプラットフォームがmacOSまたはLinuxで、Windows上でビルドされた場合は、初回起動前にターゲットプラットフォームでadd-executable-permission.shを実行して実行権限を付与してください。
CLIツールでTomcat Webアプリケーションを暗号化する
構成ファイル
CLIツールはタスクファイルをパラメータとして指定する必要があります。
protector4j/task-templatesフォルダのtomcat-task.ymlを見つけてコピーし、変更してください。
# Available values: 8,11,17,21
javaVersion: 8
# Available values: 9,10
tomcatVersion: 9
# The war files that need to be encrypted
warFiles: []
# Only encrypt the jar files, do not deploy the runtime
# This option is used while upgrading an existing application
onlyEncryptJarFiles: false
## [ Output Options ]
# The output folder
outputFolder: ''
# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true
# 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, available values: [win, linux, mac] or emtpy for current platforms
# if you need the support for win32, linux32 and linux-aarch64, the addon need to be purchased, please visit https://protector4j.com/addons
platforms: []
暗号化タスクの実行
Protector4Jフォルダに移動して以下のコマンドを実行してください。
LinuxまたはmacOS
macOSユーザーの場合、CLIツールはProtector4J.app/Contents/protector4j-macにあります。
./p4j -t tomcat -f path-of-task-file
Windows
p4j -t tomcat -f path-of-task-file
p4j --helpを実行して詳細なパラメータを確認できます。
アカウント情報付きで実行
./p4j -t tomcat -f path-of-task-file -u email -p password
結果の確認
暗号化タスクが完了したら、出力フォルダに移動して結果を確認してください。
暗号化されたアプリケーションの実行
出力フォルダに移動し、tomcat/binに入り、startup.shまたはstartup.batを実行してアプリケーションを起動します。
META-INF/classesはどこに?
webappsフォルダにアプリケーションを見つけることができますが、元のWEB-INF/classesは存在しなくなっています。アプリケーションの構造を保護し、外部ユーザーがクラス名やその他の情報にアクセスできないようにするため、WEB-INF/classesをWEB-INF/vlxapp.jarにパッケージ化しました。これは当社独自の暗号化JARX形式です。
注意事項
このプログラムのターゲットプラットフォームがmacOSまたはLinuxで、Windows上でビルドされた場合は、初回起動前にターゲットプラットフォームでadd-executable-permission.shを実行して実行権限を付与してください。