3

Apache Ace と管理エージェントの間で双方向の SSL 認証を有効にしようとしています (ドキュメントhttp://ace.apache.org/dev-doc/design/using-client-certificates.htmlに従ってください)。これを実現するには、まず、以下の手順に従って必要な証明書を作成しました。

ステップ #1) 以下のコマンドを実行して、OpenSSL を使用して自己署名認証局を作成しました。

openssl req -x509 -new -config Certi/X509CA/openssl.cnf -days 365 -out Certi/X509CA/ca/new_ca.pem -keyout Certi/X509CA/ca/new_ca_pk.pem

このコマンドは、証明書 new_ca.pem とその秘密鍵 new_ca_pk.pem を作成しました。

ステップ #2) 次のコマンドを使用して、証明書 new_ca.pem を truststore という名前のキーストア ファイルにインポートしました。

keytool -import -alias truststore -keystore truststore -file new_ca.pem

手順 3) keystore-ma.jks という名前の Java キーストア ファイルで使用可能な、管理エージェント用の証明書を作成しました。

keytool -genkey -dname "CN=<hostIP>, OU=IT, O=<Organization Name>, ST=UP, C=IN" -validity 365 -alias keystore-ma -keypass secret -keystore keystore-ma.jks -storepass secret

ステップ #4) CSR を作成しました。

keytool -certreq -alias keystore-ma -file keystore-ma_csr.pem -keypass secret -keystore keystore-ma.jks -storepass secret

手順 5) 手順 1 で作成した認証局を使用して証明書に署名します。

openssl ca -config X509CA/openssl.cnf -days 365 -cert C:/X509CA/ca/new_ca.pem -keyfile C:/X509CA/ca/new_ca_pk.pem -in C:/X509CA/ca/keystore-ma_csr.pem -out C:/X509CA/ca/keystore-ma.pem

ステップ #6) keystore-ma という名前の kestore ファイルに証明書をインポートしました

keytool -import -alias keystore-ma -keystore keystore-ma -file keystore-ma.pem

同様の手順 (3 ~ 6) に従って、keystore-server と呼ばれる Java キーストア ファイルで使用可能な証明書または ACE サーバーを作成して署名します。

次に、Ace Server の Platform.properties を更新して追加のプロパティを含め、Ace Server を起動しました。

-Dorg.osgi.service.http.port.secure=8443
-Dorg.apache.felix.https.enable=true
-Dorg.apache.felix.https.truststore=/path/to/truststore
-Dorg.apache.felix.https.truststore.password=secret
-Dorg.apache.felix.https.keystore=/path/to/keystore-server
-Dorg.apache.felix.https.keystore.password=secret
-Dorg.apache.felix.https.clientcertificate=needs

次のコマンドで ace-launcher.jar を開始しました。

java -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=secret -Djavax.net.ssl.keyStore=/path/to/keystore-ma -Djavax.net.ssl.keyStorePassword=secret -jar org.apache.ace.launcher-0.8.1-SNAPSHOT.jar  discovery=https://<Ace Server Ip>:8443 identification=MyTarget

発見URLをに変更して、何度も試しました

 1) https://<Ace Server Ip>:8080
 2) http://<Ace Server Ip>:8080
 3) https://<Ace Server Ip>:8443

しかし、ターゲットは Ace サーバーに登録されていませんでした。HTTPS 経由で Ace サーバーに接続するために正しい URL を使用していますか? また、Ace サーバーが管理エージェントからの HTTPS トラフィックを受け入れるように構成されているかどうかを確認する方法は?

4

1 に答える 1

1

共通名以上の識別名 (DN) を使用しているようです。
慣例により、共通名としてのホスト名が証明書の検証に使用されます。CN=hostname-of-target(IPアドレスでは不十分です)で証明書を作成すると機能するはずです。

SSL エラーのトラブルシューティングに関するもう 1 つのヒント: サーバーに使用する-Djavax.net.debug=sslと、多くの情報が吐き出されますが、何が起こっているのか、何がエラーの原因なのかについての詳細な情報が得られます。

于 2012-06-28T12:52:04.170 に答える