2013-06-11 3 views
7

Я новичок в игре и в процессе настройки SSL для производства. Я могу успешно работать в режиме разработчика с сертификатом,, но когда я пытаюсь использовать подписанный сертификат первоначального клиента рукопожатие терпит неудачу и воспроизведение генерирует следующую трассировку стеки: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] 

Я бег Play 2.1.1 и Java 1.7.0_11. Я настроил поддержку SSL следующим образом:

// генерировать CSR

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 

// запуск игры с системными параметрами для запуска 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 не доступную ошибку?

ответ

7

Извлеките из вашей команды -Dhttps.keyStoreAlgorithm=RSA. @gma прав, это алгоритм для хранилища ключей, а не ключ.

Я использовал следующие команды для запуска моей игры приложения с ключом я генерируемой:

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 не является вашим keyStoreAlgorithm, но вы Ключ. Изменение -Dhttps.keyStoreAlgorithm="RSA по -Dhttps.keyStoreAlgorithm="jks" как jks - это формат по умолчанию для хранилищ ключей Java.

+2

Когда я использовал JKS в качестве хранилища ключей алгоритма я получил ту же ошибку. Затем я повторно подключил свой сертификат и безуспешно запустил Play с https.keyStoreAlgorithm = "jks". Однако я успешно запустил Play, исключив параметр https.keyStoreAlgorithm. – merritts

+0

Я также пробовал '-Dhttps.keyStoreAlgorithm =" jks "' и получил ту же ошибку, что и @merritts – Jason