2013-06-11 9 views
7

私はプレイしてプロダクション用にSSLを設定する過程で初めてです。私は正常に自己署名証明書でDEVモードで実行することができますが、私は最初のクライアントのハンドシェイクが失敗し、プレイには、次のスタックトレースを生成し、署名付き証明書を使用しようとすると:Play 2.1 SSL設定

play - Error loading HTTPS keystore from conf/keystore.jks 
java.security.NoSuchAlgorithmException: RSA KeyManagerFactory not available 
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159) ~[na:1.7.0_11] 
at javax.net.ssl.KeyManagerFactory.getInstance(KeyManagerFactory.java:139) ~[na:1.7.0_11] 
at play.core.server.NettyServer$PlayPipelineFactory$$anonfun$sslContext$1.apply(NettyServer.scala:74) [play_2.10.jar:2.1.1] 
at play.core.server.NettyServer$PlayPipelineFactory$$anonfun$sslContext$1.apply(NettyServer.scala:62) [play_2.10.jar:2.1.1] 
at scala.Option.map(Option.scala:145) [scala-library.jar:na] 
at play.core.server.NettyServer$PlayPipelineFactory.sslContext$lzycompute(NettyServer.scala:62) [play_2.10.jar:2.1.1] 

私がプレイ2.1.1を実行していますよJava 1.7.0_11。

//

keytool -certreq -alias server -keyalg RSA -file server.csr -keystore keystore.jks

//ロードルートと中間本命

keytool -import -alias godaddy -keystore keystore.jks -file gd_bundle.crt 

//負荷が

keytool -import -alias server -keystore keystore.jks -file server.crt 
CERT署名したCSRを生成:次のように私は、SSLサポートを構成しました

// sslを実行するためにシステムパラメータで再生を開始

sudo ../../jars/play-2.1.1/play -Dhttps.port=443 -Dhttps.keyStore="conf/keystore.jks" -Dhttps.keyStorePassword=REDACTED -Dhttps.keyStoreAlgorithm="RSA" run 

どのように知っていますかjava.security.NoSuchAlgorithmException:RSA KeyManagerFactory not available error?

答えて

7

コマンドから-Dhttps.keyStoreAlgorithm=RSAを削除します。 @ gmaは正しいです、これは鍵ではなく鍵ストアのアルゴリズムです。

私は、生成された鍵で自分のプレイアプリケーションを起動するには、次のコマンドを使用:私は同じエラーを受け取ったキーストアアルゴとしてJKSを使用する場合

keytool -genkey -alias MyKey -keyalg RSA -keysize 2048 -keystore keystore.jks 
play -Dhttps.port=9443 -Dhttps.keyStore=keystore.jks -Dhttps.keyStorePassword=password run 

はその後https://localhost:9443

+0

ありがとう、私はこれも成功しました。 @gmaへの応答で私のコメントを参照してください。 – merritts

1

RSAがキーストアアルゴリズムではなく、アルゴリズムであるためです。 -Dhttps.keyStoreAlgorithm="RSAから-Dhttps.keyStoreAlgorithm="jks"と変更します。jksは、Javaキーストアのデフォルトの形式です。

+2

に私のブラウザを指摘しました。次に、証明書を再入力し、https.keyStoreAlgorithm = "jks"を使用してPlayを開始しましたが、失敗しました。しかし、https.keyStoreAlgorithmパラメータを除外してPlayを正常に開始しました。 – merritts

+0

私も '-Dhttps.keyStoreAlgorithm =" jks "'を試して、@merrittsと同じエラーを受けました – Jason

関連する問題