java - 玩2.1 SSL配置

标签 java ssl playframework-2.1

我是 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

//使用系统参数启动游戏以运行 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 错误是怎么回事?

最佳答案

从您的命令中删除 -Dhttps.keyStoreAlgorithm=RSA。 @gma 是对的,这是 key 存储的算法,而不是 key 。

我使用以下命令使用我生成的 key 启动我的 Play 应用程序:

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

关于java - 玩2.1 SSL配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035690/

相关文章:

ssl - 在登录中使用 ssl 的好处

https - SSL 连接泄露了多少数据?

maven - sbt (play!) 项目与 maven 父 pom 的集成

mongodb - Play Framework 2.1 的最佳 mongodb 驱动程序

java - 无法设置 wiremock 服务器端口

java - GWT 验证输入到文本框中的时间 - 将长类型结果转换为 24 小时格式时出错

java - 如何将我的 Java 程序转换为 .exe 文件?

java - 从集合中分离 2 列的值?

java - ApacheDS 在嵌入式 LDAP 服务器上启用 SSL

java - Playframework 获取对象列表作为选择中的选项