【问题标题】:Can't specify a keystore file for https无法为 https 指定密钥库文件
【发布时间】:2016-04-13 13:11:37
【问题描述】:

我已经在 Play 上拉了几个小时的头发(再次)。我正在使用 v2.4.6 并尝试使用自定义密钥库文件进行 HTTPS 访问。

我关注了documentation

  • 在我的 build.sbt 文件中添加了 javaOptions in run += "-Dhttp.port=9020"
  • 添加了play.server.https.keyStore.path = "conf/mykeystorefile.jksplay.server.https.keyStore.password = "my_keystore_file_passphrase

然后我像往常一样使用激活器 UI 启动播放,并且 HTTPS 请求确实有效,但播放总是生成一个 generated.keystore 并使用它而不是使用我需要的那个。并打印一条警告:“使用生成的密钥和 HTTPS 的自签名证书。这不应该在生产中使用。”

如果我查看 Play 源代码,this 是日志的来源。但是在阅读代码时,只有在没有提供play.server.https.keyStore.path 时才会发生这种情况,它是......

发生了什么事?

【问题讨论】:

    标签: playframework playframework-2.4


    【解决方案1】:

    根据您的问题,我猜您正在开发模式下使用 Play。如果是这种情况,我认为在开发模式下,Play 在启动应用程序之前无法读取这些值(同样的问题使您使用 javaOptions 指定端口)。

    您可以尝试使用系统属性 (-Dplay.server.https.(...)) 指定这些值或在 build.sbt 中指定这些选项:

    devSettings := Map(
        "play.server.http.port" -> "9020",
        "play.server.https.keyStore.path" -> "/path/to/file",
        // (...)
    )
    

    注意:不知道这是否是您配置中的拼写错误,但我认为您还需要指定 https.port...

    【讨论】:

    • 是的,我的意思是 https.port 这是一个错字。 devSettings 不起作用,但将 javaOptions in run += "-Dplay.server.https.keyStore.path=path/to/keystore"javaOptions in run += "-Dplay.server.https.keyStore.password=password" 添加到我的 build.sbt 就可以了。非常感谢!
    【解决方案2】:

    对于那些真正只想在开发模式下使用的人...

    “您可以在 build.sbt 中为 run 命令配置额外的设置。这些设置不会在您部署应用程序时使用。”

    ~https://www.playframework.com/documentation/2.5.x/ConfigFile#Extra-devSettings

    例如:

    PlayKeys.devSettings := Seq(
       "https.port" -> "9443",
       "play.server.https.keyStore.path" -> "conf/keystore.jks"
    )
    

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 2023-04-07
      • 2019-05-10
      相关资源
      最近更新 更多