java - 如何为没有域名的主机创建SSL证书?

标签 java spring-boot ssl https dns

我正在测试和调试一个系统,其中应用程序 A 在发生某些事件时向 URL 提交 POST 请求。我的程序之一(应用程序 B)必须对此事件使用react。

应用程序 A 要求 URL 使用 HTTPS。我不想使用自签名证书,因为它可能会导致问题(curl 在我本地测试时提示自签名证书)。

Letscrypt可以免费创建SSL证书,但需要域名。这对我来说是个问题,因为应用程序 B 运行在虚拟机上。每当计算机重新启动时,它都会获得不同的 IP 地址。目前,没有与该机器关联的域(即您只能通过像 http://aaa.bbb.ccc.ddd/ 这样的 URL 访问它)。

有没有一种方法可以为没有域的应用程序使用非自签名证书(即在类似 http://aaa.bbb.ccc.ddd/ 的 URL 上运行的应用程序)?如果没有,让 Spring boot 应用程序(应用程序 B)支持非自签名 SSL 证书的最简单方法是什么?

有一个answer建议创建自己的证书颁发机构并将其安装在访问该 URL 的所有计算机上。这对我来说不是一个选择,因为我无法控制应用程序 A。

更新 1:应用程序 B 在 AWS 中的 EC2 实例上运行。

最佳答案

Letsencrypt can create a SSL certificate for free, but requires a domain. This is a problem for me because application B runs on a virtual machine. Whenever the machine is restarted, it gets a different IP address.

IP是否改变并不重要,因为检查的只是域名。因此,如果机器获得新的 IP 地址,您需要更新 DNS 以指向这个新域名。

一般来说,客户端会检查证书的主题/SAN 是否与 URL 中的域匹配。不可能获得足够通用的证书来涵盖您可以获得的所有 IP 地址。因此,如果您想使用普通客户端访问该网站,拥有自己的固定域名及其背后的动态IP地址是最佳选择。

关于java - 如何为没有域名的主机创建SSL证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60260098/

相关文章:

java - Tomcat 7.0.25 SessionIdGenerator异常

java - 如何在spring boot属性文件中转义 "@"

java - 使用 crawler4j 抓取 https 页面

ssl - 我可以仅使用 makecert.exe 为 Windows Azure 创建自签名 SSL 证书吗?

java - 为什么我的面板没有出现在 JFrame 中

java - 将 DAO 类与应用程序实际实例化的 DAO 类分开的目的是什么

java - 将经过训练的超正方文件合并为一个

java - 如何在运行时设置log4j的DB Credentials

java - SpringIntegration Cron 触发器

ssl - gevent SSL with godaddy error : ssl. SSLError : [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl. c:1051)