申请免费阿里SSL证书以及整合nginx

SSL( Secure SocketLayer ) / TLS(Transport Layer Security)

 是保证服务器和客户端安全通信的一种协议。简单来说,就是对传输信息进行加解密保证安全的协议。HTTP报文通过SSL的加解密变成了安全的HTTPS。https 可以理解为“ HTTP over SSL/TLS ”,通过 http 协议传输的内容很容易被偷看和篡改,为了安全. 就为 http 协议再加上了一层 SSL/TLS 安全协议,所以就有了 https 。其中 SSL 是“ Secure Sockets Layer ” 的缩写,是“安全套接层”的意思。 TLS 是 “Transport Layer Security” 的缩写,是 ” 传输层安全协议 ” 的意思。 SSL 和 TLS 是同一个东西的不同阶段,理解为同一个东西也行
在这里插入图片描述
在这里插入图片描述

一.申请免费SSL证书

1.登录阿里账号, 左侧导航栏找到SSL证书, 如下图:

在这里插入图片描述

2.依次点击, ‘立即购买’->选择品牌 ’Symantec’ -> 证书类型’免费型DV SSL’ -> 保护类型’1个域名’ -> 域名个数’1个’ -> 购买数量‘1’ -> 购买时长’1年’ -> ‘立即购买’; 如下图:

在这里插入图片描述
注意:
 这里有个坑, 可能是阿里的套路: 当你第一次点击选择品牌’Symantec’时, 证书类型选项中是没有’免费型DV SSL’这个选项的, 如下图:
在这里插入图片描述
此时你需要点击最后一个选项’增强型OV SSL’, 才会出现’免费型DV SSL’(如果不行, 那就把所有选项都点击一遍):
在这里插入图片描述

3.页面跳转, 依次点击’去支付’ -> ‘立即支付’. 支付成功后点击’证书控制台’; 如下图:

在这里插入图片描述
在这里插入图片描述
页面跳转到证书控制台, 点击’申请’, 填写相关信息:
在这里插入图片描述
注:
 此处我选择文件验证的方式.
填写完毕后, 点击”下一步”:
在这里插入图片描述
下载”fileauth.txt”文件, 将此文件放到自己的服务器的nginx下,目录结构必须是.well-known/pki-validation, 步骤如下(我的nginx装在/usr/loca/nginx目录):

①.输入命令: 	cd /usr/local/nginx/html
		mkdir .well-known
		cd .well-known 
		mkdir pki-validation
②.将fileauth.txt上传至/usr/local/nginx/html/.well-known/pki-validation/目录下, 如下图:

在这里插入图片描述

③.修改配置文件nginx.conf:
	输入命令: vi /usr/local/nginx/conf/nginx.conf
在nginx.conf中添加如下代码:
	---------------------------------------------------------------
	http {
            .......nginx其它配置项;
				location = /.well-known/pki-validation/fileauth.txt {
                        root html;
            }
	}
	---------------------------------------------------------------
④.重启nginx:
	输入命令: /usr/loca/nginx/sbin/nginx -s reload
⑤.打开浏览器, 地址栏输入:weixin.bibizao.com/.well-known/pki-validation/fileauth.txt 访问成功即可. (我的域名是”weixin.bibizao.com”)

配置完已上nginx, 回到页面点击”验证”提示成功即可.

4.下载证书:

申请通过后, 点击”下载”-> 选择”Nginx”类型 -> “下载”, 如下图:
在这里插入图片描述
下载完成后, 解压, 将解压出来的两个证书文件(.key和.pem)上传至/usr/local/nginx/cert/ 目录下, 注意, cert目录本身是不存在, 需要手动创建. 如图:
在这里插入图片描述

二.整合SSL证书, 配置nginx

 为了方便管理, 我在nginx的conf目录下创建一个www文件夹, 里面存放以xxx.xxx.com.conf结尾命名的配置文件, 用于区分不同域名的配置, 如下图:
在这里插入图片描述
话不多说, 直接粘出来我的nginx配置:

1./usr/local/nginx/conf/nginx.conf文件:
#user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/$server_name.access.log;
    #tcp_nopush     on;
    sendfile        on;
    #keepalive_timeout  0;
    keepalive_timeout  65;

   #gzip  on;
   ### 引入 www文件夹下以 .conf结尾的文件 ###
   include www/*.conf;
}
2./usr/local/nginx/www/weixin.bibizao.com.conf配置如下:
server {
      listen 80;
      server_name weixin.bibizao.com;
          ### 重定向到 https 协议 ###
      rewrite ^(.*) https://$server_name$1 permanent;
      location = / {
        rewrite ^(.*) https://$server_name/school/attend/dashboard/index permanent;

      }
    }
server {
        listen 443;
        server_name weixin.bibizao.com;
        root html;

        ### SSL 设置 开始 ####
        ssl on;
        ### 刚才上传的两个证书文件
        ssl_certificate /usr/local/nginx/cert/1564640_weixin.bibizao.com.pem;
        ssl_certificate_key /usr/local/nginx/cert/1564640_weixin.bibizao.com.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!kEDH!ADH:RC4+RSA:+HIGH:+EXP;
        ssl_prefer_server_ciphers   on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout  10m;
        ### SSL 设置 结束 ####
        charset utf-8;

        location = /.well-known/pki-validation/fileauth.txt {
                        root html;
        }
        location = /school {
                rewrite ^(.*) https://$server_name/school/attend/login permanent;
        }
        location ~ ^/school/ {
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Schema $scheme;
            proxy_set_header Cookie $http_cookie;
            proxy_cookie_path / /school/;
            proxy_pass  http://127.0.0.1:8080;
        }
        location = / {
                rewrite ^(.*) https://$server_name/school/attend/login permanent;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   html;
        }
}

注:
 school是我的项目名, 部署在tomcat8080端口.
ssl_certificatssl_certificate_key分别是从阿里上下载解压出来的两张证书文件(上传至/usr/local/nginx/cert/

3.重启nginx:

 输入命令: /usr/local/nginx/sbin/nginx -s reload

注意:
 如果启动失败, 提示: nginx:[emerg]unknown directive “ssl” 错误. 因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。解决办法如下:

步骤1:

 进入nginx的解压目录, 注意, 是解压目录!!!, 我的在/usr/local/soft/nginx-1.14.1/

步骤2:

按顺序执行以下命令:
①. 命令1: ./configure --with-http_ssl_module //重新添加这个ssl模块
  注意如果没有出现错误,则直接看命令2即可; 若出现./configure:错误:SSL模块需要OpenSSL库, 原因是缺少了OpenSSL,那我们再来安装一个即可执行:yum -y install openssl openssl-devel
 等待OpenSSL的安装完成后,再执行 ./configure ,最后在执行” 命令1" 即可
②. 命令2: 执行make命令, 但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。
③. 命令3: 在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp /usr/local/soft/nginx-1.14.1/objs/nginx /usr/local/nginx/sbin/nginx

④. 命令4: 最后我们来到Nginx安装目录下,来查看是否有安装ssl模块成功。执行./sbin/nginx -V即可看到如下图:
在这里插入图片描述
④. 命令4: 命令5: 重启nginx:

/usr/local/nginx/sbin/nginx -s reload

GG, 大功告成

NG配置完成后访问不到原因总结:

1.服务器没有开放443端口, 解决: 进入服务器控制台添加443端口安全组
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值