在 Linux 上使用 OpenSSL 部署证书,通常分为 生成证书(或申请证书) 和 在服务中配置证书 两部分。下面按常见场景给你一个完整、实用的说明。
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
填写信息示例:
www.example.com)openssl x509 -req -days 365 \
-in server.csr \
-signkey server.key \
-out server.crt
✅ 得到三个文件:
server.key(私钥)server.csr(证书请求)server.crt(证书)/etc/nginx/ssl/server.crt
/etc/nginx/ssl/server.key
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
root /var/www/html;
index index.html;
}
}
nginx -t
systemctl reload nginx
cp server.crt /etc/ssl/certs/
cp server.key /etc/ssl/private/
配置:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
ServerName www.example.com
</VirtualHost>
systemctl restart apache2
如果你是 真实公网证书(如 Let’s Encrypt):
apt install certbot
certbot --nginx
自动生成:
/etc/letsencrypt/live/域名/fullchain.pem/etc/letsencrypt/live/域名/privkey.pemopenssl x509 -in server.crt -noout -text
openssl s_client -connect www.example.com:443
❌ 浏览器提示不安全
→ 自签名证书正常,需手动信任
❌ 私钥权限错误
chmod 600 server.key
❌ 域名不匹配
→ Common Name 或 SAN 必须和访问域名一致
如果你能告诉我:
我可以直接给你 针对性配置示例。