温馨提示×

centos lamp如何安装SSL证书

小樊
39
2025-11-18 01:46:42
栏目: 云计算

CentOS LAMP 环境安装 SSL 证书

一 准备与前置检查

  • 确保已安装 Apache(httpd)MariaDB/MySQLPHP,并确认站点可通过 HTTP(端口 80) 正常访问。
  • 开放防火墙端口:放行 80/tcp443/tcp(firewalld 示例:firewall-cmd --permanent --add-service=http --add-service=https && firewall-cmd --reload)。
  • 域名解析已指向服务器公网 IP,且验证文件或握手可达(如 /.well-known/acme-challenge/ 可被访问)。

二 方式一 使用 Certbot 自动获取并部署(推荐)

  • 安装 Certbot 与 Apache 插件(CentOS 7/8 常见仓库):
    • sudo yum install -y certbot python3-certbot-apache
  • 获取并自动配置 HTTPS(将域名替换为你的实际域名):
    • sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
    • 过程中可选择是否将 HTTP 自动 301 重定向到 HTTPS
  • 验证与续期:
    • 访问 https://yourdomain.com 检查锁标识与证书信息。
    • 查看证书到期:sudo certbot certificates
    • 测试自动续期:sudo certbot renew --dry-run
    • 设置定时续期(证书有效期 90 天):
      • 编辑定时任务:sudo crontab -e
      • 示例(每天 2:30 检查并在需要时续期):30 2 * * * /usr/bin/certbot renew --quiet && systemctl reload httpd
  • 说明:Certbot 会自动修改 Apache 虚拟主机配置,启用 443 并配置证书路径与重定向。

三 方式二 手动部署已有证书(适用于云厂商或自签证书)

  • 准备证书文件(以 Apache 包为例,通常包含):
    • 域名证书:yourdomain.crt
    • 私钥:yourdomain.key
    • 证书链(中间证书/根证书包):ca-bundle.crt / root_bundle.crt
  • 上传证书到服务器(示例目录):
    • sudo mkdir -p /etc/httpd/ssl
    • 将证书文件上传至 /etc/httpd/ssl/(可使用 scp/sftp)
  • 启用 SSL 模块与配置虚拟主机:
    • 安装模块:sudo yum install -y mod_ssl
    • 编辑或新增虚拟主机配置(/etc/httpd/conf.d/yourdomain-ssl.conf):
      <VirtualHost *:443>
          ServerName yourdomain.com
          ServerAlias www.yourdomain.com
          DocumentRoot /var/www/html
      
          SSLEngine on
          SSLCertificateFile      /etc/httpd/ssl/yourdomain.crt
          SSLCertificateKeyFile   /etc/httpd/ssl/yourdomain.key
          SSLCertificateChainFile /etc/httpd/ssl/ca-bundle.crt  # 若中间证书已合并到域名证书,可省略该行
      
          <Directory /var/www/html>
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
      
          ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
          CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
      </VirtualHost>
      
    • 可选:将 HTTP 强制跳转至 HTTPS(在端口 80 的 VirtualHost 中):
      <VirtualHost *:80>
          ServerName yourdomain.com
          ServerAlias www.yourdomain.com
          Redirect permanent / https://yourdomain.com/
      </VirtualHost>
      
  • 使配置生效:
    • 语法检查:sudo httpd -t
    • 重启服务:sudo systemctl restart httpd
    • 访问 https://yourdomain.com 验证

四 常见问题与排查

  • 证书验证失败或卡在验证:确保域名可直达服务器且 80 端口未被占用;如使用 CDN/反向代理,先临时回源或关闭 CDN 验证。
  • HTTP 正常但 HTTPS 访问 403 Forbidden:Apache 2.4+ 需在 Directory 段加入 Require all granted
  • Apache 启动失败:执行 systemctl status httpdjournalctl -xe 查看具体错误;常见为证书路径错误、权限不足或模块未加载。
  • 续期失败或卡在安装依赖:可改用系统 Python 源或更新 pip 镜像后重试;定期执行 certbot renew --dry-run 验证。

0