给个人博客加https协议

677 阅读3分钟

这是我参与更文挑战的第1天,活动详情查看: 更文挑战

如何获取ssl证书

我域名是从阿里云买的,所以就可以从阿里云申请免费的ssl证书。登录阿里云直接搜ssl然后,去购买页面根据下图的选择方式就能获取免费的ssl证书

image.png

如何通过申请和下载

现在阿里云很贴心,按照第一步的步骤购买了以后,就去ssl证书控制台,然后按照要求填写申请证书的必填信息。

image.png

填写完了以后就是验证,验证的话就需要按照阿里云给信息去要申请的域名,解析一个 TXT记录,前面说过阿里云现在,贼鸡儿贴心。你填完信息以后,点击验证的时候。他会帮你去申请的域名添加一条 TXT记录并且域名解析。下一步,就是等签发证书,我在网上看到的教程基本上都是说一个半天才能签发。但我验证完以后马上就验证通过了。然后就点击下载证书,选择在 nginx 上安装的证书。现在完成以后就会看到两个文件一个是 xxx.pem (这个就是CA签名好的证书)xxx.key (证书公钥) 。

如何将下载好的证书上传到阿里云ECS服务器中

我用的是macOS,所以在命令行终端自带shell的sftp功能进行上传,可以根据下图进行连接

image.png

或者直接在命令行终端中直接敲命令 : sftp root@xxx.xxxx.xx.xx (服务器公网IP地址),然后就会让我们输入服务器登录密码,输入完成后就可以使用sftp往服务器上传文件了,可以使用sftp的 put 指令进行上传。上传前,最好先在服务器中 /etc/nginx 中新建一个 cert 文件夹。

// put  要上传的证书文件地址   上传到服务器的文件夹地址
put  /Usr/Desktop/4465440_www.xinxinsteel.cn.pem   /etc/nginx/cert

如何在云服务器上的nginx中安装ssl证书:

  • 监听443端口
server   {

 listen 443 ssl;   // 这个是新版的nginx(1.16.x)推荐的监听方式 

#1.16.x之前版本的方式

# ssl on;

#服务器名称就填要使用https证书的 域名地址

 server_name www.xinxinsteel.cn;

# 证书文件地址

 ssl_certificate /etc/nginx/cert/4465440_www.xinxinsteel.cn.pem; 

 ssl_certificate_key /etc/nginx/cert/4465440_www.xinxinsteel.cn.key;

 ssl_session_timeout 5m;

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

 ssl_prefer_server_ciphers on;

 location / {

  add_header 'Access-Control-Allow-Origin' '*';

  proxy_pass https://sincerestainless.gitee.io/index/;

 }

}
  • 监听80端口
server   { 

     listen    80;

     server_name www.xinxinsteel.cn;

     # http请求转换到https

     rewrite ^(.*) https://$server_name$1 permanent;

     location / {

      #root  /usr/share/nginx/html/xinxinweb/xinxin;

      #index welcome.html welcome.htm;

      #add_header 'Access-Control-Allow-Origin' '*';

     }

}

注意: 我们前面在nginx中监听了 80 443端口,一定要去云服务器的安全组设置白名单,相当于在公网ip开放 80 和 443 端口,不然是无法访问网站页面的。

最后要测试一下刚才的nginx配置对不对

  1. nginx -t
  2. 如果测试没问题,就可以直接重启nginx服务器 nginx -s reload
  3. 去浏览器试一试,你就发现网站地址自动使用了https协议