spring-boot - 如何从 openssl 生成的 key 生成 X.509 证书

标签 spring-boot ssl nginx openssl keytool

我有一个在 ec2 实例上运行的 Web 服务器,它在内部调用使用 Spring Boot 构建的 REST 服务器。现在,我试图让这个 REST 服务器在 SSL 下运行。这是我到目前为止所做的:

1) 使用此命令创建了一个 CSR 和一个 key 文件

openssl req -newkey rsa:2048 -nodes -keyout mydomain.key -out mydomain.csr

2) 复制“csr”以从 GoDaddy 获取 SSL 证书。

3) 在我的 ec2-instance 上成功安装了 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 获得了它。如果(且仅当)通过与(外部)nginx 相同的名称访问 SpringBoot 服务器——我不清楚——你需要转换一对私钥和证书链 从 PEM 格式到 Java 使用的格式。参见:
How to import an existing x509 certificate and private key in Java keystore to use in SSL?
How can I set up a letsencrypt SSL certificate and use it in a Spring Boot application?
How to use .key and .crt file in java that generated by openssl?
Importing the private-key/public-certificate pair in the Java KeyStore
也许Import key and SSL Certificate into java keystore

关于spring-boot - 如何从 openssl 生成的 key 生成 X.509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032763/

相关文章:

java - Spring/JPA 多线程死锁

java - 具有多个 In 条件的 Spring CrudRepository 查询

java - 如何在本地 Tomcat 中启用 TLS 1.2?

c# - 在实时环境的 cookie 上启用 SSL,在开发环境中启用非 SSL

django - 第一次设置django

ssl - 如何为nginx配置pem文件?

java hibernate在xml文件中存储sql查询

java - Spring数据存储库中的正确继承

java - 通过 HTTPS 从应用程序连接到后端服务器会导致延迟/超时

nginx - 通过 Nginx 代理为 Gitlab 服务器进行 Git 克隆不起作用