我已经从来自我的 Cisco C9300 的 CSR 导入了 Web 服务器证书。该证书来自证书颁发机构,并在链的末端显示正确的 CA。CLI 显示证书已正确安装,没有问题。问题是当我访问交换机的安全网站 (https://) 时,它显示连接不安全。我在浏览器中检查证书,它显示了我从 CA 获得的证书。为什么即使证书有效,它仍显示不安全?
当进入页面时,它显示NET::ERR_CERT_COMMON_NAME_INVALID
更新 1: 感谢@Zac67,我正在检查信任点信息。当我们访问网页的交换机时,我们使用https:// ipaddress。我可以创建以下内容:
subject-name C=US, ST=Pennsylvania, L=My-Town, O=My-Org, OU=My-Department, CN=SWITCHNAME.DOMAIN.NET
但是当我subject-alt-name 192.168.1.10
这样做时会出现以下错误:
CRYPTO_PKI: Label cannot be made only of digits. Also, ip addresses are not permitted
尝试将地址放入 CN,但还是不行。仍然说证书无效。
更新2:我正在使用位于这里:创建 RSA 密钥。使用该密钥,我将 CA 用作信任点。我获取指纹,将其提供给 Microsoft CA 以获取 WebServer 证书。我从 CA 获取 WebServer 证书,并按照相同的操作说明将其导入交换机。然后我转到网页,它说网页无效。证书来自我的域的 CA。我不明白它为什么认为它是无效的。
更新 3:因此,我正在查看 RICK 关于 SAN 的建议。我将说明我们不使用 OpenSSL,因为我们不被允许使用。我们必须使用我们的网络 CA。对于 CN,我已将 CN 设置为证书的 IP 地址。对于 SAN,Cisco 有一个单独的命令,说明ip-address
哪个命令会添加地址,而我有一个不同的命令subject-name-alternative
,我无法将 IP 地址添加到该命令,因为这是不允许的。所以我发现我可以执行以下操作:
CN 可以是以下各项:
- IP地址
- 主机名
- 完整限定域名 (FQDN)
SAN(主题名称替代)可以是以下内容:
- 主机名
- 完整限定域名 (FQDN)
IP 地址可添加或不添加
尝试了所有这些方法,它仍然告诉我证书在 EDGE 上无效,错误为:NET::ERR_CERT_COMMON_NAME_INVALID。如果您从 Edge 查看证书,如果我使用相同的指纹单独打开它,它会显示相同的证书。
那么使用 Edge 从 IP 地址访问时,CN 应该是什么?
更新 4此外,在执行下列操作以制作 CSR 时,我添加了 IP 地址行。但当我查看证书时,似乎没有将 IP 地址添加到 SAN。事实上该证书根本没有 SAN!看起来好像翻译中有些东西丢失了。
crypto pki trustpoint my-trustpoint
enrollment terminal pem
subject-name C=US, ST=Pennsylvania, L=My-Town, O=My-Org, OU=My-Department, CN=My-Switch.my-network.com
subject-alt-name my-switch.my-network.com
serial-number none
ip-address 192.168.1.51
revocation-check none
rsakeypair my-4096rsa-key
end
知道为什么它没有将 IP 地址包含在 SAN 中吗?
答案1
详细说明 Ricky 的评论:https:// 必须匹配证书的主体名称 (SN) 或主体备用名称 (SAN) 之一。如果使用裸 IP 地址,则必须以 SAN 形式存在。即使是最轻微的不匹配也会导致证书错误。
如果您使用自己的 CA,还要确保根 CA 证书存在于客户端的信任库中。
答案2
如果您使用的 Cisco IOS 版本不允许定义基于 IP 的主体备用名称 (SAN),那么您应该通过其他工具(如 openssl)创建 CSR 以包含 IP,然后使用您的 CA 签署 CSR。
使用 openssl,您将使用一个openssl.cnf
配置文件并附加一个部分以包含 SAN(也可以通过 CLI 完成,但会稍微复杂一些)。
要使用配置文件,该[req]
部分应该包含一个req_extensions
参数,例如:
req_extensions = req_ext
您提供的值是后面部分的“上下文”,它定义了您要使用的扩展。使用req_ext
该值,其余配置将如下所示:
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.1.10
- 要确认生成的证书签名请求 (CSR) 包含您可以使用的条目:
openssl req -noout -text -in switch.csr
检查X509v3 主体备用名称部分。里面应该是IP:
包含您在openssl.cnf
生成 CSR 时定义的任何内容的条目。如果您希望证书保护的 IP 地址未在 CSR 的 SAN 条目中列出,则表示出现了问题,任何从缺少字段的 CSR 生成的证书都会出现您提到的错误,因为它无法正确保护 IP。
如果您看到预期的 IP 条目,则将 CSR 传递给您的 CA 进行签名和创建证书。
- 要确认 CA 签名的证书包含最近的 openssl 的条目,您可以使用:
openssl x509 -noout -ext subjectAltName -in switch.pem
- 要确认 CA 签名的证书包含旧版本 openssl 的条目(缺少扩展标志
-ext
),您可以使用:
openssl x509 -noout -text -in switch.pem
使用上述任一方法,您都可以在安装之前调查签名的证书。检查主题备用名称部分值。如果看起来正确,则继续在交换机中安装新证书。
或者,您也可以通过浏览器查看已安装证书的 SAN 字段。根据浏览器软件和版本,信息的布局可能有所不同。
例如,这是 Chrome,需要在浏览器中单击 HTTPS/锁定(查看站点信息),单击连接是安全的然后点击证书有效,你的开关当然不会说有效,所以点击证书无效。
在 Firefox 中检查证书时,还需单击浏览器中的 HTTPS/Lock,连接安全(当然当其为真时),那么更多信息