You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Fedora的Apache中创建CA证书并签署localhost证书时遇NET::ERR_CERT_COMMON_NAME_INVALID错误的排查与正确操作方法

在Fedora的Apache中创建CA证书并签署localhost证书时遇NET::ERR_CERT_COMMON_NAME_INVALID错误的排查与正确操作方法

嗨,这个问题我之前也踩过坑!你碰到的NET::ERR_CERT_COMMON_NAME_INVALID错误,核心原因是现在主流浏览器已经不再单纯依赖证书的CN(Common Name)字段验证域名匹配,它们要求证书必须包含SAN(Subject Alternative Name)扩展,明确列出要验证的域名(比如localhost)。你之前生成localhost证书时没添加这个关键扩展,所以浏览器才会报错。

下面给你一步步梳理正确的操作流程:

一、确认CA证书有效性(无需重新生成)

你之前生成CA的命令是没问题的,要是不放心可以运行下面的命令验证CA证书信息:

openssl x509 -in myCA.pem -text -noout

只要能看到完整的证书详情,就继续用之前的myCA.keymyCA.pem和自动生成的myCA.srl文件就行。

二、重新生成带SAN扩展的localhost证书请求

  1. 先创建一个配置文件(比如命名为localhost-san.cnf),用来指定SAN扩展规则:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C = pl
CN = localhost

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = 127.0.0.1  # 如果你需要支持IP访问可以加上,可选
  1. 用这个配置文件生成证书请求和私钥:
openssl req -new -config localhost-san.cnf -keyout localhost.key -out localhost.csr

三、用CA签署带SAN的证书请求

签署时必须指定扩展配置,确保SAN字段被写入最终证书:

openssl x509 -req -in localhost.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out localhost.crt -days 365 -sha256 -extfile localhost-san.cnf -extensions req_ext

四、验证localhost证书的SAN配置

运行下面的命令检查证书是否包含SAN字段:

openssl x509 -in localhost.crt -text -noout | grep -A 3 "Subject Alternative Name"

如果输出类似DNS:localhost, DNS:127.0.0.1的内容,就说明SAN配置成功了。

五、重新配置Apache并重启服务

把新生成的localhost.keylocalhost.crt配置到Apache的SSL虚拟主机中,示例配置如下:

<VirtualHost *:443>
    ServerName localhost
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /你的证书路径/localhost.crt
    SSLCertificateKeyFile /你的证书路径/localhost.key
</VirtualHost>

然后重启Apache服务:

sudo systemctl restart httpd

六、确保CA证书已被系统和浏览器信任

你之前导入CA证书到系统的步骤是正确的,要是没做过可以再执行一遍:

sudo cp myCA.pem /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract

另外注意:部分浏览器(比如Chrome)可能需要手动导入CA证书到浏览器信任存储,即使系统已经信任。你可以在浏览器设置里找到「管理证书」,导入myCA.pem并设置为「信任的根证书颁发机构」。

做完这些步骤后再访问https://localhost,应该就不会再出现那个错误了!

备注:内容来源于stack exchange,提问作者jcubic

火山引擎 最新活动