是否可以有SSL证书的IP地址,而不是域名?

我想我的网站使用url像http://192.0.2.2/...https://192.0.2.2/...静态内容,以避免不必要的cookie请求和避免额外的DNS请求。

有没有办法获得SSL证书?

608168 次浏览

根据< >强这个答案< / >强,这是可能的,但很少使用。

至于如何获得它:我倾向于简单地尝试从您选择的提供商订购一个,并在订购过程中输入IP地址而不是域名。

然而,在一个IP地址上运行一个站点以避免DNS查找对我来说听起来像是不必要的微优化。你最多可以节省几毫秒,也就是每访问,因为DNS结果缓存在多个级别上。

从优化的角度来看,我认为你的想法没有意义。

我想答案是肯定的。例如,检查这个链接

向公网IP地址颁发SSL证书

SSL证书通常颁发给完全限定域名(FQDN),例如“https://www.domain.com”。但是,有些组织需要向公共IP地址颁发SSL证书。此选项允许您在证书签名请求(CSR)中指定一个公共IP地址作为通用名称。然后,颁发的证书可用于直接保护与公共IP地址(例如,https://123.456.78.99.)的连接。

简单的答案是肯定的,只要它是一个公共IP地址。

不允许向保留IP地址颁发证书,从2016年10月1日起,之前颁发给保留IP地址的所有证书都将被吊销。

根据CA浏览器论坛,除非IP地址同时在commonNamesubjectAltName字段中,否则IP地址证书可能存在兼容性问题。这是由于遗留的SSL实现没有与RFC 5280一致,特别是Windows 10之前的Windows操作系统。


来源:

  1. CA浏览器论坛
  2. CA浏览器论坛
  3. (即将成为)非so Common Name unmitigatedrisk.com
  4. RFC 5280 IETF

注:该答案的早期版本指出,所有IP地址证书将于2016年10月1日被吊销。感谢Navin指出错误。

是的。Cloudflare将其用于其DNS指令主页:https://1.1.1.1

C/A浏览器论坛设置了证书中哪些是有效的,哪些是无效的,以及CA应该拒绝哪些。

根据他们的基线要求 为 签发和管理 公共受信任的证书文档,自2015年起,ca必须不再颁发证书,其中公共名称或公共备用名称字段包含保留IP或内部名称,其中保留IP地址是IANA列出的保留IP(包括所有NAT IP),内部名称是任何不能在公共DNS上解析的名称

可以使用公共IP地址(并且基线需求文档指定了CA必须执行哪些类型的检查以确保申请人拥有IP)。

这完全取决于颁发证书的证书颁发机构。

至于让我们加密CA,他们不会在公共IP地址上颁发TLS证书。 https://community.letsencrypt.org/t/certificate-for-public-ip-without-domain-name/6082 < / p >

要了解您的证书颁发机构,可以执行以下命令并查找下面标记的条目。

curl -v -u <username>:<password> "https://IPaddress/.."

enter image description here

答案是肯定的。简而言之,它是一个主题替代名称(SAN)证书,其中包含您通常会在其中看到DNS条目的ip。证书类型不限于公共ip -该限制仅由签名机构施加,而不是技术。我只是想澄清这一点。我怀疑你真的只是想在你的内部网站和设备上摆脱讨厌的不安全提示,而不需要为他们提供DNS名称,然后每一两年支付CA颁发证书的费用和麻烦。你不应该试图说服世界,你的IP地址是一个有信誉的网站,人们应该放心提供他们的付款信息。既然我们已经了解了为什么没有信誉良好的组织想要发布这种类型的证书,那么就让我们自己使用自签名的SAN证书来解决这个问题。在内部,我有一个部署到所有主机的受信任证书,然后我用它签署这种类型的证书,所有设备都成为受信任的。在这里这样做超出了问题的范围,但我认为这与讨论有关,因为问题和解决方案是相辅相成的。为了简单起见,下面介绍如何使用IP地址生成单独的自签名SAN证书。扩展IP列表以包括您的整个子网,并对所有内容使用一个证书。

#!/bin/bash
#using: OpenSSL 1.1.1c FIPS  28 May 2019 / CentOS Linux release 8.2.2004


C=US ; ST=Confusion ; L=Anywhere ; O=Private\ Subnet ; EMAIL=admin@company.com
BITS=2048
CN=RFC1918
DOM=company.com
SUBJ="/C=$C/ST=$ST/L=$L/O=$O/CN=$CN.$DOM"


openssl genrsa -out ip.key $BITS


SAN='\n[SAN]\nsubjectAltName=IP:192.168.1.0,IP:192.168.1.1,IP:192.168.1.2,IP:192.168.1.3,IP:192.168.1.4,IP:192.168.1.5,IP:192.168.1.6,IP:192.168.1.7,IP:192.168.1.8,IP:192.168.1.9,IP:192.168.1.10'


cp /etc/pki/tls/openssl.cnf /tmp/openssl.cnf
echo -e "$SAN" >> /tmp/openssl.cnf


openssl req -subj "$SUBJ" -new -x509 -days 10950 \
-key ip.key -out ip.crt -batch \
-set_serial 168933982 \
-config /tmp/openssl.cnf \
-extensions SAN


openssl x509 -in ip.crt -noout -text