云服务器怎么替换证书?

**核心步骤总览

1、准备新证书:获取由证书颁发机构(CA)签发的新证书文件。

2、备份旧证书:防止替换出错后无法恢复。

3、上传新证书:将新证书文件上传到云服务器。

4、修改服务器配置:更新 Web 服务器软件的配置文件,指向新证书。

5、重载或重启服务:使新配置生效。

6、验证新证书:检查证书是否替换成功。

**详细操作指南

**第零步:准备工作

1、获取新证书文件

通常你会从证书提供商(如 Let‘s Encrypt, 阿里云,腾讯云,DigiCert等)那里获得以下文件(具体名称可能因提供商而异)

域名证书文件(例如your_domain.crtyour_domain.pem

证书链文件(例如chain.crtca-bundle,有时会与域名证书合并为一个文件)

私钥文件(例如your_domain.key请务必妥善保管此文件!

2、备份旧证书

* 将服务器上现有的证书文件(.crt,.pem,.key 等)和配置文件备份到另一个安全目录。

3、上传新证书

* 使用scpsftp 或云服务器控制台提供的文件上传功能,将新证书文件上传到云服务器上的指定目录,通常这个目录是/etc/ssl//etc/nginx/ssl/ 等,请确保目录权限安全(私钥文件应为600 权限)。

**第一步:修改 Web 服务器配置

以下是常见 Web 服务器的配置方法:

1. 对于 Nginx

1、编辑 Nginx 的虚拟主机配置文件

* 配置文件通常位于/etc/nginx/nginx.conf/etc/nginx/conf.d//etc/nginx/sites-enabled/ 目录下。

* 找到包含ssl_certificatessl_certificate_key 指令的server 块。

2、更新证书路径

    server {
        listen 443 ssl http2;
        server_name yourdomain.com;
        # 指向新的证书文件和私钥文件
        ssl_certificate /path/to/your/new_domain.crt;    # 可能是 .crt 或 .pem 文件
        ssl_certificate_key /path/to/your/new_domain.key;
        # ... 其他配置 ...
    }

3、保存并退出编辑器

2. 对于 Apache

1、编辑 Apache 的虚拟主机配置文件

* 配置文件通常位于/etc/apache2/sites-available//etc/httpd/conf.d/ 目录下,文件名可能为default-ssl.conf 或你的站点配置文件。

2、更新证书路径

* 找到SSLCertificateFileSSLCertificateKeyFile 指令并修改它们。

    <VirtualHost *:443>
        ServerName yourdomain.com
        # 指向新的证书文件和私钥文件
        SSLCertificateFile /path/to/your/new_domain.crt
        SSLCertificateKeyFile /path/to/your/new_domain.key
        # 如果有证书链文件,确保它也正确指向
        SSLCertificateChainFile /path/to/your/chain.crt # 有时这行不需要,如果证书链已合并到主证书中
        # ... 其他配置 ...
    </VirtualHost>

3、保存并退出编辑器

3. 对于 Tomcat (使用 APR/Native 或 NIO Connector)

Tomcat 通常使用 Java Keystore(JKS 或 PKCS12)格式。

1、将新证书导入 Keystore(如果你使用 JKS/PKCS12):

你需要将证书和私钥合并(或直接使用提供商给的PKCS12文件),如果提供商给了单独的证书和私钥,你可以用 OpenSSL 生成一个 PKCS12 文件

        openssl pkcs12 -export -in new_domain.crt -inkey new_domain.key -out keystore.p12 -name tomcat -CAfile chain.crt -caname root

* 在server.xml 中配置 Connector。

2、编辑conf/server.xml 文件

* 找到SSLHostConfigCertificate 配置项。

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="/path/to/your/keystore.p12"
                         certificateKeystorePassword="your_keystore_password"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

* 确保certificateKeystoreFilecertificateKeystorePassword 指向你新生成的 keystore 文件和密码。

3、保存并退出编辑器

**第二步:重启或重载服务

在修改配置后,你需要重新加载或重启 Web 服务以使更改生效。

Nginx:

    # 首先测试配置文件语法是否正确
    sudo nginx -t
    # 如果测试成功,重载配置(平滑重启,不影响在线服务)
    sudo systemctl reload nginx
    # 或者使用
    sudo service nginx reload

Apache:

    # 测试配置
    sudo apache2ctl configtest  # 在 Debian/Ubuntu 上
    # 或
    sudo httpd -t              # 在 CentOS/RHEL 上
    # 重载服务
    sudo systemctl reload apache2  # Debian/Ubuntu
    sudo systemctl reload httpd    # CentOS/RHEL

Tomcat:

    # 通常需要重启
    sudo systemctl restart tomcat9  # 根据你的 Tomcat 版本调整

**第三步:验证新证书

服务重启后,务必验证新证书是否已生效。

1、使用浏览器访问

* 用 HTTPS 访问你的网站(https://yourdomain.com)。

* 点击地址栏的小锁图标,查看证书信息,确认颁发者和有效期是否正确。

2、使用命令行工具

使用openssl 命令检查

        echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -issuer -dates

* 这个命令会输出证书的颁发者和起止日期,确认是新证书的信息。

3、使用在线 SSL 检查工具

* 访问如 [SSL Labs SSL Test](https://www.ssllabs.com/ssltest/) 等网站,输入你的域名进行全面的检查。

**云服务商特定说明

大多数云服务商(如阿里云、腾讯云、华为云、AWS、Azure)也提供了负载均衡器(SLB/ELB/ALB),如果你的证书是挂在负载均衡器上,而不是后端云服务器上,那么替换流程更简单:

1、 登录云服务商控制台。

2、 找到负载均衡器实例。

3、 在监听器配置中,找到 HTTPS/SSL 监听器。

4、 选择“更换证书”或“修改监听器”。

5、 上传你的新证书(通常需要证书内容和私钥,粘贴到文本框即可)。

6、 完成更换,无需重启后端服务器。

**注意事项

权限确保 Web 服务进程(如www-data,nginx,apache)有权限读取证书和私钥文件。

防火墙确保服务器的 443 端口是开放的。

证书链最常见的错误是证书链不完整,确保你的证书文件包含了所有中间证书,你可以使用在线 SSL 检查工具来诊断这个问题。

定时任务如果你使用的是 Let‘s Encrypt 等短期证书,建议设置自动续期和重载脚本,避免手动操作。

遵循以上步骤,你应该可以顺利地为你的云服务器完成证书替换。

文章摘自:https://idc.huochengrm.cn/fwq/18729.html

评论