用户需要将SSL证书迁移到另一台服务器通常涉及备份证书文件、传输到新服务器,并在新环境中配置。需要了解详细步骤和注意事项,下面我写一下具体步骤:
1. 备份证书文件
所需文件:
私钥文件(.key):例如 domain.key。
证书文件(.crt 或 .pem):例如 domain.crt。
中间证书链文件(可选):例如 intermediate.crt(部分CA会提供)。
PFX/P12文件(可选):如果使用PKCS#12格式(如IIS导出的.pfx)。
查找路径:
Apache:通常在 /etc/ssl/ 或 /etc/apache2/ssl/。
Nginx:常见于 /etc/nginx/ssl/。
IIS:通过证书管理器导出(需密码保护)。
2. 传输文件到新服务器
使用安全方式传输文件(如scp、SFTP或加密压缩包):
bash
复制
scp
domain.crt user@new_server:/path/to/ssl/
scp domain.key user@new_server:/path/to/ssl/
权限设置:
私钥文件(.key)权限应设为 600(仅所有者可读写):
bash
复制
chmod 600 domain.key
3. 在新服务器上配置证书
根据服务器类型配置:
Nginx:
nginx
复制
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/domain.crt;
ssl_certificate_key /path/to/domain.key;
如果证书链未合并,需包含中间证书:
ssl_trusted_certificate /path/to/intermediate.crt;
}
Apache:
apache
复制
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/domain.crt
SSLCertificateKeyFile /path/to/domain.key
SSLCertificateChainFile /path/to/intermediate.crt
</VirtualHost>
IIS:
1. 打开IIS管理器,进入“服务器证书”。
2. 导入PFX文件,输入导出时设置的密码。
3. 在网站绑定中选择导入的证书。
Tomcat:
编辑 server.xml,配置SSLHostConfig和Certificate。
4. 合并证书链(如需)
部分服务器需要将主证书与中间证书合并为一个文件:
bash
复制
cat domain.crt intermediate.crt > combined.crt
在Nginx/Apache配置中使用 combined.crt。
5. 格式转换(可选)
PFX转PEM(适用于从Windows迁移到Linux):
bash
复制
openssl pkcs12 -in certificate.pfx -out domain.crt -nodes
(输入PFX密码,生成包含证书和私钥的PEM文件)
6. 验证配置
检查配置文件语法:
Nginx: nginx -t
Apache: apachectl configtest
重启服务:
bash
复制
systemctl restart nginx # 或 apache2
在线测试工具:
SSL Labs SSL Test
命令行验证:
bash
复制
openssl s_client -connect example.com:443 -servername example.com
7. 其他注意事项
1. 证书有效期:检查证书是否过期(openssl x509 -in domain.crt -text -noout)。
2. 自动续期:如果使用Let's Encrypt,迁移Certbot配置(/etc/letsencrypt/)和定时任务。
3. 防火墙:确保新服务器443端口开放。
4. 私钥安全:传输后删除临时文件,避免泄露。
常见问题
证书不信任:通常因缺少中间证书链,需合并文件。
私钥不匹配:用以下命令验证匹配性:
bash
复制
openssl x509 -noout -modulus -in domain.crt |
openssl md5
openssl rsa
noout -modulus -in domain.key | openssl md5
(两个MD5值应一致)
上面就是SSL证书迁移步骤和操作,通过这些步骤即可安全迁移SSL证书至新服务器。