用户有时有时需要变更服务器,并将迁移SSL证书到另一台服务器需要确保将证书文件、私钥以及中间证书正确转移并配置。下面我写一下详细步骤:
1. 收集证书文件
证书文件:通常以 .crt 或 .pem 为扩展名(如 your_domain.crt)。
私钥文件:通常以 .key 为扩展名(如 your_domain.key),需确保其保密性。
中间证书(CA Bundle):部分证书颁发机构(CA)提供中间证书文件(如 intermediate.crt),需与主证书合
查找证书位置
Apache:/etc/ssl/certs/(证书)和 /etc/ssl/private/(私钥)。
Nginx:通常在 /etc/nginx/ssl/。
cPanel:/home/user/ssl/ 或通过界面导出。
查找命令:
bash
sudo find / -name "*.crt" 搜索证书文件
sudo find / -name "*.key" 搜索私钥文件
2. 将文件传输到新服务器
使用安全方式传输文件:
SCP/SFTP:
bash
scp your_domain.crt user@new_server:/path/to/destination/
scp your_domain.key user@new_server:/path/to/destination/
Rsync:
bash
rsync -avz -e ssh your_domain.* user@new_server:/path/to/destination/
手动下载/上传:通过SFTP客户端(如FileZilla)或控制面板。
3. 在新服务器上安装证书
Apache
将文件放入目录(如 /etc/ssl/certs/ 和 /etc/ssl/private/)。
配置虚拟主机:
apache
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/your_domain.crt
SSLCertificateKeyFile /etc/ssl/private/your_domain.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.crt # 若需要中间证书
</VirtualHost>
检查配置并重启:
bash
sudo apachectl configtest
sudo systemctl restart apache2
Nginx
合并证书(如有中间证书):
bash
cat your_domain.crt intermediate.crt > combined.crt
配置SSL:
nginx
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/combined.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
}
检查配置并重启:
bash
sudo nginx -t
sudo systemctl restart nginx
IIS(Windows Server)
打开 IIS管理器 → 服务器证书。
点击“导入”,选择 .pfx 文件(若需转换,使用OpenSSL生成PFX):
bash
openssl pkcs12 -export -out certificate.pfx -inkey your_domain.key -in your_domain.crt -certfile intermediate.crt
绑定证书到网站。
4. 验证SSL证书
在线工具:使用 SSL Labs SSL Test 或 Why No Padlock? 检查配置。
命令行验证:
bash
openssl s_client -connect your_domain.com:443 -servername your_domain.com
浏览器检查:访问 https://your_domain.com,确认无证书警告。
5. 其他注意事项
权限设置:私钥文件权限应为 600(仅所有者可读/写):
bash
chmod 600 your_domain.key
自动续期:若使用Let’s Encrypt,迁移Certbot配置(/etc/letsencrypt/)并测试续期。
防火墙/安全组:确保新服务器的443端口开放。
CDN/负载均衡器:若使用Cloudflare、AWS ALB等,需在其控制台重新上传证书。
常见问题
错误提示“私钥不匹配”:检查证书与私钥是否配对,使用:
bash
openssl x509 -noout -modulus -in your_domain.crt | openssl md5
openssl rsa -noout -modulus -in your_domain.key | openssl md5
两个哈希值应一致。
缺少中间证书:浏览器可能提示“不信任的证书”,需合并中间证书到主证书文件中。
用户通过以上五个步骤,可确保SSL证书正确迁移到新服务器。如果遇到问题,检查日志(如 journalctl -u nginx)或联系证书颁发机构获取支持。