ssl新闻资讯

文档中心

Nginx澶氬煙鍚嶆坊鍔燬SL璇佷功鏁欑▼鎵嬫妸鎵嬫暀浣犻厤缃瓾TTPS瀹夊叏璁块棶

时间 : 2025-09-27 16:26:41浏览量 : 2

2Nginx澶氬煙鍚嶆坊鍔燬SL璇佷功鏁欑▼鎵嬫妸鎵嬫暀浣犻厤缃瓾TTPS瀹夊叏璁块棶

在今天的互联网环境中,SSL证书已经成为网站安全的标配。无论是保护用户数据还是提升搜索引擎排名,HTTPS都至关重要。对于使用Nginx作为Web服务器的管理员来说,如何为多个域名配置SSL证书是一个常见需求。本文将以通俗易懂的方式,结合具体实例,带你一步步完成Nginx多域名SSL证书的配置。

一、为什么需要为多域名配置SSL证书?

假设你运营着两个网站:`example.com`和`shop.example.com`。如果没有SSL证书:

1. 用户访问时浏览器会显示"不安全"警告(比如Chrome的小红锁图标)

2. 所有传输数据(包括密码、信用卡号)都是明文传输

3. 搜索引擎会降低你的排名

通过配置SSL证书:

- 每个域名都会显示绿色安全锁标志

- 数据传输加密(比如用户登录时的密码会被加密)

- 符合PCI DSS等安全标准要求

二、准备工作:获取SSL证书

常见的获取方式有三种:

1. 免费证书:Let's Encrypt(适合个人和小企业)

```bash

示例:使用Certbot获取证书

sudo certbot certonly --nginx -d example.com -d shop.example.com

```

2. 商业证书:DigiCert、GeoTrust等(适合企业级应用)

3. 自签名证书(仅用于测试环境)

以Let's Encrypt为例,它会生成以下文件:

```

/etc/letsencrypt/live/example.com/

├── fullchain.pem

证书链

├── privkey.pem

私钥

└── ...

其他文件

三、Nginx多域名配置实战

场景1:同一IP不同域名(SNI技术)

现代浏览器都支持SNI(Server Name Indication),允许一个IP托管多个HTTPS站点。

```nginx

example.com的配置

server {

listen 443 ssl;

server_name example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

location / {

root /var/www/html;

index index.html;

}

}

shop.example.com的配置

server_name shop.example.com;

ssl_certificate /etc/letsencrypt/live/shop.example.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/shop.example.com/privkey.pem;

root /var/www/shop;

index index.php;

场景2:通配符证书(*.example.com)

如果你有多个子域名,可以使用通配符证书:

server_name *.example.com;

动态匹配子域名

set $subdomain "";

if ($host ~* ^(.*)\.example\.com$) {

set $subdomain $1;

root /var/www/$subdomain;

四、关键安全优化设置

除了基本配置,建议添加以下安全增强:

ssl_protocols TLSv1.2 TLSv1.3;

禁用老旧协议

ssl_prefer_server_ciphers on;

优先使用服务端加密套件

ssl_session_timeout 1d;

SSL会话缓存时间

ssl_session_cache shared:SSL:50m;

SSL会话缓存大小

HSTS头(强制HTTPS访问)

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

OCSP装订提升性能

ssl_stapling on;

ssl_stapling_verify on;

五、常见问题排查

1. 混合内容警告

-现象:页面有绿锁但控制台提示"Mixed Content"

-解决:确保所有资源(图片/js/css)都使用https://加载

2. 证书不匹配错误

```bash

openssl x509 -in fullchain.pem -noout -text | grep DNS

??检查证书包含的域名是否与当前访问一致

3. 性能优化

nginx -t

测试配置语法

systemctl reload nginx

平滑重载

六、高级技巧扩展

对于大型站点可以考虑:

- 多级证书链:将根CA、中间CA分开部署提升兼容性

- 硬件加速:通过OpenSSL引擎调用HSM设备处理密钥

- 自动化续期:使用Certbot的cron任务自动续期Let's Encrypt证书

```bash

0 */12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

通过以上步骤,你的Nginx服务器就能安全高效地支持多域名HTTPS访问了。记得定期检查SSL Labs的评分(https://www.ssllabs.com/ssltest),确保配置始终符合最佳实践!

TAG:nginx多域名添加ssl证书,nginx 绑定多个域名,nginx 多域名ssl认证,nginx配置多个域名 servername