【问题标题】:Play 2.1 SSL Configuration播放 2.1 SSL 配置
【发布时间】:2013-06-11 02:33:53
【问题描述】:

我是 Play 新手,正在为生产配置 SSL。我可以使用自签名证书在开发模式下成功运行,但是当我尝试使用签名证书时,初始客户端握手失败并且 Play 生成以下堆栈跟踪:

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

//launch play 使用系统参数运行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 错误?

【问题讨论】:

    标签: java ssl playframework-2.1


    【解决方案1】:

    从您的命令中删除-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

    【讨论】:

    • 谢谢,我也成功了。请参阅我对@gma 的回复。
    【解决方案2】:

    这是因为 RSA 不是您的 keyStoreAlgorithm 而是您的 Key 算法。 将 -Dhttps.keyStoreAlgorithm="RSA 更改为 -Dhttps.keyStoreAlgorithm="jks",因为 jks 是 Java 密钥库的默认格式。

    【讨论】:

    • 当我使用 jks 作为密钥库算法时,我收到了同样的错误。然后,我重新键入了我的证书并使用 https.keyStoreAlgorithm="jks" 启动了 Play,但未成功。但是,我通过排除 https.keyStoreAlgorithm 参数成功启动了 Play。
    • 我也试过-Dhttps.keyStoreAlgorithm="jks",得到了和@merritts一样的错误
    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2013-03-11
    • 2013-01-11
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多