1、准备新证书:获取由证书颁发机构(CA)签发的新证书文件。
2、备份旧证书:防止替换出错后无法恢复。
3、上传新证书:将新证书文件上传到云服务器。
4、修改服务器配置:更新 Web 服务器软件的配置文件,指向新证书。
5、重载或重启服务:使新配置生效。
6、验证新证书:检查证书是否替换成功。
1、获取新证书文件:
通常你会从证书提供商(如 Let‘s Encrypt, 阿里云,腾讯云,DigiCert等)那里获得以下文件(具体名称可能因提供商而异)
域名证书文件(例如your_domain.crt
或your_domain.pem
)
证书链文件(例如chain.crt
或ca-bundle
,有时会与域名证书合并为一个文件)
私钥文件(例如your_domain.key
)请务必妥善保管此文件!
2、备份旧证书:
* 将服务器上现有的证书文件(.crt
,.pem
,.key
等)和配置文件备份到另一个安全目录。
3、上传新证书:
* 使用scp
、sftp
或云服务器控制台提供的文件上传功能,将新证书文件上传到云服务器上的指定目录,通常这个目录是/etc/ssl/
或/etc/nginx/ssl/
等,请确保目录权限安全(私钥文件应为600
权限)。
以下是常见 Web 服务器的配置方法:
1. 对于 Nginx
1、编辑 Nginx 的虚拟主机配置文件。
* 配置文件通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/
和/etc/nginx/sites-enabled/
目录下。
* 找到包含ssl_certificate
和ssl_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、更新证书路径。
* 找到SSLCertificateFile
和SSLCertificateKeyFile
指令并修改它们。
<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
文件。
* 找到SSLHostConfig
和Certificate
配置项。
<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>
* 确保certificateKeystoreFile
和certificateKeystorePassword
指向你新生成的 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
评论