小沨的天空

  • 首页
  • 图床
  • 网盘
  • 赞助
私人小天地
谈天说地,学习笔记
  1. 首页
  2. Linux
  3. 正文

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

2016年1月21日 2434点热度 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日

mikj

这个人很懒,什么都没留下

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

文章评论

您需要 登录 之后才可以评论
站内搜索
最新 热点 随机
最新 热点 随机
满5美元提现,每天签到和购物返现的网站 Win10蓝牙链接wifi热点网络和Win10使用蓝牙共享网络分享 Gravatar头像的镜像使用Cloudflare Workers反代自建 如何在论文中使用证据 acme申请google Public Certificate 免费ssl 证书应用LNMP Ubuntu的远程桌面环境使用Docker与Xfce Azure100美金使用开源的Azure 管理面板 网站Cloudflare使用CDN后如何获取前端真实客户IP Win10 共享文件夹(设置账户密码与终止所有连接) 戴尔PowerEdge R430设置RAID0 安装WINDOWS10
Gravatar头像的镜像使用Cloudflare Workers反代自建Win10蓝牙链接wifi热点网络和Win10使用蓝牙共享网络分享满5美元提现,每天签到和购物返现的网站
使用Google Drive定时备份WordPress和国外VPS挂载 安装DirectAdmin error while loading shared libraries: libssl.so.6 ssh下Mysql导出和导入(转) Vultr自定义镜像ISO 安装2003/XP系统图文教程(转) [转]squid for WIN + DNSPOD 搭建CDN服务器手记 华为网盘站长通道开启,诚邀站长共成长 CentOS/RHEL Linux安装EPEL第三方软件源 Win10蓝牙链接wifi热点网络和Win10使用蓝牙共享网络分享 Nginx 502解决方法(www.qvob.com测试可用) 用SSH(Shell)上传文件到远程服务器的方法(转香草吧噗)
标签聚合
wordpress 网盘 系统 升级 php 插件 Cloudflare linux vps 免费 debian 代码 服务器 DirectAdmin 域名 安装 LNMP 月捐 ubuntu centos
分类
  • Linux
  • VPS服务器
  • windows
  • wordpress
  • 域名相关
  • 建站分享
  • 教程学习
  • 数据库类
  • 未分类
  • 资源分享
友情链接
  • QQTM论坛
  • 轨迹博客
  • semnew
  • 撸羊毛
  • 娃娃博客
  • 午夜客
  • 2.int.ru
  • 天下无鱼
  • vzone
  • 怪鸟博客
  • logdns.free.fr
  • 我喔喔喔
  • 豆博
  • xiaofengsky.free.fr
  • 夜狐
  • 李子博客
  • 陈否否
  • QQPCC
  • 爱购啦
  • 朱志瑞
  • 寥寥后花园
  • 死老鬼
  • 回到未来博客
  • Shucheng Li
  • 小沨记事本
  • 傻子-跸西的blog
  • 我的图库
  • 麦麦同学
AD

COPYRIGHT © 2022 Xinai.De. ALL RIGHTS RESERVED.@ 网站运行:@ 服务器运行状态

Theme Kratos Made By Seaton Jiang