温馨提示×

centos apache如何配ssl

小樊
45
2026-09-21 06:02:40
栏目: 云计算

下面以 CentOS + Apache(httpd) 为例,说明如何配置 SSL(HTTPS)。适用于 CentOS 7 / 8 / Stream,步骤基本一致。


一、前提条件

  • 已安装 Apache(httpd)
  • 拥有域名(可选,但推荐)
  • 已获得 SSL 证书(自签或 CA 签发)

证书常见形式:

  • domain.crt(证书)
  • domain.key(私钥)
  • chain.crt 或 ca_bundle.crt(中间证书,可选)

二、安装 SSL 模块

# CentOS 7
yum install mod_ssl openssl -y

# CentOS 8 / Stream
dnf install mod_ssl openssl -y

安装后:

  • 自动生成 /etc/httpd/conf.d/ssl.conf

三、上传或生成 SSL 证书

1️⃣ 使用 CA 签发证书(推荐)

将证书放到:

/etc/pki/tls/certs/example.com.crt
/etc/pki/tls/private/example.com.key

⚠️ 私钥权限:

chmod 600 /etc/pki/tls/private/example.com.key

2️⃣ 自签证书(测试用)

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

四、配置 Apache SSL

编辑 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>

五、防火墙放行 HTTPS

# firewalld
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

# 或 iptables
iptables -I INPUT -p tcp --dport 443 -j ACCEPT

六、启动 / 重载 Apache

systemctl restart httpd
# 或
systemctl reload httpd

查看状态:

systemctl status httpd

七、HTTP 跳转 HTTPS(可选)

编辑站点配置:

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

八、验证 SSL

openssl s_client -connect www.example.com:443

或浏览器访问:

https://www.example.com

九、常见问题

✅ 443 无法访问 → 防火墙 / SELinux

setsebool -P httpd_can_network_connect 1

✅ 证书不受信任 → 缺少中间证书
✅ 私钥不匹配 → 证书和 key 不对应


如果你需要:

  • Let’s Encrypt 免费证书
  • 多域名 / 泛域名
  • Apache + Tomcat / 反向代理

可以告诉我你的具体环境,我可以给你更精确的配置。

0 踩