1

複数のサーバーを含むシステム設定があります。たとえば、アクセス管理サーバーは、ユーザーがアプリケーションにログインするときに認証部分を実行し、ログインに成功すると、HTTP 要求を Web サーバーに転送し、Web サーバーはそれをさらにアプリケーション サーバーに転送します。

ここでの要件は、 での認証中にAM server、Cookie にデータを書き込む必要があることです。これらの Cookie は、アプリケーション サーバーに転送される HTTP 要求に追加されます。App Server にデプロイされたアプリケーションは、これらの Cookie を読み取り、値を使用します。

これは私が実行し、正常にテストしました。しかし実際には、Cookie のデータは暗号化された形式である必要があります。そのため、AM サーバーはデータを暗号化し、アプリ サーバーはデータを復号化して使用する必要があります。AM サーバー上に を作成し、JCEKS keystorekeytool コマンドを使用して暗号化キーを 1 つ追加しました。AES-128次に、AM サーバーで作成したカスタム クラスで、Cipher を使用してデータをアルゴリズムで暗号化します。これは正常に行われます。
また、アプリ サーバーに別のアプリを作成JCEKS keystorし、keytool コマンドを使用して暗号化キーを追加しました。次に、AM サーバーから証明書をエクスポートし、App サーバーの にエントリを作成した App サーバーにkeystoreインポートしました。しかし、Cipher と AES-128 を使用してアプリ サーバー上のデータを復号化すると、例外が発生します。keystoreTrustedCertkeystore

javax.crypto.BadPaddingException: Given final block not properly padded

キーストアのセットアップで何かが欠けているに違いありません。これを行う方法について、いくつかのガイダンスを提供してください。

ありがとう!

4

1 に答える 1

1

私は解決策を得ました。私が間違っていたのは、両方のキーストアで暗号化キーを生成していたことです。正しい方法は、あるキーストアで秘密鍵を生成し、それを別のキーストアにエクスポート/インポートすることです。私はkeytoolでこれを行うことができなかったので、keytool IUI、素晴らしいツールを使用しました!!!

于 2012-10-01T10:16:00.240 に答える