文档中心
NginxSSL璇佷功缂栬瘧鍏ㄦ敾鐣ヤ粠鐢熸垚鍒伴儴缃茬殑瀹屾暣娴佺▼
时间 : 2025-09-27 16:26:15浏览量 : 1

作为网站安全防护的第一道防线,SSL证书的重要性不言而喻。本文将带你深入了解如何在Nginx服务器上编译和配置SSL证书,让你的网站实现HTTPS加密传输。
一、SSL证书基础知识
SSL(Secure Sockets Layer)证书是一种数字证书,用于在客户端和服务器之间建立加密连接。当你在浏览器地址栏看到那个小锁图标时,就说明该网站使用了SSL证书。
常见的SSL证书类型有三种:
1. 域名验证型(DV):仅验证域名所有权,适合个人博客
2. 组织验证型(OV):验证企业信息,适合企业官网
3. 扩展验证型(EV):最高级别验证,会显示公司名称
实际案例:某电商网站升级到EV SSL后,用户转化率提升了17%,因为顾客看到绿色地址栏更有安全感。
二、准备工作
在开始编译前,你需要准备:
- 一台运行Nginx的Linux服务器
- root或sudo权限
- OpenSSL工具(通常系统已预装)
检查OpenSSL版本:
```bash
openssl version
```
理想情况下应该使用1.1.1及以上版本,以支持TLS 1.3协议。
三、生成私钥和CSR
1. 生成私钥
2048位的RSA密钥是目前的主流选择:
openssl genrsa -out example.com.key 2048
安全提示:对于高安全性要求的场景,可以使用更长的4096位密钥或ECC密钥:
openssl ecparam -genkey -name secp384r1 -out example.com.key
2. 创建CSR(证书签名请求)
openssl req -new -key example.com.key -out example.com.csr
系统会提示输入一些信息:
- Country Name (2 letter code):国家代码如CN
- State or Province Name:省份如Beijing
- Locality Name:城市如Beijing
- Organization Name:组织名称如Your Company Inc.
- Organizational Unit Name:部门名称如IT Dept.
- Common Name:你的域名如example.com或*.example.com(通配符证书)
- Email Address:管理员邮箱
常见错误:Common Name必须与你要保护的域名完全一致。比如要为www.example.com配置HTTPS,"Common Name"就必须是www.example.com而不是example.com。
四、获取SSL证书
你可以选择从以下渠道获取证书:
1. 免费选项:
- Let's Encrypt(90天有效期)
- Cloudflare提供的Origin CA证书
2. 商业CA:
- DigiCert、GeoTrust、Symantec等(提供保险保障)
以Let's Encrypt为例的自动化获取方式:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
五、Nginx配置SSL
获得证书后(通常包括.crt和.ca-bundle文件),需要配置Nginx:
基本HTTPS配置示例:
```nginx
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
TLS协议配置
ssl_protocols TLSv1.2 TLSv1.3;
SSL会话缓存优化性能
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
...其他配置...
}
HTTP自动跳转HTTPS:
listen 80;
return 301 https://$host$request_uri;
六、高级安全配置
OCSP Stapling加速验证:
```nginx
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/ca_bundle.crt;
resolver 8.8.8.8 valid=300s;
resolver_timeout 5s;
HSTS增强安全:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
这告诉浏览器未来一年内都应使用HTTPS访问你的站点。
七、测试与优化
配置完成后需要测试:
1. Qualys SSL Labs测试:
https://www.ssllabs.com/ssltest/
2. 本地测试命令:
```bash
nginx -t
检查配置文件语法是否正确
systemctl reload nginx
重新加载而不中断服务
openssl s_client -connect example.com:443 | openssl x509 -noout -text
查看证书详情
```
3. 性能优化建议:
```nginx
ssl_prefer_server_ciphers on;
优先使用服务器端加密套件
ssl_buffer_size 4k;
减少初始数据包大小
keepalive_timeout 70;
保持连接减少握手次数
八、常见问题解决
Q: Chrome显示"您的连接不是私密连接"怎么办?
A: ?检查时间是否准确 ?确保证书链完整 ?确认中间CA证书已正确安装
Q: Nginx报错"no valid SSL certificate found"?
A: ?检查文件路径是否正确 ?确保证书和私钥匹配 ?文件权限应为600或400
Q:如何续订Let's Encrypt证书?
A:
```bash
certbot renew --dry-run
测试续订
certbot renew
实际续订并重启Nginx
通过以上步骤,你应该已经成功为Nginx服务器编译并部署了SSL证书。定期更新和维护你的加密设置是确保长期安全的关键。记住网络安全是一场持续的旅程而非一次性的任务。
TAG:nginx ssl证书编译,nginx安装ssl证书,nginx的ssl,nginx的ssl证书,linux nginx ssl证书,nginx替换ssl证书不生效