小沨的天空

  • 首页
  • Code
  • Dns
  • 图床
  • 店铺
私人小天地
谈天说地,学习笔记
  1. 首页
  2. Linux
  3. 正文

Nginx SSL配置/优化方案(转)

2016年01月21日 1144点热度 1人点赞 0条评论

Nginx SSL配置/优化方案 ,晚上一个群里的朋友分享的很详细,我就转到博客留备用。
该配置方案是本站自用的配置方案,在SSL Labs测试中可以获得A+的最佳评级。
Nginx站点配置文件一般位置:/usr/local/nginx/conf/vhost

server {
listen 443 ssl http2;

#开启HTTP严格安全传输(HSTS),非已经决定长期使用SSL的站长慎用!
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

#SSL证书文件位置
ssl_certificate /root/SSL/ECC/Seryo.net.crt;
ssl_certificate_key /root/SSL/ECC/Seryo.net.key;

#SSL优化配置
ssl_session_timeout 10m;    #SSL session过期时间
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #只允许TLS协议
ssl_prefer_server_ciphers on;    #由服务器协商最佳的加密算法
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:AES128+EECDH:AES128+EDH:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;    #OCPS开启
ssl_stapling_verify on;    #OCPS验证开启
resolver 8.8.8.8 8.8.4.4 valid=300s;    #用于查询OCPS服务器的DNS
resolver_timeout 5s;

#一般站点配置
server_name seryo.net www.seryo.net;
access_log /data/wwwlogs/seryo.net_nginx.log combined;
index index.html index.htm index.php;
include /usr/local/nginx/conf/typecho.conf;
root /data/wwwroot/seryo.net;

#重定向www到根域名
if ($host != seryo.net) {
    rewrite ^/(.*)$ $scheme://seryo.net/$1 permanent;
    }

location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}
server {
listen 80;
server_name seryo.net;

#将HTTP请求重写到HTTPS
rewrite ^/(.*) https://$server_name/$1 permanent;
}

适用于一般RSA证书的Nginx SSL优化配置

之前的文章中已经提供了一份拥有较强安全性的SSL配置,但是如果你不想更换证书也不希望太过复杂的配置,则只需要更新一下两项,就可以获得足够高的安全性

一般网站评级较低的原因都是这两个:

1、使用的证书密钥交换密钥过弱

2、使用过时且不安全的加密算法:RC4

那么我们就将解决这两个问题

证书密钥交换密钥过弱
一般网站使用的SSL证书都是RSA证书,这种证书基本都是2048位的密钥,但是证书密钥交换密钥必须要比证书密钥更长才能安全,而默认的只有1024位,所以我们需要手动生成一个更强的密钥。

安装screen

(防止密钥生成过程中SSH连接中断)
CentOS/RHEL

yum -y install screen

Debian/Ubuntu

apt-get -y install screen

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

最好和SSL证书放在一起,方便管理

screen -S DH

openssl dhparam -out dhparam.pem 4096

然后就是漫长的等待。。。


在Nginx中配置DH-Key

在你的站点配置文件中(一般在/usr/local/nginx/conf/vhost),SSL证书位置的下方加入一行:

ssl_dhparam /文件位置/dhparam.pem;

将文件位置替换为你的DH-Key所在目录的【绝对路径】即可。

解决密钥套件过弱

在你的站点配置文件中(一般在/usr/local/nginx/conf/vhost)中SSL配置信息中加入(如果有则直接替换):

ssl_prefer_server_ciphers on;    #由服务器协商最佳的加密算法
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:AES128+EECDH:AES128+EDH:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
ssl_session_cache builtin:1000 shared:SSL:10m;    #使用了CHACHA20算法,能够提升网站在移动设备上的打开速度,需要在Nginx中编译LibreSSL库,你也可以使用Seryo Network提供的Nginx一键编译脚本。

意:如果你的Nginx不支持CHACHA20算法,则删除ECDHE-ECDSA-CHACHA20-POLY1305:即可。
让你的Nginx支持最潮流最快捷的CHACHA20算法:

Nginx一键更新脚本
这个也是本站自用的Nginx编译配置,采用最新的Nginx1.9.9版本,增加了LibreSSL的支持(可以使用CHACHA20算法),并且添加了一些有用的模块,具体可以在下方找到说明。
采用了的编译参数:

