如何移除或撤销OpenSSL生成的自签名SSL证书?
自签名证书未配置却生效的原因
Apache默认安装时如果开启了SSL模块,会自带默认的SSL配置文件,不需要你手动修改site-enabled下的默认站点配置也会加载:
- Debian/Ubuntu环境下默认SSL配置为
/etc/apache2/sites-available/default-ssl.conf,安装完成后会自动软链接到site-enabled目录下被加载 - CentOS/RHEL环境下默认SSL配置为
/etc/httpd/conf.d/ssl.conf,会被主配置自动引入
你生成的证书文件名刚好匹配这些默认配置里指定的证书、密钥路径,所以重启Apache后直接生效。
撤销命令无效的原因
自签名证书本身没有对应的公共CA信任链和CRL(证书吊销列表)分发机制,你执行的openssl ca -revoke命令只能在你本地的CA证书库标记吊销状态,客户端和浏览器不会获取这个标记,所以撤销操作对于自签名证书完全没有实际意义,直接删除证书和对应配置即可。
完整移除自签名证书的操作步骤
- 首先确认当前Apache加载的SSL配置路径:
- Debian/Ubuntu执行:
apache2ctl -S - CentOS/RHEL执行:
httpd -S
从输出的443端口虚拟主机信息中,找到对应的配置文件路径,以及配置项SSLCertificateFile、SSLCertificateKeyFile对应的证书、密钥文件地址
- Debian/Ubuntu执行:
- 关闭SSL虚拟主机加载:
- Debian/Ubuntu执行:
a2dissite default-ssl.conf && systemctl restart apache2 - CentOS/RHEL执行:
rm -f /etc/httpd/conf.d/ssl.conf && systemctl restart httpd
如果你自己手动添加过其他SSL虚拟主机配置,直接删除对应配置文件或者软链接后重启服务即可
- Debian/Ubuntu执行:
- 删除本地所有生成的自签名证书相关文件,避免后续被误加载:
rm -f main.key main.csr main.crt /certs/server-1.crt # 如果你自己创建了/root/tls/目录作为临时CA目录,也可以一起删除 rm -rf /root/tls/
- 验证移除结果:重启Apache后访问原HTTPS地址,确认无法建立HTTPS连接即为移除成功。如果浏览器仍弹出证书警告,清理浏览器SSL缓存后再测试即可。
内容的提问来源于stack exchange,提问作者Venigalla Shanmukha
相关产品推荐
相关产品推荐

