是否可以为IP:端口而不是域名获取SSL证书?

10

我知道我们可以保护诸如 "https://www.abcdef.com" 这样的域名,并使URL显示为绿色,表示它是安全的。

但是像 "https://10.111.121.240:3000" 这样的URL是否可以获取有效的SSL证书呢?如果可以,如何操作?

目前,我正在使用https://10.111.121.240:3000,但URL中的https被划去并显示为不安全。因此,我无法在iOS / Android模拟器中获取数据。


2
对于私有IP地址,您只能使用自签名证书或本地私有CA,没有公共CA会签署此类证书。此外,您将遇到更多问题而不是解决方案(即使可以在技术上工作,HTTPS也不应该像这样工作,现在使用SNI进行大规模虚拟主机托管),只需在/etc/hosts中输入IP地址和名称,然后获取该名称的证书即可。 - Patrick Mevzek
4个回答

1

普通的SSL证书仅适用于完全限定域名(FQDN),但如果您想获取公共IP地址的SSL证书,则可以根据此resource进行操作。


1
作为一般规则,不行
证书颁发机构不会为 IP 地址颁发证书。截至2018年10月,所有针对IP地址颁发的证书均已撤销。
当然,正如@Dana所提到的,您可能会获得一个证书,但它不会便宜。

我不相信这个。虽然8.8.8.8(谷歌)可能是一个特例,但1.1.1.1(Cloudflare)在2019-07有此有效记录的证书,并且从未被吊销(尽管已因其他原因被替换,并将于2021-02到期)。CABforum确实要求在2016年吊销所有保留(非公共)地址的证书(而不是2018年)。 - dave_thompson_085

1

虽然这是一个非常老套的问题,但以下是我的两分钱。

由于您提到了IP和端口,因此无法为此组合发放证书。比如,IP:port。 但如果您仅请求10.111.121.240,我的意思是ipv4公共地址(不包括端口),那么绝对是可能的。

现在,有一些像ZEROSSL这样的服务提供免费的SSL证书,有效期为3个月。要进行SSL发行,您需要提供域名或者只是公共IP。当然,并非所有CA都允许这样做。例如:Let's encrypt只允许提供FQDN以提供SSL证书。

为了验证CA的证书安装,有两种验证方式。 1. 提供CNAME等 2. 通过进行Http文件上传验证。

就是这样。现在,如果您感兴趣,这里有一些额外的信息。

我尝试在自己的服务器上托管网站。为此,我首先需要一个公共IPv4地址。由于我的订阅是用于蜂窝服务,所以无法从我的ISP获取公共IPv4地址。因此,默认情况下不允许端口转发。因此,克服这个问题的最佳方法是使用VPN,因为VPN加密打破了ISP设置的所有限制。现在,我正在寻找一个允许端口转发的免费VPN服务。portmap.io是这样的一项服务之一。唯一的问题是他们为您的帐户发放一个特定的端口,并要求您将该端口映射到本地机器端口。最终,我成功地使用Termux APP(Python模块)+ portmap VPN在我的移动设备上托管了自己的网站。

第二阶段:为此portmap VPN URL获取SSL证书。该URL看起来类似于您提到的内容。193.22.202.29:1176什么的。正如我已经说过的,这个URL的SSL不可能实现。如果我删除端口,那么这就是portmap公司的公共IP。CA的文件上传验证将无法工作。

第三阶段:放弃上述所有步骤,直接使用AWS EC2实例免费层。在其中使用apache2服务器,并使用实例的公共IP通过ZEROSSL验证我的SSL证书。


0

这是可能的,而且它会工作。

唯一的妥协是您必须始终通过IP地址访问系统。如果您使用其FQDN访问系统,则浏览器将显示资源不安全,因为证书包含CN = <IP>,而不是CN = <FQDN>。

此答案 包含更多信息。


1
浏览器不喜欢CN中的内容,您需要使用适当的SAN扩展和IPAddress大小写。 - Patrick Mevzek
使用SAN扩展是正确的方法,你是对的。 - Filipe dos Santos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接