温馨提示×

怎样给centos apache配ssl

小樊
33
2026-10-23 12:30:18
栏目: 云计算

下面以 CentOS + Apache(httpd) 为例,说明如何配置 SSL(HTTPS),包含「自签名证书」和「Let’s Encrypt 免费证书」两种方式,你可以按需选择。


一、准备工作

1. 安装 Apache(如果还没装)

sudo yum install httpd -y
sudo systemctl enable httpd
sudo systemctl start httpd

2. 安装 SSL 模块

CentOS 7 一般已自带 mod_ssl:

sudo yum install mod_ssl openssl -y

安装后会出现:

  • /etc/httpd/conf.d/ssl.conf
  • /etc/httpd/mods-available/ssl.conf(部分版本)

二、方式一:自签名证书(测试用)

1. 生成私钥和证书

sudo mkdir -p /etc/httpd/ssl
cd /etc/httpd/ssl

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout server.key \
  -out server.crt

填写信息示例:

Country Name: CN
State: Beijing
Organization: MyCompany
Common Name: www.example.com  # 必须是域名

2. 配置 Apache SSL

编辑:

sudo vi /etc/httpd/conf.d/ssl.conf

修改关键项:

SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key

确保:

<VirtualHost _default_:443>
    DocumentRoot "/var/www/html"
    ServerName www.example.com:443
</VirtualHost>

3. 重启 Apache

sudo systemctl restart httpd

访问:

https://你的IP或域名

浏览器会提示“不安全”(自签名正常现象)


三、方式二:Let’s Encrypt 免费证书(生产推荐)

1. 安装 Certbot

sudo yum install epel-release -y
sudo yum install certbot python2-certbot-apache -y

2. 申请证书

sudo certbot --apache -d www.example.com

域名必须已解析到服务器 IP

按提示选择:

  • 是否强制 HTTPS(推荐选 2)

3. 自动续期测试

sudo certbot renew --dry-run

四、强制 HTTP 跳转到 HTTPS(可选)

在网站配置中加入:

<VirtualHost *:80>
    ServerName www.example.com
    RewriteEngine On
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
</VirtualHost>

五、防火墙 & 安全组

确保开放 443 端口:

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

云服务器还要在 安全组 放行 443。


六、常见问题

✅ Apache 启动失败

sudo apachectl configtest

✅ 证书路径错误

  • crt / key 路径必须绝对路径
  • 权限建议 600

✅ CentOS 8 / Stream

  • 用 dnf 代替 yum

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Apache 是否已运行
  • 域名 or 仅 IP

我可以给你一份可直接用的配置文件。

0 踩