记一次从HTTP升级HTTPS彻底指南

前言

目前大多数网站都是在用的HTTPS,为何要用HTTPS你们必定是都知道的,从HTTP升级到HTTPS,也是为网站的安全性来考虑的。HTTPS是在HTTP的基础上加上了SSL安全认证,是正所谓HTTPS=HTTP + SSL。为了方面本身写文章,相信大多数同窗都有搭建本身的我的博客(本身纯手写或者使用静态模板),大多数应该是服务在本身的Nginx服务上或者使用Github托管,使用Nginx作代理的起初是经过HTTP来访问的,因此须要本身手动去配置成HTTPS的。html

至于为何推进我去作这件事情?缘由有三点nginx

  1. 当下HTTPS很流行
  2. 本身搭建的网站固然要为网站的安全性考虑
  3. 在面试过程当中面试官问到了我HTTPS相关知识,而且是怎么从HTTP升级到HTTPS的

Start

如何来得到证书

搭建HTTPS须要用到SSL证书,这个证书是由CA认证机构来颁发的,通常都是须要RMB的,固然也有一些免费的。FreeSSL就是一个提供免费HTTPS证书申请的网站,笔者就是从这上面申请的。面试

首先进入这个网站的首页浏览器

能够看到有一个搜索框和一个(建立免费的SSL证书字样)按钮。在搜索框中输入你的域名,点击按钮进入证书建立页面。

在这里选择证书类型,笔者选择的就是图片上的。在验证类型上面,由于是第一次踩坑,第一次选择了DNS,后续的认证没有经过,经过Google和看大佬们的踩坑日记以后,发现文件验证更过过一些,因此就尝试去选择文件验证。

CSR生成由于官网推荐,因此就选择了离线生成。安全

输入邮箱以后点击建立,点击以后会提示打开KeyManager,这个是用来管理证书的,若是本身电脑上没有能够去点进去官网下载。服务器

若是已经安装好了,点击 再次尝试启动KeyManager,就会启动这个应用,开启启动由于这是一个管理私密信息的平台,因此让你输入密码,进去以后就会提示 CSR生成成功,请返回浏览器继续操做。回到浏览器以后点击继续就会看到这样一个东西。

这是用来验证你的网站是不是可访问的。按照步骤验证便可

  1. 先点击右下角的下载文件
  2. 将文件保存在你的网站根目录的*.well-known/pki-validation*目录下,能够按照文件路径来配置。
  3. 存在好以后本身在浏览器中访问一下是不是可访问的,能够访问就配置完成了。
  4. 点击验证。

验证经过以后就会看到证书信息,你看到的应该和这个不太同样(应该是有个经过KeyManager管理的按钮) session

点击使用KeyManager管理,就可使用那个管理平台来管理你的证书了。测试

进入KeyManager证书管理就会看到你的证书。网站

点击导出证书,选择相应的服务器,笔者是使用的Nginx服务器,选择Nginx就能够,点击导出就能够得到SSL证书。

如何来配置Nginx HTTPS

第一步得到证书已经完成,下面就须要进行配置了。服务器配置主要分为如下几步:ui

  1. 将证书传送到你的服务器上
  2. 修改nginx.conf文件配置
  3. 云服务器443端口开发
  4. http重定向到https
  5. 测试访问完成

一、将证书传送到你的服务器上

笔者是使用的腾讯云的服务器(阿里云也能够,都是学生价,便宜),建议将证书放在便于管理的地方,建议放在/etc/ssl下,看名字也知道是用来存在ssl证书的。

将证书传入到服务器上可使用Linux的scp命令

#若是是文件
scp 你的ssl证书文件  root@你的服务器ip:/etc/ssl
# 若是是文件夹
scp -r 你的ssl证书文件夹 root@你的服务器ip:/etc/ssl
复制代码

若是传的是文件,进入服务器上进行解压,解压完成以后,就会获得两个文件:一个是crt后缀的,一个是key后缀的。

二、修改nginx.conf文件配置

将证书放在服务器上以后须要去修改nginx.conf配置。由于以前是使用的80端口,可是HTTPS使用的443端口,因此要修改一下。

通常Nginx上都有443端口的配置,可是注释的,只要打开注释修改一点信息便可。

下面是个人443端口的配置。

server {
    listen       443 ssl http2 default_server;
    listen       [::]:443 ssl http2 default_server;
    server_name  kim.cckim.cn;
    root         /usr/share/nginx/html;

    ssl_certificate "/etc/ssl/xxxxx/xxxxx.crt";
    ssl_certificate_key "/etc/ssl/xxxxx/xxxxx.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 / {
            root    /usr/share/nginx/html/public;
            index   index.html;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }
}
复制代码

将全部的注释打开,下面说一下须要修改的地方

  1. server_name:若是要443端口和80端口并存的话,建议写上server_name,当命中这个域名的时候就会来找这个server配置。
  2. ssl_certificate:将ssl证书里面的crt后缀的文件的绝对路径写在这里。
  3. ssl_certificate_key:将ssl认证里面的key后缀的文件的绝对路径写在这里。
  4. 配置你的网站的location代理。

nginx.conf上443端口的配置就基本完成了

三、 云服务器443端口开发

若是你的云服务器上没有开发443端口的话须要去服务器平台的安全组中开发443端口。

操做完成以后就先访问一下,可能你会发如今浏览器中输入kim.cckim.cn(输入你的域名)是是没法访问的,可是输入https://kim.cckim.cn(仍是输入你的域名)就能够访问。

是由于域名到nginx默认走的是http,还须要对http作一下重定向到https上。

四、http重定向到https

重定向只须要在nginx.conf文件中配置一下便可。

server {
    listen       80;
    server_name  kim.cckim.cn;
    return 301 https://$host$request_uri;
}
复制代码

这里server_name写你本身的域名便可。再次直接使用域名访问的话就能够了。

End

笔者应该是配置HTTPS比较靠后的一批了,相信已经有不少同窗完成。此次把本身的配置过程记录向来,但愿能够给没有配置过HTTPS的同窗一些帮助。

相关文章
相关标签/搜索