ssl新闻资讯

文档中心

Nginx+Tomcat鐜涓婼SL璇佷功瀹夎閰嶇疆鍏ㄦ敾鐣?txt

时间 : 2025-09-27 16:25:55浏览量 : 3

一、为什么需要SSL证书?

2Nginx+Tomcat鐜涓婼SL璇佷功瀹夎閰嶇疆鍏ㄦ敾鐣?txt

想象一下你正在咖啡馆用公共WiFi网购,如果没有SSL加密,你的信用卡信息就像写在明信片上邮寄一样危险。SSL证书就是给这条通信通道加上一个防窃听的"保险箱"。

以电商网站为例:

- 未加密时:用户登录信息`username=admin&password=123456`直接明文传输

- 启用SSL后:变成类似`t8Fg$2x@!9Ln*7Qm...`的密文

主流浏览器对未加密网站的警告提示越来越严格,Chrome会将所有HTTP页面标记为"不安全",这会导致用户流失率上升37%(根据GlobalSign调研数据)。

二、准备工作:证书获取与验证

2.1 选择证书类型

就像不同安全级别的门锁:

- DV证书(域名验证):快速签发,仅验证域名所有权,适合博客类网站

- OV证书(组织验证):需提交企业资料,地址栏显示公司名称

- EV证书(扩展验证):最严格审核,浏览器显示绿色企业名称(如银行网站)

2.2 CSR生成实操

CSR(证书签名请求)相当于你的"身份证申请表",在Nginx服务器上生成:

```bash

openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

```

典型交互过程:

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:Beijing

Locality Name (eg, city) []:Beijing

Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Inc.

Organizational Unit Name (eg, section) []:IT Dept

Common Name (e.g. server FQDN or YOUR name) []:www.example.com

Email Address []:admin@example.com

注意:Common Name必须与网站域名完全一致!这是新手最容易出错的地方。

三、Nginx配置详解

3.1 基础配置模板

```nginx

server {

listen 443 ssl;

server_name www.example.com;

ssl_certificate /etc/nginx/ssl/example.com.crt;

ssl_certificate_key /etc/nginx/ssl/example.com.key;

TLS协议优化配置

ssl_protocols TLSv1.2 TLSv1.3;

ssl_prefer_server_ciphers on;

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';

HSTS安全增强(谨慎使用)

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";

location / {

proxy_pass http://tomcat_server;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

}

3.2 关键参数解析

1. `ssl_protocols`:禁用不安全的TLSv1.0/1.1版本

(漏洞案例:2014年POODLE攻击利用SSLv3漏洞)

2. `ssl_ciphers`:优先使用前向保密算法

(即使私钥泄露,历史通信仍安全)

3. HSTS头相当于告诉浏览器:"以后只许用HTTPS访问我"

四、Tomcat连接器配置

4.1 Nginx到Tomcat的代理设置

常见问题场景:

用户访问https://example.com/login.jsp

但Tomcat收到请求后生成的跳转链接却是http://example.com/success.jsp

导致浏览器出现"混合内容警告"

解决方案是在Nginx添加:

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Forwarded-Port $server_port;

同时在Tomcat的server.xml中配置:

```xml

proxyPort="443"

scheme="https"

secure="true"/>

4.2 SSL直连方案对比

方案 | CPU消耗 | 安全性 | 适用场景

-|--|-|

Nginx解密+Tomcat明文 | Tomcat低 | Nginx到Tomcat需内网隔离 | Tomcat集群环境

Nginx透传+Tomcat解密 | Tomcat高 | End-to-End加密 | PCI-DSS合规要求场景

(测试数据:单核服务器处理HTTPS请求能力约为HTTP的30%)

五、安装后的关键检查项

5.1 SSL检测工具使用

Qualys SSL Labs测试(在线工具)

curl https://api.ssllabs.com/api/v3/***yze?host=www.example.com

OpenSSL本地测试

openssl s_client -connect example.com:443 -servername example.com -tlsextdebug < /dev/null | openssl x509 -noout -text

常见问题诊断:

ERROR: Certificate CommonName(CN) does NOT match server name!

→ CN设置错误或未包含所有子域名(需使用SAN证书)

ERR_SSL_OBSOLETE_VERSION

→ Nginx配置中遗漏了TLSv1.2支持

5.2 OCSP装订优化

传统OCSP验证流程:

浏览器 → CA机构 → OCSP响应 → HTTPS连接建立

(延迟增加300-500ms)

启用OCSP Stapling后:

Nginx预先获取OCSP响应 → TLS握手时一并发送

配置方法:

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;

六、进阶安全加固建议

6.1 HTTP自动跳转HTTPS

推荐301永久重定向而非302临时跳转:

```nginx

listen 80;

server_name www.example.com example.com;

Google等搜索引擎会传递权重给HTTPS版本

6.2 HPACK头部压缩

针对大量小文件请求的场景:

http2_max_concurrent_streams =128;

gzip_types text/css application/javascript;

实测效果:网页加载时间减少15%-20%

最佳实践

1?? CSR生成时仔细核对CN和SAN字段

2?? Nginx采用TLSv1

TAG:nginx tomcat ssl证书安装,nginx ssl证书申请,nginx安装ssl模块,nginx ssl证书生成,nginx添加ssl证书,nginx更换ssl证书