自建CA签发证书访问Apache HTTPS时证书域名错误求助
解决Debian 11 Apache自建CA证书域名不匹配问题
环境说明
- 两台Debian 11机器:
- Apache服务器:主机名
web,用户webadmin - CA认证中心:主机名
ca,用户caadmin
- Apache服务器:主机名
- 双方已配置主机名解析,客户端已安装CA证书并能解析两台主机名
问题现象
访问https://web时,Chrome提示NET::ERR_CERT_COMMON_NAME_INVALID,Firefox提示SSL_ERROR_BAD_CERT_DOMAIN,无法实现无警告HTTPS访问。
解决步骤
1. 配置Apache服务器基础环境
在web服务器上安装Apache并启用SSL模块及默认SSL站点:
apt update && apt install apache2 a2enmod ssl a2ensite default-ssl.conf systemctl reload apache2
2. 在CA服务器创建演示CA
登录ca服务器,执行以下命令初始化自建CA:
cd /usr/lib/ssl/misc ./CA.pl -newca
执行过程中按提示填写CA相关信息(如国家、组织、CA域名等)。
3. 在Apache服务器生成证书请求并发送至CA
登录web服务器,生成证书签名请求(CSR),确保FQDN设置为web,然后将请求文件发送到CA服务器:
cd /usr/lib/ssl/misc ./CA.pl -newreq-nodes scp newreq.pem caadmin@ca:/usr/lib/ssl/misc
4. CA服务器签名证书并返回给Apache服务器
在ca服务器上对收到的证书请求进行签名,然后将签名后的证书和CA根证书发送回web服务器:
cd /usr/lib/ssl/misc ./CA.pl -sign scp newcert.pem webadmin@web:/etc/ssl/certs/certificate.crt scp cacert.pem webadmin@web:/usr/local/share/ca-certificates/cacert.crt
5. Apache服务器安装CA证书并配置密钥
在web服务器上更新系统信任的CA证书,同时配置证书密钥(确保密钥权限安全):
update-ca-certificates cp newkey.pem /etc/ssl/private/priv.key chmod 600 /etc/ssl/private/priv.key
6. 配置Apache SSL站点
编辑/etc/apache2/sites-enabled/default-ssl.conf,确保ServerName与证书通用名称(CN)完全一致,配置内容如下:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webadmin@web ServerName web DocumentRoot /var/www/ssl LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/certificate.crt SSLCertificateKeyFile /etc/ssl/private/priv.key SSLVerifyClient None </VirtualHost> </IfModule>
配置完成后重启Apache服务:
systemctl restart apache2
验证访问
此时客户端访问https://web即可实现无警告的HTTPS访问。
内容的提问来源于stack exchange,提问作者alejandrobp
相关产品推荐
相关产品推荐

