Jboss EAP 5.1 にデプロイされ、Spring 2.5 を使用して 1 年以上動作している CXF Web サービスがあります。
クライアント証明書管理の既存の戦略は次のとおりです。
- 非 PROD の場合、証明書の名前は「NAME-NON-PROD.cer」です。
- PROD の場合、証明書の名前は「NAME-PROD.cer」です。
(1) から、privateKey をNAME .pfx という名前のファイルに抽出し、それを非本番サーバーにデプロイします。
(2) から、privateKey をNAME .pfx という名前のファイル (上記とまったく同じで、上記とまったく同じパスワード) に抽出しますが、これを本番サーバーにのみデプロイします。
または、証明書名はパターン NAME- ENVIRONMENT .cer に従います。抽出された秘密鍵には NAME.pfx (環境サフィックスなし) しかありません。
MutualSSL を有効にするために、jboss-cxf.xml にこれがあります。
<http:conduit name="*.http-conduit">
<http:tlsClientParameters
secureSocketProtocol="SSL">
<!-- START - setup private key for Mutual SSL -->
<sec:keyManagers keyPassword="MyPassword">
<sec:keyStore type="PKCS12" password="MyPassword" resource="Path/To/Private/Key/NAME.pfx" />
</sec:keyManagers>
<!-- END - setup private key for Mutual SSL -->
<sec:cipherSuitesFilter>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_AES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>
</http:conduit>
上記はうまくいきます。
ただし、証明書 (秘密鍵) は間もなく期限切れになります。最近再組織が行われたため、別のチームが証明書とパスワードの管理を担当しています。問題は、上記の非製品と製品の両方からまったく同じ名前のファイルにキーを抽出することを拒否することです。彼らは、pfx ファイルは接尾辞 (-PROD または -NON-PROD) を含めて別の名前にする必要があり、構成を外部化する必要があると感じています ... .. おそらく JNDI から読み取る必要があります。
JNDIを読み取ってprivateKey NameのSpring Beanとパスワードの別のSpring Beanをインスタンス化する例をオンラインで見つけることができません...そしてそれを使用して、tlsClientParameters内で上記のkeyManagersをインスタンス化します。
たとえば、JNDI から次の Spring Bean を作成するとします。
<bean id="MyPvtKey"
class="org.springframework.jndi.JndiObjectFactoryBean"
p:jndiName="config/MyPvtKey"
/>
<bean id="MyPvtKeyPwd"
class="org.springframework.jndi.JndiObjectFactoryBean"
p:jndiName="config/MyPvtKeyPwd"
/>
上記を使用して tlsClientParameters 内にキーストアを設定するにはどうすればよいですか。
誰かがリソースや例を教えてくれますか?
SGB