Tomcat Webアプリケーションの保護

はじめにの動画

▶️ YouTube

▶️ Bilibili

ダウンロード

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を実行して実行権限を付与してください。