2012-02-01 34 views
4

我正在嘗試使用Play插件設置Jenkins CI,該插件使用播放自動測試來運行應用程序。使用SSL進行自動測試java java密鑰存儲區的問題

問題是我也有SSL作爲要求,但firephoque java測試瀏覽器沒有適當的密鑰/證書使用。

我最初使用OpenSSL創建了一個密鑰/證書對,但現在需要弄清楚如何將這些密鑰導入到全局默認Java密鑰存儲區(推測在$ HOME/.keystore中)。

我在不同的順序無濟於事嘗試這些資源:

發揮原有谷歌組線程我開始:http://bit.ly/yZBezu

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-using-java-keytool.html

http://www.agentbob.info/agentbob/79-AB.html

http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html

我可以通過SSL運行應用程序n中發揮運動員在application.conf條目拿起密鑰庫的位置,但在自動測試運行firephoque瀏覽器我得到:

The application does not start. There are errors: 
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
    PKIX path building failed: 
    sun.security.provider.certpath.SunCertPathBuilderException: 
     unable to find valid certification path to requested target 

很想在一個簡潔的方式做的方向指出這個,我的大腦被炸DER和PEM的視覺和keytool的樂趣,現在我無法想象得很直。

最終目標是一個自簽名證書,它將根據play auto-test以及其他任何運行該應用的方式進行驗證。

我application.conf文件有以下的不同組合:

# SSL - localhost default 
# original way worked fine before auto-test came into play (so to speak :)) 
# certificate.key.file=conf/play_host.key 
# certificate.file=conf/play_host.crt 

# Keystore 
ssl.KeyManagerFactory.algorithm=SunX509 
trustmanager.algorithm=JKS 
keystore.password=passw0rd 
keystore.file=conf/keystore.jks 
https.port=9443 

UPDATE 的conf/keystore.jks的輸出:

# keytool -list -keystore keystore.jks 
Enter keystore password: 

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

localhost, Jan 31, 2012, PrivateKeyEntry, 
Certificate fingerprint (MD5): 36:EF:63:4E:53:23:18:22:13:8C:2C:DB:F1:72:2C:93 

但不訪問該文件通過在自動測試中運行的瀏覽器,它是firephoque,它是一個Java應用程序,它通過默認密鑰庫進行查看 - 做了更多挖掘並開始查看

/Library/Java/Home/lib/security/

其符號鏈接

/System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security

尋找到任何應​​用程序將能夠找到一個密鑰存儲的位置。但是如果我在上面的security文件夾中放置另一個密鑰庫,我仍然會得到相同的結果。

更新2:也試圖

play auto-test -Xmx1g -Djavax.net.ssl.trustStore=/path/to/keystore.jks

,但我不知道我這樣做是正確。我怎樣才能啓動播放自動測試以在明確的地方查找密鑰存儲?

+2

不是說它確實有幫助,但是它們的錯誤跟蹤系統中有一張票,它描述了這個問題。一個修復它的存在,但計劃爲1.2.5這是還沒有出來:https://play.lighthouseapp.com/projects/57987/tickets/995 – dertoni 2012-02-01 07:31:34

+1

謝謝dertoni - 最後我修補了我的遊戲副本1.2.4使用新的base.py文件,即使在配置SSL時也允許運行自動測試。現在就像魅力一樣。 – Brian 2012-02-01 19:20:42

回答

1

假設您按照以下鏈接中的步驟操作,那麼您的密鑰庫應該有正確的信息。

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-using-java-keytool.html

你知道,如果你的應用程序正在回升密鑰庫?
可以指定密鑰庫文件位置的完整路徑(即keystore.file =/home/some_user/conf/keystore.jks)嗎?
另外,您可以發送密鑰庫的輸出嗎?

+0

是的,我已經能夠創建密鑰庫,我只是不知道在哪裏放置密鑰庫,以便firephoque可以在沒有明確設置的情況下進行拾取。我在OSX Lion 10.7.2上。 – Brian 2012-02-01 03:59:50

+1

如果firephoque只是一個java進程,那麼你就走在了正確的軌道上。除了信任庫外,您還需要指定密碼「-Djavax.net.ssl.trustStorePassword = blahblah」。執行後,你能檢查可執行的命令字符串(ps -ef | grep java)以確保它已經取得了所有的變量嗎? – bubbly 2012-02-01 05:57:52

+0

嘿凱文 - 同樣的問題,當我有兩個Java屬性的命令行。最後,我用base.py的修補程序修補了我的遊戲副本,這根本就不是用SSL寫的。 – Brian 2012-02-01 19:22:08

相關問題