在 CentOS 上给 Apache(httpd)开启 SSL,通常步骤如下(以 CentOS 7/8 为例,适用于 CentOS Stream):
sudo yum install httpd -y
(CentOS 8 可用 dnf)
sudo yum install mod_ssl openssl -y
安装后会自动生成:
/etc/httpd/conf.d/ssl.conf/etc/pki/tls/certs/localhost.crtsudo systemctl start httpd
sudo systemctl enable httpd
开放防火墙(如果启用 firewalld):
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/pki/tls/private/localhost.key \
-out /etc/pki/tls/certs/localhost.crt
按提示填写信息(Common Name 填域名或 IP)。
编辑:
sudo vi /etc/httpd/conf.d/ssl.conf
关键配置示例:
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
</VirtualHost>
保存后测试配置:
sudo apachectl configtest
重启 Apache:
sudo systemctl restart httpd
在 /etc/httpd/conf/httpd.conf 或站点配置中:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
sudo yum install certbot python3-certbot-apache -y
sudo certbot --apache
自动配置 SSL 并续期。
443 无法访问
sudo setsebool -P httpd_can_network_connect 1
证书不受信任
如果你能告诉我:
我可以给你更精确的配置示例。