我有一个在 ec2 实例上运行的 Web 服务器,该实例在内部调用使用 Spring Boot 构建的 REST 服务器。现在,我正在尝试让此 REST 服务器在 SSL 下运行。这是我到目前为止所做的:
1)使用此命令创建 CSR 和密钥文件
openssl req -newkey rsa:2048 -nodes -keyout mydomain.key -out mydomain.csr
2) Copied 'csr' to get SSL certificate from GoDaddy.
3)在我的ec2实例上的Nginx下成功安装了证书。
4)当我点击 https 下的主页时,它就可以工作了。我不再从浏览器收到“不安全”消息。
5) 登录失败,因为它进行了 REST 调用,但 REST 服务器未在 SSL 下运行,因此我尝试让它在 SSL 下运行。
6)运行以下命令:
keytool -import -alias mydomain -keystore tomcat.keystore -trustcacerts -file mydomain.com.chained.crt
keytool -import -alias mydomain-key -keystore tomcat.keystore -trustcacerts -file mydomain.key
上一个命令给我一条错误消息:
“keytool 错误:java.lang.Exception:输入不是 X.509 证书”
但这是在上面的步骤 1 中创建的文件,并且同一文件在 Nginx 下工作。我错过了什么(除了我对设置 SSL 知之甚少!)?我相信,我需要第二个命令来指定 application.properties 中“server.ssl.keyAlias”的值。
不是真正的答案,而是溢出的评论。
您不需要“生成”X.509 证书;您已经从 GoDaddy 获得了该信息。如果(且仅当)SpringBoot 服务器通过与(外部)nginx 相同的名称访问——我不清楚——你需要将一对私钥和证书链从 PEM 格式转换为 Java 使用的格式。看:
如何导入 Java 密钥库中现有的 x509 证书和私钥以在 SSL 中使用? https://stackoverflow.com/questions/906402/how-to-import-an-existing-x509-certificate-and-private-key-in-java-keystore-to-u/
如何设置 LetsEncrypt SSL 证书并在 Spring Boot 应用程序中使用它? https://stackoverflow.com/questions/36991562/how-can-i-set-up-a-letsencrypt-ssl-certificate-and-use-it-in-a-spring-boot-appli
如何在java中使用openssl生成的.key和.crt文件? https://stackoverflow.com/questions/6482484/how-to-use-key-and-crt-file-in-java-that-generated-by-openssl
导入 Java KeyStore 中的私钥/公钥证书对 https://stackoverflow.com/questions/17695297/importing-the-private-key-public-certificate-pair-in-the-java-keystore
maybe 将密钥和 SSL 证书导入 java 密钥库 https://stackoverflow.com/questions/14398423/import-key-and-ssl-certificate-into-java-keystore
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)