由于小程序和Ios端的需要,公司的项目需要从原来的http协议扩展到https协议,因为项目本来就有采用nginx做了负载均衡,但是之前配置nginx的时候并没有配置关于https的内容,所以需要做这部分的内容。关于nginx实现动静分离和负载均衡可看我之前的博客。

1.数字证书生成

证书的购买要看公司的具体需求,我这里选用的是阿里云,关于证书部分的官网是这个地址:https://help.aliyun.com/product/28533.html?spm=5176.video54216.3.1.JkjOas

我选定的是最便宜的一款,不要钱,不过要找到它可能得费点时间哦,毕竟免费的东西嘛,阿里也把它隐藏的比较深。

 

 它的缺点就是,只能保护一个域名,不支持通配符域名(意思就是说,比如你这个证书绑定的是baidu.com,它就只能保护www.baidu.com和baidu.com,而不能保护注入a.baidu.com这类子级域名),还有就是只能用一年。并且一个阿里云账户只能购买20个证书。

总的来说,对于我们搞测试来说,够用了,如果用作商业用途,那就最好建议花钱买。

 购买过程我就不赘述了,购买完成以后,来到我的阿里云控制台,就可以看到刚才购买的证书了。

nginx 更换SSL 重启 nginx更新ssl证书_nginx 更换SSL 重启

接下来一步是补全信息,主要是你想要绑定的域名和一些你的个人信息,如下图所示。

nginx 更换SSL 重启 nginx更新ssl证书_tomcat_02

因为我选择的域名验证类型是DNS验证,所以还需要到dns配置一番,具体怎么配置在整个阿里云的平台上都有详实的记录。我就不赘述了。

审核很快,因为都是机器审核的,差不多也就10分钟就审核成功了。审核成功后的列表如下。以下是我申请的两个证书。

nginx 更换SSL 重启 nginx更新ssl证书_nginx_03

2.为nginx配置ssl证书

点击上述图片中的下载项,就进入如下页面。

nginx 更换SSL 重启 nginx更新ssl证书_运维_04

其实这个页面把具体的操作说的十分清楚,并且还有视频教程。我简要地再总结一下。

第一步:下载证书for nginx

点击下载,就会得到一个证书文件夹,其中包含两个文件。

nginx 更换SSL 重启 nginx更新ssl证书_apache_05

第二步:在nginx的conf目录下新建cert文件夹,将上述的两个文件放入该文件夹
第三步:修改nginx关于https部分的配置

我就直接贴我的配置吧:



1  server {
 2         listen 443;
 3         server_name www.wonyen.com wonyen.com;
 4         ssl on;
 5         root html;
 6         index index.html index.htm;
 7         ssl_certificate   cert/xxxxxxxx684.pem;
 8         ssl_certificate_key  cert/xxxxxxxxxx0684.key;
 9         ssl_session_timeout 5m;
10         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
11         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
12         ssl_prefer_server_ciphers on;
13         location ~ \.(gif|jpg|jpeg|png|bmp|swf|eot|svg|ttf|woff|mp3|mp4|wav|wmv|flv|f4v|icon)$ {  
14             root    apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;  
15             expires 30d; 
16         }
17         location ~ \.(json|txt)$ {  
18             root    apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;  
19             expires 15d; 
20         }
21         location ~ \.(css|js)$ {  
22             root    apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;  
23             expires 1d; 
24         }
25         location ~ ^/\w+Att{
26             proxy_pass http://xdxfile.com;
27         }
28         location ~ ^/\w+Fill{
29             proxy_pass http://xdxfile.com;
30         }
31         location = /crowdFundSave{
32             proxy_pass http://xdxfile.com;
33         }
34         location = /crowdFundRewardSave{
35             proxy_pass http://xdxfile.com;
36         }
37         location = /garbageCategorySave{
38             proxy_pass http://xdxfile.com;
39         }
40         location = /mailTestAjax{
41             proxy_pass http://xdx8082.com;
42         }
43         location = /mailSendAjax{
44             proxy_pass http://xdx8082.com;
45         }
46         location = /mailOldAjax{
47             proxy_pass http://xdx8082.com;
48         }
49         location = /wechatAuthority{
50             proxy_pass http://xdxall.com;
51         }
52         location = /compressImg{
53             proxy_pass http://xdxfile.com;
54         }
55         location = /compressImgAll{
56             proxy_pass http://xdxfile.com;
57         }
58         location = /lifeMenuHome{
59             proxy_pass http://xdxfile.com;
60         }
61         location = /lifeOrderHome{
62             proxy_pass http://xdxfile.com;
63         }
64         location = /lifeCenterAjax{
65             proxy_pass http://xdxfile.com;
66         }
67         location = /startBusiness{
68             proxy_pass http://xdxfile.com;
69         }
70         location ~ ^/ueditor1_4_3{
71             proxy_pass http://xdxfile.com;
72         }        
73         location = /freightByIp{
74             proxy_pass http://xdx8082.com;
75             proxy_redirect    off;
76             proxy_set_header  Host             $host;
77             proxy_set_header  X-Real-IP        $remote_addr;
78             proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
79         }
80         location ~ .*$ {
81             index index;
82             proxy_pass http://xdx.com;
83          }
84         error_page  404              /Error404.jsp;
85         error_page   500 502 503 504  /Error404.jsp;
86         location = /Error404.jsp {
87          proxy_pass http://xdxfile.com;
88         }
89     }



有关于ssl的配置集中在7--12行,其他的配置就跟普通的http配置无二致。

第四步:重启nginx服务器

经过如上几个步骤,你的nginx服务器就既可以支持http,又可以支持https了,是不是很简单,赶紧试试吧。