首页 > 解决方案 > 如何为没有域的主机创建 SSL 证书?

问题描述

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

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

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

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

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

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

标签: javaspring-bootsslhttpsdns

解决方案


Letsencrypt 可以免费创建 SSL 证书,但需要一个域。这对我来说是个问题,因为应用程序 B 在虚拟机上运行。每当机器重新启动时,它都会获得不同的 IP 地址。

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

通常,客户端将检查证书的主题/SAN 是否与 URL 中的域匹配。不可能获得足够通用的证书以涵盖您可以获得的所有 IP 地址。因此,如果您想使用普通客户端访问该站点,则可以使用自己的固定域名和动态 IP 地址。


推荐阅读