我正在使用Playframework来构建我已经构建的API解决方案。我的服务器没有提供HTML页面,只有JSON中的API查询响应。我知道playframework可以使用 Dhttps.port=9443
支持使用自签名密钥的https。
文档中写道,这仅在开发模式下使用。
因为,我没有提供网页(因此没有自签名密钥的浏览器警告)而且我只关心API调用的加密,我是否也可以将它用于生产?或者我错过了什么?
答案 0 :(得分:1)
文档说如果您在prod模式下运行应用程序时没有提供任何证书,Play将生成一个并运行它。这是不鼓励的,因为证书只是一个你无法控制的随机内容。
关于使用私有证书的问题,如果您在浏览器中打开该URL,它会警告用户“不可信证书”。由于您不是这种情况,并且您的Web服务器使用者被限制在受限制的集合中,我认为您可以在prod模式下使用它。在继续之前,请考虑它的其他优点和缺点。
如果您希望继续,您可以随时生成自己的私人证书并使用它来运行该应用。根据Play文档的命令是:
keytool -genkeypair -v \
-alias cert \
-dname "CN=<CHANGE ME>, OU=<CHANGE ME>, O=<CHANGE ME>, L=<CHANGE ME>, ST=<CHANGE ME>, C=IN" \
-keystore cert.jks \
-keypass a1AhzIabP1 \
-storepass a1AhzIabP1 \
-keyalg RSA \
-keysize 4096 \
-ext KeyUsage:critical="keyCertSign" \
-ext BasicConstraints:critical="ca:true" \
-validity 9999
使用此命令检查证书
keytool -list -v \
-keystore conf/cert.jks \
-storepass a1AhzIabP1
然后在你的application.conf中配置它
https.port=9443
play.server.https.keyStore.path="conf/cert.jks" # relative path to your certificate
play.server.https.keyStore.password="a1AhzIabP1"
希望它有所帮助!