./configure \
 --prefix=/usr/local/nginx \
 --user=www \
 --group=www \
 --http-client-body-temp-path=/var/tmp/nginx/client \
 --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
 --http-proxy-temp-path=/var/tmp/nginx/proxy \
 --http-scgi-temp-path=/var/tmp/nginx/scgi \
 --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
 --with-http_ssl_module \
 --with-http_gzip_static_module \
 --with-ipv6 \
 --with-http_sub_module \
 --with-http_stub_status_module \
 --with-http_v2_module \
 --with-http_flv_module \
 --with-http_realip_module \
 --with-ld-opt="-ljemalloc -lrt" \
 --add-module=ngx_http_google_filter_module \
 --add-module=ngx_http_substitutions_filter_module \
 --with-openssl=libressl-${LIBRESSL_VERSION} \
 --with-http_gunzip_module
使用方法:

1、下载脚本

wget -P /root https://www.seryo.moe/nginx.sh

2、赋予执行权限

chmod +x nginx.sh

3、运行,然后等待安装

yum -y install screen && screen -S nginx && ./nginx.sh

双核CPU的服务器请下载以下版本:

wget -P /root https://www.seryo.moe/nginx_core2.sh

以上内容来源:
https://seryo.net/7.Seryo
https://seryo.net/17.Seryo
https://seryo.net/8.Seryo
https://wiki.phoenixlzx.com/page/NGINX/
https://doc.ssl.do/page/install-nginx/

标签: nginx ssl 优化
最后更新:2018年12月10日

小沨

一个网络白痴,爱好网络生活和技术。 梦想成为一个网络糕手.喜欢简单的一个80后男人! Life is better when shared !

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

小沨

一个网络白痴,爱好网络生活和技术。 梦想成为一个网络糕手.喜欢简单的一个80后男人! Life is better when shared !

小程序
广告
最新 热点 随机
最新 热点 随机
Server酱和Qmsg酱两个好用的推送服务 linux的ssh服务升级后无法启动修复 linux服务器的硬盘使用时间查询 启用chrome浏览器内置的二维码生成插件 宝塔面板或者LNMP下安装php的mongodb扩展 ShareX 对接tu.my图床实现截图和图片自动上传 帝国CMS的sitemap.xml设置和生成 hetzner服务器购买和安装debian系统 使用nginx的stream模块实现端口转发和TCP流量 服务器装Proxmox VE/多IP设置和单IP设置Nat转发
linux的ssh服务升级后无法启动修复Server酱和Qmsg酱两个好用的推送服务
巴斯服务器下SolusVM安装教程(转) lynx文本浏览器的seo优化功能 给 WordPress 加上简单的 Gtalk 状态显示--VPSEE 服务器装Proxmox VE/多IP设置和单IP设置Nat转发 IBM云计算服务的VM试用 WordPress博客更换域名,ssl域名301跳转 Debian9 安装Proxmox VE/挂载新盘/单IP设置Nat转发 VPS或服务器一键网络重装系统(linux or win) nginx目录浏览配置第三方插件fancyindex Kloxo/Lxadmin 关闭网站统计
标签聚合
vps 系统 linux wordpress centos ubuntu DirectAdmin 升级 免费 php 网盘 服务器
开源相关
  • fedoraproject
  • Packages Search
  • CentOS mirrors
  • do mirrors
  • RepoForge
  • Debian Mirror
  • elrepo.org
  • linode mirrors
  • owncloud
  • Ubuntu Mirrors
  • centos vault
  • 阿里开源镜像站
友情链接
  • 回到未来博客
  • 我喔喔喔
  • 娃娃博客
  • 小沨记事本
  • semnew
  • 李子博客
  • 我的图库
  • 豆博
  • logdns.free.fr
  • 麦麦同学
  • 傻子-跸西的blog
  • QQPCC
  • vzone
  • 午夜客
  • 怪鸟博客
  • 死老鬼
  • 寥寥后花园
  • 撸羊毛
  • 2.int.ru
  • 陈否否
  • 爱购啦
  • 轨迹博客
  • 朱志瑞
  • LiCEO
  • 天下无鱼
  • xiaofengsky.free.fr
  • 夜狐

COPYRIGHT © 2020 小沨的天空. ALL RIGHTS RESERVED. @ 网站运行: @ 服务器运行状态

THEME KRATOS MADE BY VTROIS