在 CentOS 7 / RHEL 7 这类企业级 Linux 发行版上搭建 HTTPS 服务,核心步骤非常清晰:安装必要软件包、配置防火墙放行端口、以及生成并部署 SSL/TLS 证书。下面以域名 server0.vqiu.cn 为例,完整演示整个流程。每一步都附带了可执行的命令和关键注释,方便直接复制运行。
安装 Apache 并调整防火墙
首先安装 httpd 和 mod_ssl 模块,这是启用 SSL 加密通信的基础组件。随后需要将 80、443 和 8080 三个端口添加到防火墙规则中,并执行 reload 使规则即时生效。最后启动 httpd 服务并设置为开机自启。
# 安装Apache及SSL模块 [root@server0 ~]# yum -y install httpd mod_ssl # 配置防火墙规则,开放指定端口 [root@server0 ~]# firewall-cmd --permanent --add-server=80/tcp [root@server0 ~]# firewall-cmd --permanent --add-server=443/tcp [root@server0 ~]# firewall-cmd --permanent --add-server=8080/tcp firewall-cmd --reload [root@server0 ~]# systemctl restart httpd systemctl enable httpd
配置 SELinux 安全上下文与证书目录
当 SELinux 处于 enforcing 强制模式时,必须将 80、443、8080 端口标记为 http_port_t 类型,否则 Apache 将无法正常监听这些端口。通过 semanage port 命令即可完成设置(注意命令正确拼写为 semanage,而非原文中可能存在的笔误)。接着创建专用的证书存放目录并切换到该目录下。
# 配置SELinux安全上下文,允许Apache使用指定端口
[root@server0 ~]# semanage port -a -t http_port_t {80,443,8080}
[root@server0 ssl]# mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
使用 OpenSSL 生成自签名证书
自签名证书适用于内部测试环境或开发阶段。首先生成带密码保护的私钥,然后去除密码(否则每次重启 httpd 服务都需要手动输入密码)。接着创建证书签名请求(CSR),最后利用 CSR 和私钥签发一张有效期为 3650 天(约10年)的自签名证书。证书生成后,CSR 文件可以根据需要删除,保留也不会影响正常运行。
# 生成带密码的私钥 [root@server0 ssl]# openssl genrsa -des3 -out vqiu.cn.key 2048 # 去除私钥密码保护 [root@server0 ssl]# openssl rsa -in vqiu.cn.key -out vqiu.cn.key # 生成证书签名请求(CSR)和密钥 [root@server0 ssl]# openssl req -new -nodes -key vqiu.cn.key -out vqiu.cn.csr # 利用CSR和私钥生成自签名证书(以vqiu.cn为例) [root@server0 ssl]# openssl x509 -req -days 3650 -in vqiu.cn.csr -signkey vqiu.cn.key -out vqiu.cn.crt # 生成证书后,CSR文件可选择删除(可选步骤) [root@server0 ssl]# rm vqiu.cn.csr -f
配置虚拟主机与 SSL 参数
编辑 /etc/httpd/conf.d/vqiu.cn.conf 文件,写入以下配置内容。关键点包括:监听 443 端口、启用 SSL 引擎、指定证书与密钥文件路径、禁用不安全的 SSLv2 协议、使用高强度加密套件。最后创建一个简单的测试页面,重启 httpd 服务后即可通过 https://server0.vqiu.cn 进行访问。
[root@server0 ssl]# cat /etc/httpd/conf.d/vqiu.cn.confListen 443 https ServerName server0.vqiu.cn DocumentRoot /var/www/html SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCertificateFile /etc/httpd/ssl/vqiu.cn.crt SSLCertificateKeyFile /etc/httpd/ssl/vqiu.cn.key # 创建测试页面 [root@server0 ssl]# echo "test">/var/www/html/index.html # 重启httpd服务以应用配置 [root@server0 ssl]# systemctl restart httpd
按上述步骤操作后,浏览器访问应当能显示绿色的安全锁标识(虽然自签名证书会提示“不安全”,但实际通信已经加密)。如果遇到端口冲突或 SELinux 拒绝访问的问题,首先检查 semanage port 命令是否执行正确,或临时执行 setenforce 0 进行测试排查。生产环境强烈建议使用由受信任的证书颁发机构(CA)签发的正式证书,流程与本教程完全一致,只需将 vqiu.cn.crt 和 vqiu.cn.key 替换为 CA 签发的文件即可。
