温馨提示×

centos上apache怎样开启ssl

小樊
39
2026-09-30 03:01:11
栏目: 云计算

在 CentOS 上给 Apache(httpd)开启 SSL,通常步骤如下(以 CentOS 7/8 为例,适用于 CentOS Stream):


一、安装 Apache 和 SSL 模块

1. 安装 Apache

sudo yum install httpd -y

(CentOS 8 可用 dnf)

2. 安装 mod_ssl

sudo yum install mod_ssl openssl -y

安装后会自动生成:

  • /etc/httpd/conf.d/ssl.conf
  • 默认 SSL 证书:/etc/pki/tls/certs/localhost.crt

二、启动 Apache 并开放端口

sudo systemctl start httpd
sudo systemctl enable httpd

开放防火墙(如果启用 firewalld):

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

三、使用自签名证书(测试用)

1. 生成私钥和证书

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)。


四、配置 Apache SSL(ssl.conf)

编辑:

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

五、HTTP 强制跳转 HTTPS(可选)

在 /etc/httpd/conf/httpd.conf 或站点配置中:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>

六、使用正式证书(推荐)

  • Let’s Encrypt(免费)
sudo yum install certbot python3-certbot-apache -y
sudo certbot --apache

自动配置 SSL 并续期。


七、常见问题

  1. 443 无法访问

    • 检查防火墙
    • 检查 SELinux:
      sudo setsebool -P httpd_can_network_connect 1
      
  2. 证书不受信任

    • 自签名证书浏览器会报警,正式环境用 CA 签发证书

如果你能告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Apache 是否已安装
  • 是否用域名或 IP

我可以给你更精确的配置示例。

0 踩