问题引入

叮咚~ 您有新的邮件,请注意查收

image-20200721210335409

以为又是什么垃圾邮件, 点开一看, 嗯? 卧槽~ 我的域名备案已经通过啦.

要知道, 域名没备案完成前我一直用的ip地址访问, 相信经历过的朋友们都知道, 那样的话一个url是长长的一串, 非常冗余还不美观. 现在域名备案通过了,我就可以直接使用域名访问啦, 我立马登上服务器配置nginx .

但是, 我在使用域名进行访问的我的博客时, Chrome浏览器提示我的网站不安全! 不安全! 啊啊啊~~ Why ??

image-20200721205852123

虽然点击高级,继续进入也可以进入网站. 但要是别人访问我博客时也来这一出, 那岂不是人都吓跑了? 不行!
为了解决这个问题, 我百度了一下, 知道了原来我们默认访问是使用的HTTP协议, 只需要将HTTP协议升级成HTTPS协议就可以解决这个问题.

那么, 什么是HTTPS协议呢 ?

HTTPS协议在数据进行传输之前,会对数据进行加密,然后再发送到服务器。由于数据是经过加密的,这样即使我们的传输的信息被他人拦截获取后,也无法知晓其含义. 达到安全传输数据的目的.

明白了HTTPS协议的含义后, 怎么把HTTP协议升级成HTTPS协议呢? 接下来就跟着我一起来操作.

准备工作

  • 一个已经备案的域名
  • 一台云服务器

创建SSL 证书

这里我们使用的是FreeSSL提供的免费一年的的ssl证书, 一年后过期了又来重新创建就是了. 若资金充足也可以选择付费SSL证书

进入FreeSSL官网, 创建免费ssl证书

image-20200721171541204

创建SSL证书

  1. 输入你的邮箱

  2. 选择证书类型为ECC

  3. 点击创建. 请先完成前2步再执行此步骤

    image-20200721185004748

生成SSL证书

  1. 点击创建后会弹出该选项.若没有安装KeyManager, 请先下载,下载完成后打开并后台运行, 返回浏览器点击再次尝试启动KeyManager即可.
image-20200721172709071
  1. 点击后会跳转至KeyManager软件中,当看到CSR生成成功就可以了.
image-20200721185208832
  1. 返回浏览器,并点击继续按钮, 会就看到以下界面
image-20200721185739994
  1. 进入阿里云控制台, 点击云解析DNS, 点击解析设置按钮
image-20200721185948568
  1. 然后点击添加记录按钮
image-20200721190052065
  1. 将步骤3中获得的数据填入
image-20200721190425576

⚠️警告:

  • 记录类型一定要选择TXT
  • 步骤3中的TXT记录的值对应此步骤要填的主机记录的值
  • 步骤3中的记录值对应此步骤要填的记录值
  1. 返回浏览器, 点击配置完成,检测一下
image-20200721190937356
  1. 若看到以下检查结果则说明没有问题,可以接着往下走. 若不是以下这个结果, 请仔细核对之前的步骤有无错误
image-20200721191107098

下载SSL证书

  1. 打开KeyManager, 点击证书请求 -> 对应域名的更多->详情->查看PEM
image-20200721192100758 image-20200721192248492
  1. 复制私钥,然后返回浏览器, 进入FreeSSL, 注册一个账号. 然后进入控制台的证书列表, 点击上传私钥

    image-20200721191916882 image-20200721192822801

    ⚠️警告: 私钥加密密码自己一定要记住, 待会儿有用的!!!

  1. 点击确认上传后, 可以看到是否存在私钥那一项已经变绿
image-20200721193111009
  1. 点击侧边栏的订单列表 -> 对应域名的状态项, 然后点击保存到KeyManager

    image-20200721200221042
  2. 然后在KeyManager软件中的所有证书表格就有记录啦

image-20200721200424667
  1. 点击更多 ->详情 -> 查看PEM, 复制证书和证书链以及私钥(PKCS8), 下一步需要用到

    image-20200721200720831
  1. 进入阿里云控制台,然后进入ssl证书(应用安全), 点击上传证书
image-20200721194124289
  1. 将步骤6复制的证书和证书链以及私钥(PKCS8)数据分别填入证书文件及私钥. 证书名称随意填
image-20200721194358239 image-20200721200017624
  1. 点击确定后可以看到显示已签发
image-20200721200048044

部署SSL证书

  1. 进入KeyManager,进入所有证书 -> 更多 ->导出证书 . 由于我使用的是nginx, 所以我选择是nginx, 大家根据自己的情况进行选择.

    image-20200721201518877
  1. 导出后是个zip压缩包, 解压后里面有两个文件,后缀分别.crt 和 .key
image-20200721201915949
  1. 将这两个文件上传到服务器并记住其位置, 然后ssh连接服务器进行配置nginx . 编辑nginx的配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name blog.imashimari.com;
    root /usr/share/nginx/html;

    ssl_protocols TLSv1.2;
    ssl_certificate "/etc/pki/nginx/asd/server.crt"; # .pem文件的路径
    ssl_certificate_key "/etc/pki/nginx/asd/private/server.key"; # .key文件的路径
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
    }
  2. 配置后保存, 然后输入nginx -s reload命令进行重启nginx 使刚才的配置生效

检查SSL证书是否生效

我们可以使用myssl验证我们的https是否成功,

image-20200721203605654

填写域名后点击立即检测若评级结果为Aˉ及其以上,那么恭喜你,你已经成功了.

⚠️警告: 若你的检测结果提示引用了不安全的HTTP资源, 如下图所示

说明你的网站上还有http协议的js, css, jpg或者其他资源,所以导致浏览器仍然提示该网站不安全.

博主之前就遇到了这个问题, 最后将该网站的全部http协议的资源全部换成了https协议的资源, 这样就解决啦

image-20200721205057298

再次访问我们的网站, 可以看到浏览器已经没有提示我们的网站不安全了, 只有一把小锁静静地在那.

image-20200721205502279 image-20200721205409102

结语

博主在百度查找资料时走了很多弯路, 为了避免其他有相同问题的小伙伴们跟我一样走弯路(ps 其实是为了我以后续费ssl时有参考,实在不想再去重新再去百度一遍了) , 故将此次的升级HTTPS的过程详细记录了下来 . 有些地方可能博主表达的不是很清楚, 请大家多多担待, 遇到问题的话欢迎留言, 我看到的话会尽力帮助大家解决的