Linux Nginx环境下配置支持HTTPS的SSL证书

Linux Nginx环境下配置支持HTTPS的SSL证书

        之前写了一篇文章《windows Apache 环境下配置支持HTTPS的SSL证书》,但是在实际生产中,项目上线部署的环境一般都是linux下的nginx,这篇文章就来记录如何在linux下nginx的环境中来配置支持SSL证书。

一、申请SSL证书需要提供的资料       

       SSL有付费和免费的。付费的话就很多选项,免费的目前在腾讯云和阿里云都可以申请。免费的SSL证书都是针对单一域名,比如hld.com、test.hld.com 这两个域名是单独的,所以是需要两个免费的SSL证书。当然如果预算足够的话,可以购买泛域名证书(泛域名证书包含主域名和所有子域名,比如域名:baidu.com,*.baidu.com,泛域名SSL证书同时包含这两项!)。这样在多个域名下就不用一个一个配置了。

       不同的SSL证书申请需要准备资料不同,这和SSL证书的验证等级有关,身份验证等级可分为4级:Class 1、Class 2、Class 3 和 Class 4(EV),级别越高,验证越严格,需要准备的资料就越多。没有域名的话,可以为IP申请SSL证书,但是不是所有的SSL证书都支持IP申请。

       下面介绍3种不同类型的证书。

(1) DV SSL证书(域名认证型):都属于Class 1 验证的SSL证书,只通过E-mail验证或基于http方式验证域名所有权即可。(我这里申请的就是此类证书

         准备资料:网站,邮箱即可。

(2)OV SSL证书( 企业认证型):各种代码签名证书和企业验证SSL证书都属于Class 3 验证的证书,需要验证证书申请单位和被授权代表的身份。

         准备材料:网站,邮箱、申请企业相关资料。

(3)EV SSL证书(扩展认证型):属于Class 4 验证的证书,需要按照国际标准非常严格地验证证书申请单位和被授权代表的身份。

        准备材料:申请人身份证,申请人授权书,营业执照,组织机构代码证,邓白氏编码,电话号码,手机,邮箱等等。

二、申请SSL证书

这里演示的是在腾讯云申请证书

1、登录腾讯云->控制台->云产品右边有个加号“+”->选择SSL证书然后保存

    

2、点击SSL证书进入申请页面

 

3、填写申请资料

 

 

4、选择域名身份验证方式

 

点击确认申请。

5、证书管理

控制台->SSL证书->证书管理

说明:这个时候这里就有一条我们刚才点击申请后的证书记录

 

 

点击详情进入页面,就能看到我们申请的证书详情

 

 

从上图可以看到,我们还需要去添加DNS解析记录,然后等待审核通过后,官方颁布证书。

6、添加DNS解析记录(已经完成这一步的盆友,请自行跳过)

说明:以下操作仅针对域名对应的域名解析商在腾讯云的情况下,若不在腾讯云,请到域名对应的域名解析商处进行解析。

1)控制台->DNS解析 DNSPod->域名解析列表

 

2)找到相应的域名,点击解析进入,添加记录然后保存

 

 

不出意外的话,大概半天不到就能通过审核(腾讯云官方的效率还是挺高的~~~)

7、下载证书

审核通过后

 

点击下载,就能得到申请的证书了。

 

 

三、接下来就是配置证书到nginx

1、打开下载的证书文件夹

腾讯云的SSL证书下载包中,有一个单独的Nginx文件夹,里面有两个文件都是我们需要的

 

我们需要把这两个文件放到我们的服务器中,推荐放到/etc/ssl/目录下

2、配置证书

1)启动nginx(已经启动过的,自行跳过这一步)

执行命令:service nginx start

2)找到配置文件所在目录

执行命令:ps -ef | grep nginx

比如我这儿显示:

 

说明:这个地方显示的nginx.conf,要用vim打开看下,因为有的服务器上只有这一个配置文件,就可以直接编辑配置。有的存在多个配置文件,要找到具体的那个配置文件来配置。像我这里这个/www/server/nginx/conf/nginx.conf,它只是一个总的配置文件,用vim打开后发现还include了其他的配置文件

 

3)使用vim打开相应的配置文件nginx.conf

 1 server
 2 {
 3     listen 443 ssl;
 4     server_name php7.isee.wang;
 5     #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
 6     #error_page 404/404.html;
 7     ssl_certificate    /etc/ssl/php7/1_php7.XXX.wang_bundle.crt;
 8     ssl_certificate_key   /etc/ssl/php7/2_php7.XXX.wang.key;
 9     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
10     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
11     ssl_prefer_server_ciphers on;
12     ssl_session_cache shared:SSL:10m;
13     ssl_session_timeout 10m;
14     error_page 497  https://$host$request_uri;
15 
16     #SSL-END
17     #PHP-INFO-START  PHP引用配置,可以注释或修改
18     include enable-php-74.conf;
19     #PHP-INFO-END
20 
21     #禁止访问的文件或目录
22     location  /
23     {
24           index index.php index.html index.htm default.php default.htm default.html;
25           root /www/wwwroot/php7.isee.wang;
26 
27     }
28 
29     #一键申请SSL证书验证目录相关设置
30     location ~ \.well-known{
31         allow all;
32     }
33 
34     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
35     {
36         expires      30d;
37         error_log off;
38         access_log /dev/null;
39     }
40     location ~ .*\.(js|css)?$
41     {
42         expires      12h;
43         error_log off;
44         access_log /dev/null;
45     }
46     access_log  /www/wwwlogs/php7.isee.wang.log;
47     error_log  /www/wwwlogs/php7.isee.wang.error.log;
48 }
49 #如果用户使用的是http协议进行访问,那么默认打开的端口是80端口,所以这里还需要做一个重定向
50 server{
51     listen 80;
52     server_name php7.isee.wang;
53     #rewrite ^/(.*)$ https://php7.isee.wang:443/$1 permanent;
54 
55     #把http的域名请求转成https
56     return 301 https://$host$request_uri;
57 }

然后保存配置文件

检验配置文件:执行命令  nginx -t

说明:如果看到successful表示文件格式证书,这时候我们就可以启动nginx服务或者重新加载nginx配置文件。
启动nginx服务:执行命令 service nginx start
重新加载配置文件:执行命令 nginx -s reload

 3、访问

 

搞定!!!

 

 

参考链接:

https://cloud.tencent.com/document/product/400/4142

https://blog.csdn.net/baofeidyz/article/details/80435929

 

posted @ 2020-10-12 16:01  欢乐豆123  阅读(2010)  评论(0编辑  收藏  举报