2012-06-06 58 views
3

我試圖啓用Apache Ace和管理代理之間的雙向SSL身份驗證(通過遵循文檔http://ace.apache.org/dev-doc/design/using-client-certificates.html)。爲了實現這一點,首先我按照以下提到的步驟創建所需的證書:在Apache Ace和管理代理之間啓用SSL身份驗證

步驟#1)由excecuting下面的命令創建使用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通過使用下面的命令

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

步驟#3),用於管理代理創建的證書,在一個Java密鑰文件提供給密鑰存儲名爲信任存儲文件,稱爲密鑰庫-ma.jks。

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)簽名使用在步驟創建的證書權威6)進口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 

步驟#證書kestore文件中的證書,名爲keystore-ma

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

遵循類似的步驟(3-6)來創建和簽署證書或ACE服務器,該證書可以在名爲keystore-server的Java密鑰庫文件中找到。

然後我更新ACE服務器的Platform.properties以包括附加屬性,並開始ACE服務器:

-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 

入門王牌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 

我嘗試多次通過更改發現網址爲

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

但是目標未在Ace Server中註冊。我是否使用正確的URL通過HTTPS連接到Ace服務器? 另外如何確認我的Ace Server是否配置爲接受來自管理代理的HTTPS流量?

+0

是否解決了這個問題?如果是這樣,你能接受下面的答案嗎?如果沒有,你可以進一步描述它嗎? – jawi

回答

1

我看到你使用一個可分辨名稱(DN),而不僅僅是一個通用名稱。
按照慣例,作爲通用名稱的主機名用於證書驗證。如果您使用CN=hostname-of-target創建證書(IP地址不足),它應該可以工作。

另一個提示,我可以給你解決SSL錯誤:使用-Djavax.net.debug=ssl爲服務器,它會吐出大量的信息,但提供了詳細的信息關於發生了什麼以及導致錯誤的原因。