73.5. 使用
73.5.1. Raw keys
エクスチェンジに署名して検証する最も基本的な方法は、次のように KeyPair を使用することです。
キーへの参照を使用して、Spring XML 拡張機能 で同じことを実現できます。
73.5.2. キーストアとエイリアス。
JCE は、秘密鍵と証明書のペアを格納し、それらを暗号化し、パスワードで保護するための非常に用途の広いキーストアの概念を提供します。これらは、取得 API にエイリアスを適用することで取得できます。鍵と証明書を鍵ストアに入れる方法はいくつかありますが、ほとんどの場合、これは外部の keytool アプリケーションで行われます。これは、keytool を使用して、自己署名証明書と秘密鍵で KeyStore を作成する良い例です。
この例では、bob によってエイリアス化されたキーと証明書を持つキーストアを使用しています。キーストアとキーのパスワードは letmein です
以下は、Fluent ビルダーを介してキーストアを使用する方法を示しています。また、キーストアをロードして初期化する方法も示しています。
再び Spring では、ref を使用して実際のキーストアインスタンスを検索します。
73.5.3. JCE プロバイダーとアルゴリズムの変更
署名アルゴリズムまたはセキュリティープロバイダーの変更は、それらの名前を指定するだけの簡単な作業です。選択したアルゴリズムと互換性のあるキーも使用する必要があります。
または
73.5.4. 署名メッセージヘッダーの変更
署名を格納するために使用されるメッセージヘッダーを変更することが望ましい場合があります。次のように、ルート定義で別のヘッダー名を指定できます。
または
73.5.5. バッファーサイズの変更
バッファーのサイズを更新する必要がある場合…
または
73.5.6. キーを動的に提供します。
受信者リストまたは同様の EIP を使用する場合、エクスチェンジの受信者は動的に変化する可能性があります。すべての受信者に同じキーを使用することは、実現可能でも望ましくもない場合があります。署名キーを交換ごとに動的に指定できると便利です。エクスチェンジは、署名する前に、ターゲット受信者のキーで動的に強化できます。これを容易にするために、署名メカニズムでは、以下のメッセージヘッダーを介してキーを動的に提供できます。
-
Exchange.SIGNATURE_PRIVATE_KEY
,"CamelSignaturePrivateKey"
-
Exchange.SIGNATURE_PUBLIC_KEY_OR_CERT
,"CamelSignaturePublicKeyOrCert"
または
キーストアエイリアスを動的に指定することをお勧めします。この場合も、エイリアスはメッセージヘッダーで指定できます。
-
Exchange.KEYSTORE_ALIAS
,"CamelSignatureKeyStoreAlias"
または
ヘッダーは次のように設定されます
Exchange unsigned = getMandatoryEndpoint("direct:alias-sign").createExchange(); unsigned.getIn().setBody(payload); unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob"); unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, "letmein".toCharArray()); template.send("direct:alias-sign", unsigned); Exchange signed = getMandatoryEndpoint("direct:alias-sign").createExchange(); signed.getIn().copyFrom(unsigned.getOut()); signed.getIn().setHeader(KEYSTORE_ALIAS, "bob"); template.send("direct:alias-verify", signed);