HTTPS for APIs : In Production



我正在使用playframework作为我构建的API解决方案。我的服务器没有提供HTML页面,只有JSON中的API查询响应。我知道PlayFramework可以使用 Dhttps.port=9443 使用自签名的密钥来支持HTTP。它写在文档中,仅在开发模式下使用。

既然,我没有提供网页(因此没有浏览器警告,请警告自签名键),我只对API呼叫的加密感到困扰,我也可以将其用于生产吗?还是我错过了什么?

文档说,如果您在产品模式下运行应用程序时不提供任何证书,则Play将生成一个并运行它。这是不鼓励的,因为证书只是您无法控制的随机内容。

提出了使用专用证书的问题,如果您在浏览器中打开URL,它会警告用户"非信任认证"。由于您并非如此,如果您的Web服务器消费者仅限于限制集,我认为您可以在产品模式下使用它。在继续之前,请考虑其他利弊。

如果您希望继续前进,则可以始终生成自己的专用证书并使用它来运行该应用程序。根据播放文档的命令是:

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"

希望它有帮助!

最新更新