用户有时有时需要变更服务器,并将迁移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)或联系证书颁发机构获取支持。