使用 OpenSSL 的自签名证书发出警告

问题描述 投票:0回答:1

我使用此命令生成了一个自签名证书,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*

如何解决警告?

openssl localhost certificate self-signed
1个回答
0
投票

问题

我认为您在服务器上使用的是证书颁发机构证书而不是普通证书。

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 证书备忘单

让我知道我的回答是否有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.