我使用此命令生成了一个自签名证书,CN 等于“localhost”: openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out cert.pem -keyout private.pem
(来自 https://gist.github.com/SeanPesce/af5f6b7665305b4c45941634ff725b7a)
当我使用证书和私钥执行服务器并转到本地主机时,我收到来自 Firefox 的警告,告诉我该证书是自签名的,这是预期的。但是将证书导入为 CA 后,我收到另一个警告:
*错误代码:MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY
https://localhost/
服务器使用带有基本约束扩展的证书,将其标识为证书颁发机构。对于正确颁发的证书,情况不应如此。
HTTP 严格传输安全: false HTTP 公钥固定: false*
如何解决警告?
我认为您在服务器上使用的是证书颁发机构证书而不是普通证书。
CA_CERT_USED_AS_END_ENTITY
好像是这么说的。您应该使用 CA 生成的子证书。
我遇到了一个非常类似的问题,并创建了一个工具来自动化该过程,并使创建有效的自签名证书变得更容易:
过程非常简单:
generate_certificate.sh
不要忘记在映射到您的网站或服务的证书中使用正确的名称,您应该使用包含带有
DNS:localhost
或 IP:"127.0.0.1
的配置的文件(您可能必须包含端口号)。
在服务器上,您需要使用
hostname.priv.key
作为密钥,使用链hostname.chain.pem
作为公共证书。
您不应使用根证书 (CA),而应使用从 CA 生成的证书。
您只需要信任证书颁发机构(CA)。 项目页面上还有关于如何获得不同设备信任的完整说明。在 Firefox 上,我认为您可以(并且必须?)在安全设置下直接在 Firefox 中导入
CA.pem
,但在主机上导入它可能也可以工作,您需要测试。
在较低的层面上,Christian Lempa 制作了一个非常有用的 SSL 证书备忘单。
让我知道我的回答是否有帮助!