Nginx的SSL配置优化

转载 2016年06月01日 10:47:51

这里写图片描述
一般网站使用的SSL证书都是RSA证书,这种证书基本都是2048位的密钥,但是证书密钥交换密钥必须要比证书密钥更长才能安全,而默认的只有1024位,所以我们需要手动生成一个更强的密钥。所以配置之前,如果没有DH-key就需要做下面的步骤

有screen则跳过,没则安装

yum -y install screen

生成4096位的DH-Key(证书密钥交换密钥)

screen -S DH
openssl dhparam -out dhparam.pem 4096

执行之后需要等很长时间,总之慢慢等,网路出现中断,可以执行下面命令重新连接安装窗口

screen -r DH

熬过漫长的等待时间后,建议生成的dhparam.pem文件最好跟SSL证书放在一起方便管理。

有了证书密钥交换密钥后,我们继续配置,打开网站所对应的Nginx的conf配置文件

假设我的配置文件是在 /usr/local/nginx/conf/vhost 的目录

vim /usr/local/nginx/conf/vhost/www.linpx.com.conf

配置如下,只包含了ssl的部分,未包含其他比较重要的配置,如缓存、跳转、防盗链和强制HTTPS等等

server {

listen 443 ssl http2;

add_header Strict-Transport-Security "max-age=6307200; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_certificate /usr/local/nginx/conf/vhost/sslkey/www.linpx.com.crt;
ssl_certificate_key /usr/local/nginx/conf/vhost/sslkey/www.linpx.com.key;
ssl_trusted_certificate /usr/local/nginx/conf/vhost/sslkey/chaine.pem;
ssl_dhparam /usr/local/nginx/conf/vhost/sslkey/dhparam.pem;

ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ssl_prefer_server_ciphers on;

ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_session_tickets on;

ssl_stapling on; 
ssl_stapling_verify on;

resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

···

}

各行解析:

server {

listen 443 ssl http2;
#使用HTTP/2,需要Nginx1.9.7以上版本

add_header Strict-Transport-Security "max-age=6307200; includeSubdomains; preload";
#开启HSTS,并设置有效期为“6307200秒”(6个月),包括子域名(根据情况可删掉),预加载到浏览器缓存(根据情况可删掉)

add_header X-Frame-Options DENY;
#禁止被嵌入框架

add_header X-Content-Type-Options nosniff;
#防止在IE9、Chrome和Safari中的MIME类型混淆攻击

ssl_certificate /usr/local/nginx/conf/vhost/sslkey/www.linpx.com.crt;
ssl_certificate_key /usr/local/nginx/conf/vhost/sslkey/www.linpx.com.key;
#SSL证书文件位置

ssl_trusted_certificate /usr/local/nginx/conf/vhost/sslkey/chaine.pem;
#OCSP Stapling的证书位置

ssl_dhparam /usr/local/nginx/conf/vhost/sslkey/dhparam.pem;
#DH-Key交换密钥文件位置

#SSL优化配置

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#只允许TLS协议

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
#加密套件,这里用了CloudFlare's Internet facing SSL cipher configuration

ssl_prefer_server_ciphers on;
#由服务器协商最佳的加密算法

ssl_session_cache builtin:1000 shared:SSL:10m;
#Session Cache,将Session缓存到服务器,这可能会占用更多的服务器资源

ssl_session_tickets on;
#开启浏览器的Session Ticket缓存

ssl_session_timeout 10m; 
#SSL session过期时间

ssl_stapling on; 
#OCSP Stapling开启,OCSP是用于在线查询证书吊销情况的服务,使用OCSP Stapling能将证书有效状态的信息缓存到服务器,提高TLS握手速度

ssl_stapling_verify on;
#OCSP Stapling验证开启

resolver 8.8.8.8 8.8.4.4 valid=300s;
#用于查询OCSP服务器的DNS

resolver_timeout 5s;
#查询域名超时时间

···

}

配置完后请记得重启Nginx!

CentOS 6.x:

service nginx restart

CentOS 7.x:

systemctl restart nginx

nginx配置https ssl 安全协议

  • 2017年12月05日 16:39
  • 43KB
  • 下载

nginx配置SSL实现服务器/客户端双向认证

本人不才,配置了两天,终于搞出来了,结合网上诸多博文,特此总结一下! 配置环境:       Ubuntu 11.04      PCRE 8.31      Openssl 2.0.2  ...
  • kunoy
  • kunoy
  • 2012年11月29日 16:41
  • 44038

nginx配置ssl证书实现https和http共存访问

由于自己生成的证书不受浏览器信任,所以需要到第三方ssl证书提供商处购买,在购买ssl证书时,需要提供一个自己的web服务器生成的csr密码。 生成csr的步骤: ①:生成RSA密钥:  openss...
  • eclothy
  • eclothy
  • 2015年05月23日 10:29
  • 9407

Nginx + Tomcat HTTPS/SSL 配置方法 ——申请证书

最新研究了一下NGINX+TOMCAT 配置 HTTS。其实还是比较简单。知识其中有些流程如果没有搞清楚,还是容易被绕晕。在此简单的分享一下。         首先服务器采用的是 NGINX 负载了...

给Nginx配置一个自签名的SSL证书 【转】

文章来源:给Nginx配置一个自签名的SSL证书 要保证Web浏览器到服务器的安全连接,HTTPS几乎是唯一选择。HTTPS其实就是HTTP over SSL,也就是让HTTP连接建立在SSL...

Nginx配置SSL证书部署HTTPS网站

Nginx配置SSL证书部署https网站 一、什么是 SSL 证书,什么是 HTTPS SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 W...
  • IRhythm
  • IRhythm
  • 2016年08月30日 16:13
  • 6016

Nginx配置SSL证书部署HTTPS网站(颁发证书)

自行颁发不受浏览器信任的SSL证书 xshell登录服务器,使用openssl生成RSA密钥及证书# 生成一个RSA密钥 $ openssl genrsa -des3 -out tfjybj.ke...

Nginx自签ssl证书创建及配置方法

场景:Nginx使用自签ssl证书实现https连接。方法:第一步:使用OpenSSL创建证书#建立服务器私钥(过程需要输入密码,请记住这个密码)生成RSA密钥 >openssl genrsa -de...

nginx配置将http请求转发支持ssl双向认证https请求的正向代理

一、引言 nginx 是否支持将http请求转发为https支持ssl双向认证,网上没什么用例可以参考,查询各大开发运维社区了下有几种说法支持: 不支持: 不清楚家祭不忘告乃翁: https://...

Nginx配置ssl以及简单的+Tomcat

Nginx配置ssl l  这里生成的安全证书是一jks生成的;还有一种是以openssl生成的; l  首先创建一个空文件service.pem,将用jks生成的三个证书里的密钥以此放入serv...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Nginx的SSL配置优化
举报原因:
原因补充:

(最多只允许输入30个字)