首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何配置Play!2.4.2 HTTPS密钥存储库?

如何配置Play!2.4.2 HTTPS密钥存储库?
EN

Stack Overflow用户
提问于 2015-07-31 10:39:25
回答 1查看 3.6K关注 0票数 9

我对Play Framework很陌生,我只是第一次尝试让HTTPS在Java 8上使用2.4.2,我可以让它使用默认的密钥存储库,而不是使用我自己的密钥存储库。我在build.sbt中配置了工作默认密钥存储库

代码语言:javascript
复制
javaOptions ++= Seq(
    "-Dhttps.port=9443"
)

然后,配置您自己的密钥存储库的正式文件对我来说有点太抽象了。它提到了在application.conf中配置它,但没有说明如何配置,也没有在命令行上进行配置,但没有使用Java示例。谷歌会公布一些Scala的例子,但我不能哄骗他们,因为他们使用的是devSettings这样的东西,这些东西在Java世界中似乎并不常见,或者至少我不太懂Play和Scala,不足以控制它们。

据我所知,我似乎在build.sbt中使用了自己独特的配置

代码语言:javascript
复制
javaOptions ++= Seq(
    "-Dhttps.port=9443",
    "-Dhttps.keyStore.path=keystore.jks",
    "-Dhttps.keyStore.password=password")

它构建并运行ok:

代码语言:javascript
复制
p.c.s.NettyServer - Listening for HTTPS on port /0:0:0:0:0:0:0:0:9443
play.api.Play - Application started (Dev)

但是在第一个https:// access中,我在Actuator中得到了一个无穷的堆栈跟踪:

代码语言:javascript
复制
play.core.server.NettyServer$PlayPipelineFactory - cannot load SSL context
java.lang.reflect.InvocationTargetException: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_45]
    ...
play.core.server.netty.PlayDefaultUpstreamHandler - Exception caught in Netty
java.lang.IllegalArgumentException: empty text
    at org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:89) ~[netty-3.10.3.Final.jar:na]
    ...

我的第一个想法是,我没有正确地配置它,但我还没有找到一个明确的指南播放2.4。我开始怀疑我的谷歌搜索能力了。我发现了很多关于前端代理和避免SSL终止的引用,但是我并不是在开发一个公共网站,并且发现这种方法太过分了。

我不知道它是否是一只红鲱鱼,但是Netty项目很久以前就放弃了org.jboss.netty,现在使用了io.netty。我在堆栈跟踪中看到了org.jboss.netty,并播放了2.4.2,它似乎使用的是Netty3.10.3.Final,它非常古老。我碰巧熟悉Netty,在生产中使用了4.x,而5.x目前在Alpha中。为什么游戏被困在过去了?我该担心吗?

我发现了几个似乎密切相关的问题,比如游戏中的一个bug 2.2.xAHC中的一个小虫 ( Play uses),但这两个问题似乎都在我使用的2.4.2游戏之前就已经解决了。尽管如此,我还是尝试了一些修复方法,比如升级异步-http-客户端依赖关系,不包括异步-http-客户端中的org.jboss.netty传递依赖关系,以及升级到Netty 3.10.4。

所以现在我被困住了,但我觉得我只是错过了一个入门指南。也许所有这些依赖问题和相关的bug只是浪费时间?

EN

回答 1

Stack Overflow用户

发布于 2015-07-31 11:14:45

所以在贴出问题5分钟后,我想出了答案.我的配置键错了,密钥存储路径需要是绝对的或相对于项目根(即添加conf/如果它在您的conf文件夹中):

代码语言:javascript
复制
javaOptions ++= Seq(
    "-Dhttps.port=9443",
    "-Dhttps.keyStore=conf/keystore.jks",
    "-Dhttps.keyStorePassword=password")

我对钥匙的错误是使用了点根据文件

代码语言:javascript
复制
https.keyStore.path
https.keyStore.password

而不是:

代码语言:javascript
复制
https.keyStore
https.keyStorePassword

我不知道如何从dot.notation到camelCase,甚至不知道我在这里配置什么。这些参数更像标准的JVM参数javax.net.ssl.keyStorejavax.net.ssl.keyStorePassword,但并不完全如此。我觉得我错过了一个窍门。如果Play报告说它找不到keystore而不是NPE,那就太好了,但是由于我似乎在配置JVM,所以除非有另一种方法来配置这些东西,否则可能对它无能为力.带着像样的文件!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31744167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档