前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx如何配置https证书

nginx如何配置https证书

作者头像
挥刀北上
发布2019-09-17 16:34:12
3.1K0
发布2019-09-17 16:34:12
举报
文章被收录于专栏:Node.js开发Node.js开发

上一篇文章我们简单介绍了https的原理,这篇文章我们用nginx来配置一下https的证书。

首先我们来回顾一下https的原理,首先我们看图:

第一步、客户端发送请求,服务器将证书发送给客户端,证书的本质是第三方CA的私钥加密的内容,其内容是服务器的公钥。

第二步、客户端接收到证书后,用操作系统和浏览器内置的CA公钥去匹配验证证书,如果能解密,说明请求的是目标网站,不是中间人。

第三步、用CA公钥解密证书,并将服务器公钥解密出来。到这一步,客户端安全的拿到了服务器端的公钥。

第四步、生成随机数,用服务器公钥加密随机数发送到服务器端。

第五步、服务器端用服务器私钥解密信息,得到随机数

我们仔细阅读上面的流程,我们将客户端和服务器端用到的工具分一下类:

客户端用到的如下:

1、CA机构的公钥:已经内置到系统中不需要处理

2、公钥证书:服务器端发送给客户端的,客户端会自动用CA公钥解密证书

3、服务器公钥:客户端用CA公钥解密证书获得

4、随机数生成对称秘钥:自动生成

服务器端:

1、公钥证书 需要去申请

2、服务器端私钥 需要服务端手动生成

客户端需要的工具不需要我们配置,主要是服务器端的工具,我们看到服务器端需要公钥证书和服务器端私钥,这两个东西如何来的呢?

首先我们在服务器端用ssh-keygen命令来生成公私钥,在服务器端命令行中执行,ssh-keygen会在服务器的"~/.ssh"目录中生成两个文件 id_rsa,id_rsa.pub,前者不带pub后缀的为私钥,后者带pub后缀的为公钥。

得到了服务器端的公钥和私钥后,我们需要用服务器端的公钥去申请证书,这里大家如果是去向一些收费的CA机构申请证书的话,CA机构的客服一般会想你要你的服务器公钥和你的网站信息,然后CA机构用CA机构的私钥加密你的服务器公钥得到公钥证书,然后CA机构会将公钥证书颁发给你。

经过上面两部操作我们就会得到公钥证书和服务的私钥,拿到这两个文件我们可以使用配置https协议的网站了。

这里要说明一下,我们向有些CA机构申请证书时,它不需要你提交服务器公钥,而是它会自己生成一对服务器的公私钥,然后把服务器公钥用CA私钥加密成证书,和服务器私钥一起发送给你,阿里云的免费证书就是这样操作的。

首先在阿里云的控制台点击 SSL证书

进入相应的页面,然后点击购买证书:

进入相应页面,我们购买免费的DV证书即可,当然如果你要求安全级别更高,可以购买 DV或者EV:

这样我们就购买完证书了,然后根据域名去申请证书就可以了,这里和传统的证书机构申请证书还不太一样,一些其他的CA机构需要你把服务器公钥和网站信息发给客服,客服会把证书颁发给你。

购买了免费DV证书后,就可以去申请了,接着我们去申请证书,界面如下:

我们在阿里云购买的是申请证书的权利,所有可申请的证书全在这个列表中了,点击申请,填写要部署https的域名:

1处我们填写我们的域名,可以是二级域名或者一级域名,因为是免费的不能用通配符。

2处我们选择自动DNS验证,这里验证申请的证书用的域名所有权是你的,也就是说你不能用别人的域名申请https证书。

3处这里需要我们呢生成csr文件,这个文件是干嘛的呢?其实就是你的网站的信息,你可以让阿里云帮你生成,这样的话你就选择系统生成,如果你不愿系统生成也可以自己生成。

自己生成csr的话可以去网上找免费的工具来生成,如下:

我一般是选择系统生成。

之后提交申请,申请通过后,会在下面栏目中出现证书下载地址:

我们点击下载即可得到两个文件,这里我们选择与nginx匹配的版本:

两个文件如下:

pem结尾的为公钥证书,key结尾的为服务器私钥,私钥一定不要泄露出去。

然后我们通过改写nginx的配置文件nginx.conf来配置https服务器。

代码语言:javascript
复制
server {
 listen 443;
 server_name localhost;
 ssl on;
 root html;
 index index.html index.htm;
 ssl_certificate   cert/a.pem;
 ssl_certificate_key  cert/a.key;
 ssl_session_timeout 5m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 location / {
     root html;
     index index.html index.htm;
 }
}

配置有点多,但是主要的是1、4、7、8行的配置。

第一行监听443端口,https默认端口为443,第四行开启ssl,第7行配置公钥证书,第8行配置服务器私钥。

然后重启nginx服务即可。

以上便是用nginx配置https证书的过程及原理

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nodejs全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档