分享一个 HTTPS A+ 的 nginx 配置

测试地址:https://www.ssllabs.com/ssltest/

nginx 配置,只贴出 SSL 相关,需要将配置放到 server {} 位置。

首先开启 ssl

listen 443 ssl;server_name www.example.com;ssl on;ssl_certificate /etc/ssl/certs/ssl-bundle.crt;ssl_certificate_key /etc/ssl/private/www_example_com.key;

其中 ssl-bundle.crt 是网站证书,www_example_com.key 是证书私钥,如何获取这两个文件,请自行搜索。

需要注意的是,大部分 CA 提供的证书都是多级,所以可能需要我们把多个证书合并成一个,这样可以减少浏览器额外下载中间证书的次数。

生成 dhparam.pem

$ openssl dhparam -out dhparam.pem 4096

配置到 nginx

ssl_dhparam /etc/ssl/certs/dhparam.pem;

协议和 ciphers 选择,ciphers 的选择比较关键,这个配置中的 ciphers 支持大多数浏览器,但不支持 XP/IE6 。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_stapling on;ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";ssl_prefer_server_ciphers on;

ssl session 配置

ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;

HSTS 配置,这个对评分影响也比较大,但如果开启这个,需要全站开启 HTTPS 。

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

完整配置文件

server {        listen 443 ssl;        server_name www.example.com;        ssl on;        ssl_certificate /etc/ssl/certs/ssl-bundle.crt;        ssl_certificate_key /etc/ssl/private/www_example_com.key;        ssl_dhparam /etc/ssl/certs/dhparam.pem;        ssl_session_cache shared:SSL:10m;        ssl_session_timeout 10m;        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        ssl_stapling on;        ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";        ssl_prefer_server_ciphers on;        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";        location / {                # pass
        }
}

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2015-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java 成神之路

RSA 非对称加密原理(小白也能看懂哦~)

1.9K9
来自专栏Android干货

浅谈RSA加密算法

3845
来自专栏java小白

java实现非对称加密

3483
来自专栏用户2442861的专栏

C/C++用QT写的五子棋源码

1492
来自专栏静默虚空的博客

[Java 安全]加密算法

Base64编码 算法简述 定义 Base64内容传送编码是一种以任意8位字节序列组合的描述形式,这种形式不易被人直接识别。 Base64是一种很常见的编码规范...

7976
来自专栏小工匠技术圈

【Java小工匠聊密码学】--非对称加密--ElGamal

  ElGamal算法,是一种较为常见的加密算法,它是基于1985年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有...

1053
来自专栏日暮星辰

SSL/TLS加密检测脚本testssl.sh

以前SSL检测常用工具就是ssllabs的:https://www.ssllabs.com/ssltest/ 以及国内的https://myssl.com/.

5042
来自专栏小工匠技术圈

【小工匠聊密码学】--对称加密--概述

  对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文“原始数据”和“加密密钥“一起经过特殊加密算法处理后,使其变成复杂的加密密文发...

782
来自专栏Java学习网

Java 开发中实现DES/3DES/AES 三种对称加密算法方法学习

对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施凡是涉及到安全需求,都会优先考虑对称加密算法。

2365
来自专栏Java架构师历程

Android java.security.NoSuchProviderException: no such provider: Crypto

由于项目的优化改进,用到AES+RSA加密传输数据。于是,在网上摘录了网友们的AES算法,如下:

2754

扫码关注云+社区

领取腾讯云代金券