温馨提示×

Apache配置SSL证书有哪些步骤

小樊
39
2025-12-28 12:52:06
栏目: 云计算

Apache 配置 SSL 证书步骤

一 准备与前置检查

  • 准备证书文件:从证书颁发机构下载适配 Apache 的包,通常包含 <域名>_public.crt(服务器证书)、<域名>_chain.crt(证书链)和 <域名>.key(私钥)。若使用本地生成 CSR 申请,私钥仅在本地保存,下载包不含私钥;私钥丢失将无法使用,需要重新签发。将文件上传到服务器安全目录,如 /etc/ssl/cert
  • 域名与解析:确保证书覆盖所有需保护的域名;域名已通过 A 记录解析到服务器公网 IP;若服务器在中国内地,需完成 ICP 备案
  • 系统与权限:使用 root 或具备 sudo 权限的账号;确认 Apache 已安装并可启动。

二 开放 443 端口与安全组

  • 检测端口连通性(示例将 <当前服务器的公网 IP> 替换为实际 IP):
    • RHEL/CentOS:
      • 安装 netcat:command -v nc >/dev/null 2>&1 || sudo yum install -y nc
      • 检测:sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <当前服务器的公网 IP> 443
    • Debian/Ubuntu:
      • 安装 netcat:command -v nc >/dev/null 2>&1 || sudo apt-get install -y netcat
      • 检测:sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <当前服务器的公网 IP> 443
  • 若未开放,放行 443/TCP
    • 云平台安全组:添加规则,协议 TCP、端口 443、源 0.0.0.0/0(或按需收紧)。
    • 系统防火墙:
      • firewalld:sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
      • ufw:sudo ufw allow 443/tcp
      • nftables:sudo nft add rule inet filter input tcp dport 443 counter accept(按需持久化)
      • iptables:sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT(按需持久化)

三 安装与配置 Apache

  • 启用 SSL 模块:
    • RHEL/CentOS:sudo yum install -y mod_sslsudo dnf install -y mod_ssl
    • Debian/Ubuntu:sudo a2enmod ssl
    • 验证:httpd -M | grep ssl_moduleapachectl -M | grep ssl_module 应看到 ssl_module (shared)
  • 准备证书文件:
    • Apache ≥ 2.4.8:将证书与链合并为一个完整链文件:cat domain_name_public.crt domain_name_chain.crt > domain_name_fullchain.pem,部署时仅使用 fullchain.pem.key
    • Apache ≤ 2.4.7:分别配置 SSLCertificateFile(服务器证书)、SSLCertificateChainFile(证书链)、SSLCertificateKeyFile(私钥)。
  • 编辑 SSL 虚拟主机(常见路径:/etc/httpd/conf.d/ssl.conf/etc/apache2/sites-available/your-site-ssl.conf):
    • 示例(使用 fullchain):
      <VirtualHost *:443>
          ServerName example.com
          SSLEngine on
          SSLCertificateFile /etc/ssl/cert/domain_name_fullchain.pem
          SSLCertificateKeyFile /etc/ssl/cert/domain_name.key
          # 其他推荐参数
          SSLProtocol all -SSLv2 -SSLv3
          SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
          SSLHonorCipherOrder on
      </VirtualHost>
      
  • 检查语法并生效:
    • 语法检查:sudo httpd -tsudo apache2ctl -t(出现 Syntax OK 再继续)
    • 重载或重启:
      • RHEL/CentOS:sudo systemctl reload httpdsudo systemctl restart httpd
      • Debian/Ubuntu:sudo systemctl reload apache2sudo systemctl restart apache2

四 验证与常见问题

  • 访问验证:打开浏览器访问 https://你的域名,地址栏出现锁形图标表示成功;也可使用在线工具检查证书链与域名匹配。
  • HTTP 自动跳转 HTTPS(可选,在 *<VirtualHost :80> 中):
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
    
  • 常见问题排查:
    • 无法访问:确认云安全组与系统防火墙已放行 443/TCP,并再次用 nc 测试连通性。
    • 证书不匹配:证书必须覆盖实际访问域名;注意 通配符仅匹配一级子域,如 *.example.com 不覆盖 example.coma.b.example.com
    • 私钥丢失:无法恢复,需重新生成 CSR 并签发新证书。
    • 配置语法错误:执行 httpd -t/apache2ctl -t 定位错误行并修正。

0