2013-06-11 17 views
7

Sono nuovo per giocare e in fase di configurazione SSL per la produzione. Posso eseguire correttamente in modalità dev con un certificato auto firmato, ma quando provo ad usare un certificato firmato l'handshake client iniziale non riesce and Play genera il seguente stack trace:Play 2.1 Configurazione 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] 

sto correndo gioco 2.1.1 e Java 1.7.0_11. Ho configurato il supporto SSL come segue:

// generare un CSR

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

// carico di root e certs intermedi

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

// carico firmato cert

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

// avvia la riproduzione con i parametri di sistema per eseguire ssl

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

Qualcuno sa come java.security.NoSuchAlgorithmException: RSA KeyManagerFactory errore non disponibile?

risposta

7

Rimuovere il -Dhttps.keyStoreAlgorithm=RSA dal comando. @gma ha ragione, questo è l'algoritmo per il keystore, non la chiave.

ho usato i seguenti comandi per avviare la mia applicazione giocare con una chiave ho generato:

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

poi indicò il mio browser per https://localhost:9443

+0

Grazie, ho avuto successo anche con questo. Vedi il mio commento in risposta a @gma. – merritts

1

è perché RSA non è la vostra keyStoreAlgorithm ma chiave algoritmo. Modifica a -Dhttps.keyStoreAlgorithm="jks" come jks è il formato predefinito per i keystore Java.

+2

Quando ho usato JKS come l'algo chiavi che ho ricevuto lo stesso errore. Ho quindi ridigitato il mio certificato e lanciato Play, senza successo, con https.keyStoreAlgorithm = "jks". Tuttavia, ho lanciato con successo Play escludendo il parametro https.keyStoreAlgorithm. – merritts

+0

Ho anche provato '-Dhttps.keyStoreAlgorithm =" jks "' e ho ottenuto lo stesso errore di @merritts – Jason

Problemi correlati