我找到了这篇文章,这是我用来生成 CA 证书的内容:
openssl genrsa -des3 -out myCA.key 2048
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
我将其命名为“MyCert”
我用它来签署为本地主机生成的证书(它是 ChatGPT 的输出)
$ openssl req -newkey rsa:2048 -nodes -keyout localhost.key -out localhost.csr
$ openssl x509 -req -in localhost.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out localhost.crt -days 365 -sha256
我已将 CA 证书添加到系统中(我使用 Fedora):
sudo cp myCA.pem /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract
我重新启动了服务器,当访问时https://localhost
得到这个错误:
NET::ERR_CERT_COMMON_NAME_INVALID
Subject: localhost
Issuer: MyCert
我做错了什么?我使用 CA 证书的默认字段:
CN = MyCert
O = Default Company Ltd
L = Default City
C = pl
本地主机证书具有这些字段:
CN = localhost
C = pl
如何在 Fedora 上正确创建 CA 证书并为 Apache 签署证书?
这对我有用:
CN=localhost
我们还设置了subjectAlternativeName
forlocalhost
,因为:(请注意,用于识别主机的 commonName 已于24 年前被弃用。)
-copy_extensions copy
,以便我们将subjectAlternativeName
请求中的 复制到证书中。我正在通过使用caddy设置一个简单的启用 TLS 的服务器来测试证书。我从这个开始
Caddyfile
:进而:
现在我们可以看到
curl
信任该证书:如果我从信任存储中删除 CA 证书:
然后我们会看到
curl
失败: