2013-06-11 16 views
7

Jestem nowy w Play i podczas konfigurowania SSL do produkcji. Mogę z powodzeniem pracować w trybie dev z self podpisany certyfikat, ale gdy próbuję użyć podpisany certyfikat początkowy handshake klient nie and Play generuje następujący ślad stosu:Odtwarzanie 2.1 Konfiguracja 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] 

biegnę Juz 2.1.1 i Java 1.7.0_11. Mam skonfigurowane obsługę SSL, co następuje:

// wygenerować CSR

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

// korzeniowe obciążenia i certs pośrednie

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

// obciążenie podpisaną cert

keytool -import -alias server -keystore keystore.jks -file server.crt 

// uruchamianie gry z parametrami systemu do uruchomienia ssl

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

Czy ktoś wie jak java.security.NoSuchAlgorithmException: RSA KeyManagerFactory błąd niedostępny?

Odpowiedz

7

Usuń -Dhttps.keyStoreAlgorithm=RSA z Twojego polecenia. @gma ma rację, jest to algorytm dla magazynu kluczy, a nie klucza.

użyłem następujące polecenia, aby rozpocząć mojej aplikacji zabaw z kluczem I generowanego:

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

Potem wskazała przeglądarkę do https://localhost:9443

+0

Dzięki, miałem z tym sukces. Zobacz mój komentarz w odpowiedzi na @gma. – merritts

1

To dlatego RSA nie jest twoja keyStoreAlgorithm ale Key algorytm. Zmiana -Dhttps.keyStoreAlgorithm="RSA na -Dhttps.keyStoreAlgorithm="jks" jako jks to domyślny format dla magazynów kluczy Java.

+2

Kiedy użyłem JKS jako algo kluczy otrzymałem ten sam błąd. Następnie ponownie wpisałem mój certyfikat i uruchomiłem grę bezskutecznie za pomocą https.keyStoreAlgorithm = "jks". Pomyślnie uruchomiłem grę, wykluczając parametr https.keyStoreAlgorithm. – merritts

+0

Próbowałem również '-Dhttps.keyStoreAlgorithm =" jks "' i otrzymałem ten sam błąd co @merritts – Jason

Powiązane problemy