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 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

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

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

62810

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

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

1003
来自专栏信安之路

SSL_TLS 攻击原理解析

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

1740
来自专栏JMCui

Jenkins修改管理员密码.

前言:Jenkins修改管理员密码,我看了网上所有的教程,竟然全都是拿着一串已经加密好的111111的密文去替代config.xml文件里面的密码,然后大家的...

3524
来自专栏Pulsar-V

原 前后端密钥分配验证

1456
来自专栏面朝大海春暖花开

https请求过程

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

6372
来自专栏腾讯Bugly的专栏

iOS 中 HTTPS 证书验证浅析

导语 在 WWDC 16 中,Apple 表示, 从 2017年1月1日起(最新消息, 实施时间已延期),所有新提交的 App 使用系统组件进行的 HTTP 网...

5648
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Nginx背后的话语

本教程将引导您完成配置Discourse的步骤,使用Nginx将其移至反向代理后面。在备用代理后面移动话语为您提供了在Droplet上运行其他网站的灵活性。

1133
来自专栏滕先生的博客

聊聊 iOS 中的网络加密介绍下介绍下HTTPS交互原理介绍下我们需要做什么

2827
来自专栏北京马哥教育

SSL/TLS 原理详解

SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰。正文开始。 1. SSL/TLS概览 1.1...

3845

扫码关注云+社区