Nginx双证书ECC/RSA配置

大家好,我是你们的老朋友Alex。今天教大家使用nginx配置证书,双证书!

Nginx1.11.0版本后提供了ESA/ECC双证书的支持,以下是参考链接:

https://www.mf8.biz/ecc-nginx-double-cert

http://www.freebuf.com/articles/database/155912.html

ECDSA (椭圆曲线数字签名算法) 就是我们所说的 ECC 证书了,相比 RSA, ECC 证书具有安全性高, 处理速度更快的优点,尤其适合在移动设备上使用。但是其唯一的缺点就是兼容性问题,古代的 XP 和 Android2.3 不支持这种加密方式。

于是双证书就出现了,它可以在 TLS 握手的时候根据客户端支持的加密方法选择对应的证书, 以向下兼容古代客户端。

首先更新我们的openssl更新到1.0.2h,避免CVE-2016-2107 的影响

wget https://github.com/openssl/openssl/archive/OpenSSL_1_0_2h.tar.gz

tar -zxvf OpenSSL_1_0_2h.tar.gz

cd openssl-OpenSSL_1_0_2h/

./config --prefix=/usr/local --openssldir=/usr/local/openssl

Make

Make test

Make install

mv /usr/bin/openssl /usr/bin/openssl.bak

mv /usr/include/openssl /usr/include/openssl.bak

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

echo “/usr/local/ssl/lib” >> /etc/ld.so.conf

ldconfig –v

之后查看当前版本

openssl version –a

安装nginx,我选择的是1.11.1版本

wget http://nginx.org/download/nginx-1.11.1.tar.gz

tar -zxvf nginx-1.11.1.tar.gz

如果有需要安装ct模块的同学,请下载

wget -O nginx-ct.zip -c https://github.com/grahamedgecombe/nginx-ct/archive/v1.3.2.zip

cd nginx-1.11.1/

./configure --prefix=/usr/share/nginx--conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log--error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock--pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body--http-fastcgi-temp-path=/var/lib/nginx/fastcgi--http-proxy-temp-path=/var/lib/nginx/proxy--http-scgi-temp-path=/var/lib/nginx/scgi--http-uwsgi-temp-path=/var/lib/nginx/uwsgi --add-module=../nginx-ct-1.2.0--with-openssl=../OpenSSL_1_0_2h --with-http_v2_module --with-http_ssl_module

#这里的--with-openssl=../OpenSSL_1_0_2h指定之前安装的openssl文件夹

Make

Make install

之后申请证书的问题,就用下面两个链接处脚本即可!具体方法请大家百度

https://github.com/Neilpang/acme.sh

https://github.com/certbot/certbot

~/.acme.sh/acme.sh --issue -d 域名 --standalone-k ec-256

~/.acme.sh/acme.sh --issue -d 域名 --standalone-k 3072

申请到两个证书分别为ECC和RSA,可惜只有90天有效期,大家90天后再续期就可以了!

我们继续编辑nginx.conf配置文件

ssl_certificate和ssl_certificate_key分别放入两个证书文件以及密钥,

使用openssl dhparam -out dhparam.pem 4096生成4096位DH-Key,在conf文件中使用ssl_dhparam指定证书密钥交换密钥即可!

ssl_prefer_server_ciphers on指定优先采取服务器算法,如果需要启用ct使用以下

ssl_ct on;

ssl_ct_static_scts /path/to/sct/dir;

最后配置我们的自定义算法

ssl_ciphers处大家使用openssl验证,来确定优先使用哪种证书验证

openssl ciphers -V 'EECDH CHACHA20:EECDH CHACHA20-draft:EECDH AES128:RSA AES128:EECDH AES256:RSA AES256:EECDH 3DES:RSA 3DES:!MD5' column –t

我的第一选择为RSA,具体还要其他算法,下面只是一些例子

链接:https://maoxian.de/2016/08/1436.html

我们以配置文件启动nginx即可

/usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf

我们可以使用以下链接验证我们网站目前SSL的状态

https://www.ssllabs.com/ssltest/index.html

https://myssl.com/

(o゜゜)o[BINGO!]

本文来自企鹅号 - 黑白之道媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的小碗汤

https原理以及golang基本实现

大致上分为两类,基于key的加密算法与不基于key的加密算法。现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使用。

18130
来自专栏Golang语言社区

使用Let's Encrypt的SSL证书配置HTTPS手记

前段时间,看见很多大会都在分享全站HTTPS的经验。HTTPS固然好,前提是SSL证书,并且签发证书的机构要靠谱。沃通的CA证书就相继被Mozilla和Goog...

43070
来自专栏owent

接入letsencrypt+全面启用HTTP/2

之前我的域名只有owent.net和www.owent.net买了SSL证书,现在有letsencrypt可以拿到免费的SSL签证,就稍微花了点时间把我的域名的...

11020
来自专栏java一日一条

如何针对老旧浏览器设置 HTTPS 策略

几天前,一位朋友问我:都说推荐用 Qualys SSL Labs 这个工具测试 SSL 安全性,为什么有些安全实力很强的大厂家评分也很低?我认为这个问题应该从两...

38620
来自专栏Spark学习技巧

大数据集群安全系列之kafka使用SSL加密认证

Apache kafka允许客户端通过SSL进行连接。默认情况下SSL是禁止状态,可以根据需要开启。本文就是浪尖亲测,开启SSL认证。 1,为每一个kafka ...

974100
来自专栏進无尽的文章

精析-苹果开发者证书的实现机制

      在iOS开发过程中,不可避免的要和证书打交道,真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题,但是如果掌握了真...

21920
来自专栏FreeBuf

能DDoS的勒索木马FireCrypt进一步分析

近日,FreeBuf上对于一类FireCrypt木马做了相关的报道:流氓会武功:这款勒索软件不仅能勒索,还能DDoS。哈勃分析系统拿到了相关样本,并对其进行了分...

21190
来自专栏JetpropelledSnake

Python Web学习笔记之SSL,TLS,HTTPS

19530

获得具有商业签名的TLS证书

如果您打算托管一个可公开访问的使用HTTPS的网站,那么您将需要安装一个具有商业签名的TLS证书,这样访问您网站的人就不会在浏览器中收到有关不安全连接的警告。

12130
来自专栏信安之路

SSL_TLS 攻击原理解析

本文主要描述 HTTPS 中对于 ssl/tls 加密的攻击手法,什么是 HTTPS 呢?百度百科的解释如下:

27100

扫码关注云+社区

领取腾讯云代金券