Nginx的CA证书使用总结

Posted 云水之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx的CA证书使用总结相关的知识,希望对你有一定的参考价值。

Nginx的CA证书使用总结:


今天给大家介绍下,在nginx作为服务器时,网站的CA证书怎么添加?我们都知道,http方式通信是非常常见的,常用在对安全要求不高的站点的交互访问,那么对于有交易或存在敏感信息的网站,就需要我们使用http的另一变体https来替代,因为它基于http协议,并添加的ssl的安全处理,所以网站的交互数据是经过加密的,较安全,具体实现过程如下所示。

 

·     证书购买

·     证书配置

·     验证测试

·     特殊说明

 

 

一、证书购买

一般情况,申请证书时需要添加DNS解析,具体的步骤一般运营商都会给予详细说明,这里不进行赘述。当然,也需要填写证书保护的处理的域名,一般非免费的证书可以支持多个域名处理,免费的一般只能支持一个域名的设置。

 

如果要使自己的网站支持https通信,并能被所有浏览器识别支持,那么就需要自己申购证书,可以到阿里、万维网及其它证书运营商处申请购买,当然自己也可以制作CA证书,只不过不被浏览器识别,一般提示该证书未被认证。购买之后,一般不需要额外的证书再配置,比如:在阿里购买的证书一般包含三个文件:

214087265700561.key、

214087265700561.pem、

214087265700561.pfx、

pfx-password.txt,

并且前三者文件名称相同,密码文件默认一串pfx数字密码。

 

二、证书配置

在Nginx中,如果要添加CA证书支持,就需要开启对http的ssl安全加密处理模块,也就是with-http_ssl_module的支持。另外,需要重新编译Nginx源码,将前面的模块引入进来,最后,在替换Nginx的二进制启动文件,重新加载启动Nginx即可生效。

 

1、建立cert目录

cd  /usr/local/nginx/conf

mkdir cert

 

进入nginx配置根目录,并建立cert目录,将所有CA证书文件放入其中即可。

 

2、添加SSL支持

cd  /home/nginx-1.8.1

首先,查看下Nginx当前参数:

nginx  -V

 

其次,复制这些参数添加对with-http_ssl_module支持,并执行:

./configure  --prefix=/usr/local/nginx--with-http_stub_status_module --add-module=./src/nginx-http-concat-master--with-http_ssl_module

 

然后,make编译Nginx源码(不要makeinstall,否则覆盖了),并替换二进制nginx文件

make

 

在替换二进制nginx文件前,需要停掉正在运行的nginx服务,后再替换:

nginx  -s  stop

cp objs/nginx  /usr/local/nginx/sbin/    

 

重新启动即可:

nginx

 


3、nginx.conf配置

完成了对ssl的支持后,就是对nginx.conf核心配置文件进行配置了,主要是开启443 ssl端口及服务的监听,以及开启ssl和证书相关的配置,具体如下:

cd  /usr/local/nginx/conf/nginx.conf

vim  nginx.conf

添加如下内容:

ssl on;

ssl_certificate   cert/214087265700561.pem;

ssl_certificate_key   cert/214087265700561.key;

ssl_session_timeout 5m;

 

第一行,开启对http协议的ssl处理;

第二行,指定pem密钥文件位置;

第三行,指定证书的key文件位置;

第四行,设置ssl的session超时时间为5分钟;

 

4、http到https转发

cd  /usr/local/nginx/conf/nginx.conf

vim  nginx.conf

添加如下内容,使http默认访问方式自动跳转到https协议方式:

if ($scheme = http)

    return 301https://$server_name$request_uri;

 

三、验证测试

如何验证是否支持https加密通信协议?我们只需要打开任何浏览器,并在地址栏中输入我们证书所关联的域名即可。此时,如果添加成功,那么会在浏览器域名左边或其它位置出现一个锁的图标或安全的字样(不同浏览器略有不同),具体如下:


 

 

四、特殊说明

1、同时支持http和https

如何同时支持http和https?其实很简单,我们只需要将ssl on;注释掉。

 

2、多个域名的SSL处理

多个域名的SSL配置与上面的配置相同,比如:一个主机和多个虚拟主机的域名处理,上面演示的是主机的配置,而虚拟机中的配置也是相同的。如果所购买的证书为非免费型的证书,那么一个证书可以同时支持多个域名,比如:一级域名已经配置了,那么二级域名就可以不用再配置了。

 

 

 

 

 

以上是关于Nginx的CA证书使用总结的主要内容,如果未能解决你的问题,请参考以下文章

HttpsOpenSSL自建CA证书及签发证书nginx单向认证双向认证及使用Java访问

由中间CA(链)签名的NGinx SSL证书认证

HTTPS自签CA证书 && nginx配置https服务

nginx中的CA证书的实现详解

Nginx 与 Tomcat 配置Https 总结

Nginx配置https-免费自签名CA证书