在 Linux 上部署 SSL 证书通常涉及以下步骤,具体操作可能因 Web 服务器(如 Nginx、Apache)而异。以下是通用流程:

1. 准备 SSL 证书文件
从证书颁发机构(CA)获取证书后,通常会得到以下文件:
- 证书文件 (如
yourdomain.crt
或yourdomain.pem
) - 私钥文件 (如
yourdomain.key
) - 中间证书链文件 (如
ca_bundle.crt
,可选,部分 CA 会提供)
将文件上传到服务器的安全目录(如 /etc/ssl/
):
bash
sudo mkdir -p /etc/ssl/yourdomain
sudo cp yourdomain.crt /etc/ssl/yourdomain/
sudo cp yourdomain.key /etc/ssl/yourdomain/
sudo cp ca_bundle.crt /etc/ssl/yourdomain/ # 如果有
2. 配置 Web 服务器
Nginx 配置示例
编辑站点配置文件(如 /etc/nginx/sites-available/yourdomain.conf
):
nginx
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/yourdomain/yourdomain.crt;
ssl_certificate_key /etc/ssl/yourdomain/yourdomain.key;
# 如果存在中间证书链,合并到证书文件或单独指定
# ssl_trusted_certificate /etc/ssl/yourdomain/ca_bundle.crt;
# 其他 SSL 优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";
# 其他站点配置...
}
# 强制 HTTP 跳转到 HTTPS
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
测试配置并重启 Nginx:
bash
sudo nginx -t # 测试配置
sudo systemctl restart nginx
Apache 配置示例
编辑虚拟主机文件(如 /etc/apache2/sites-available/yourdomain.conf
):
apache
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
SSLEngine on
SSLCertificateFile /etc/ssl/yourdomain/yourdomain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key
SSLCertificateChainFile /etc/ssl/yourdomain/ca_bundle.crt # 如果有
# 其他配置...
</VirtualHost>
# 强制 HTTP 跳转
<VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
启用模块并重启 Apache:
bash
sudo a2enmod ssl
sudo a2ensite yourdomain.conf
sudo systemctl restart apache2
3. 验证 SSL 配置
-
浏览器访问 :通过
https://yourdomain.com
检查证书是否生效。 -
命令行工具 :
bashcurl -vI https://yourdomain.com openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
-
在线工具 :使用 SSL Labs 检测配置安全性。
常见问题
-
权限问题 :确保私钥文件(
.key
)仅对 root 可读:bashsudo chmod 600 /etc/ssl/yourdomain/yourdomain.key
-
证书链不完整 :合并证书和中间链:
bashcat yourdomain.crt ca_bundle.crt > combined.crt
-
防火墙 :确保 443 端口开放:
bashsudo ufw allow 443/tcp
根据实际环境调整路径和配置。如果是云服务器(如 AWS、阿里云),部分平台提供证书托管服务,可直接绑定到负载均衡器或 CDN。