以下是在CentOS上使用Apache2解决SSL证书问题的步骤,涵盖证书获取、配置及验证:
Let’s Encrypt免费证书(推荐)
sudo yum install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
按提示完成域名验证,Certbot会自动修改Apache配置文件。自签名证书(测试环境)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/httpd/private/server.key -out /etc/httpd/certs/server.crt
(替换为实际路径和域名)编辑SSL配置文件
通常路径为/etc/httpd/conf.d/ssl.conf或/etc/apache2/sites-available/default-ssl.conf,添加以下内容:
<VirtualHost *:443>
ServerName yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/httpd/certs/server.crt # 证书路径
SSLCertificateKeyFile /etc/httpd/private/server.key # 私钥路径
SSLCertificateChainFile /etc/httpd/certs/ca-bundle.crt # 中间证书(如有)
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>
(若使用Let’s Encrypt,Certbot会自动填充证书路径)
启用HTTP到HTTPS重定向(可选)
编辑/etc/httpd/conf/httpd.conf或虚拟主机配置,添加:
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
重启Apache
sudo systemctl restart httpd
验证配置
https://yourdomain.com,查看锁图标是否显示。sudo apachectl configtest
sudo certbot renew --dry-run # 测试续订
sudo certbot renew # 执行续订
(证书到期前30天自动续订,无需手动操作)sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
/var/log/httpd/error_log,定位语法或路径问题。参考来源: