下面以 CentOS + Apache(httpd) 为例,说明如何配置 SSL(HTTPS)。适用于 CentOS 7 / 8 / Stream,步骤基本一致。
httpd)证书常见形式:
domain.crt(证书)domain.key(私钥)chain.crt 或 ca_bundle.crt(中间证书,可选)# CentOS 7
yum install mod_ssl openssl -y
# CentOS 8 / Stream
dnf install mod_ssl openssl -y
安装后:
/etc/httpd/conf.d/ssl.conf将证书放到:
/etc/pki/tls/certs/example.com.crt
/etc/pki/tls/private/example.com.key
⚠️ 私钥权限:
chmod 600 /etc/pki/tls/private/example.com.key
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/pki/tls/private/example.com.key \
-out /etc/pki/tls/certs/example.com.crt
编辑 SSL 配置文件:
vi /etc/httpd/conf.d/ssl.conf
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/example.com.key
# 如果有中间证书
SSLCertificateChainFile /etc/pki/tls/certs/chain.crt
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# firewalld
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 或 iptables
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
systemctl restart httpd
# 或
systemctl reload httpd
查看状态:
systemctl status httpd
编辑站点配置:
vi /etc/httpd/conf/httpd.conf
或新建:
vi /etc/httpd/conf.d/redirect.conf
<VirtualHost *:80>
ServerName www.example.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>
确保启用 rewrite:
httpd -M | grep rewrite
openssl s_client -connect www.example.com:443
或浏览器访问:
https://www.example.com
✅ 443 无法访问 → 防火墙 / SELinux
setsebool -P httpd_can_network_connect 1
✅ 证书不受信任 → 缺少中间证书
✅ 私钥不匹配 → 证书和 key 不对应
如果你需要:
可以告诉我你的具体环境,我可以给你更精确的配置。