当前位置:首页 > 行业动态 > 正文

https证书更换

生成新CSR,向CA申请证书,部署至服务器并重启服务,完成HTTPS证书更换

HTTPS证书更换操作指南

证书更换原因

  1. 证书过期:现有证书临近有效期(通常剩余30天内需更新)。
  2. 证书类型升级:如从DV(域名验证)升级为OV(组织验证)或EV(扩展验证)。
  3. 域名变更:新增子域名或修改主域名。
  4. 颁发机构更换:切换CA(如Let’s Encrypt、DigiCert等)。
  5. 安全协议更新:支持TLS 1.3或禁用老旧加密算法。

更换前准备

步骤 操作 说明
1 备份配置文件 保存当前服务器的证书文件、私钥和配置文件(如Nginx的nginx.conf)。
2 检查域名解析 确保域名能正常解析到服务器IP,避免更换过程中中断访问。
3 生成新密钥对(可选) 若需更换密钥算法(如RSA→ECDSA),需重新生成密钥。

生成新证书

  1. 生成密钥和CSR(证书签名请求)

    # 生成RSA密钥(2048位)
    openssl req -newkey rsa:2048 -nodes -keyout new_key.pem -out new_csr.pem
    # 生成ECDSA密钥(推荐现代浏览器)
    openssl req -newkey ec:secp384r1 -nodes -keyout new_ec_key.pem -out new_ec_csr.pem
    • Common Name:填写主域名(如example.com)。
    • Subject Alternative Name (SAN):添加所有子域名(如.example.comwww.example.com)。
  2. 提交到CA

    • 免费证书(如Let’s Encrypt)
      certbot certonly --csr new_csr.pem --authenticator webroot -w /var/www/html
    • 付费证书(如DigiCert)
      登录CA平台上传CSR并完成验证(DNS、邮件、文件等)。

安装新证书

  1. 替换证书文件
    | 文件类型 | 路径示例 | 说明 |
    |———-|———-|——|
    | 证书文件 | /etc/ssl/certs/new_cert.pem | CA颁发的证书内容。 |
    | 私钥文件 | /etc/ssl/private/new_key.pem | 生成的密钥文件。 |
    | 中间证书 | /etc/ssl/certs/chain.pem | CA提供的中间证书链(部分CA需要)。 |

  2. 更新服务器配置

    • Nginx示例
      server {
          listen 443 ssl;
          ssl_certificate /etc/ssl/certs/new_cert.pem;
          ssl_certificate_key /etc/ssl/private/new_key.pem;
          ssl_trusted_certificate /etc/ssl/certs/chain.pem; # 如需中间证书
          # 其他配置...
      }
    • Apache示例
      SSLEngine on
      SSLCertificateFile /etc/ssl/certs/new_cert.pem
      SSLCertificateKeyFile /etc/ssl/private/new_key.pem
      SSLCertificateChainFile /etc/ssl/certs/chain.pem # 如需中间证书
  3. 重启服务

    # Nginx
    systemctl restart nginx
    # Apache
    systemctl restart httpd

验证新证书

  1. 浏览器检查:访问https://your-domain.com,确认绿色锁标志和证书信息。
  2. 在线工具检测:使用SSL Labs或Qualys SSL验证配置。
  3. 命令行验证
    openssl s_client -connect your-domain.com:443 -servername your-domain.com

清理旧证书

  • 删除旧证书文件(如old_cert.pemold_key.pem)。
  • 注意:保留旧配置文件至少30天,以防新证书出现问题需回滚。

相关问题与解答

问题1:如何自动续期Let’s Encrypt证书?

解答
使用certbot的自动续期功能:

  1. 安装certbot并配置自动续期:
    certbot renew --dry-run # 测试续期
  2. 设置定时任务(如Ubuntu的Cron):
    crontab -e
    # 添加以下行(每天凌晨2点检查)
    0 2    /usr/bin/certbot renew --quiet --renew-hook "systemctl restart nginx"

问题2:通配符证书和多域名证书有什么区别?

解答
| 特性 | 通配符证书(如.example.com) | 多域名证书(如example.com + test.com) |
|——|———————————|——————————————|
| 适用场景 | 同一主域名下的所有子域名 | 多个独立域名或子域名 |
| 限制 | 仅支持同一根域名的子域 | 支持不同顶级域名或子域 |
| 性价比 | 适合多子域场景 | 适合跨域名业务 |
| 示例 | .example.com覆盖a.example.comb.example.com | example.com + `test.

0