前提

首先我们要有一台自己的服务器,并且部署到了我们的服务器中,通过nginx转发访问。详细部署过程可以看Hexo部署到云服务器

申请SSL证书

首先我们要拥有一个域名。本文使用的是腾讯云注册的域名。接着申请免费的SSL域名证书。

腾讯云首页登录后搜索SSL(其他网站类似)

image-20200511140201601

这是我申请到的www.kylin.show的ssl证书也就是现在这个博客地址的证书。

image-20200511140315454

接下来我们点击申请免费证书进行申请

image-20200511140421939

image-20200511140436996

填写相关的信息。通用名称我填写的是www.kylin.show所以访问这个网址是有证书的。你申请其他的二级域名(例如:blog.kylin.show)也是可以的,记得配置DNS解析到服务器上即可。

image-20200511140501304

image-20200511140820294

之后点击下一步。验证域名即可

image-20200511140838707

申请成功之后,等待验证。验证成功之后就会出现以下画面

image-20200511140953946

Nginx 服务器证书安装

SSL证书申请成功之后,将其文件点击下载到本地上。

image-20200511141126048

文件名是申请SSL证书的域名。解压后可得

image-20200511141226077

我们使用的Nginx服务器,点击Nginx文件夹。可以看到.key证书文件和.crt私钥文件

image-20200511141448720

接着我们需要通过Xshell6连接到我们的服务器上

image-20200511141814838

进入到我们的nginx文件目录中。我们可以通过nginx -t查看我们的nginx安装目录。由图可知我们的nginx安装目录在/etc/nginx/中。

image-20200511141946042

如果你是根据我的前面的文章部署hexo到服务器的会,目录应该一样。不一样就通过命令查看安装位置。接着我们通过cd /etc/nginx/进入安装目录

image-20200511142148524

在这目录下查看是否存在conf目录。没有的话在此目录下通过mkdir -p conf创建出一个conf目录

接下来我们要将我们下载的SSL证书和密钥文件传送到服务器中我们刚刚创建的conf目录下。

这里我使用的是FileZilla,点击进入下载页。进行下载安装即可

image-20200511142716404

打开FileZilla软件,连接服务器,和Xshell一样。

image-20200511143127601

登录成功之后就能看见以图形化界面查看我们的云服务器上的文件了!

image-20200511143447808

此时在这个软件中我们通过右边的文件管理。进入到我们下载的SSL证书文件的目录。

image-20200511143634547

一次右键点击上传。上传成功之后刷新服务器上的conf目录。就可以发现这两个目录已经存在云服务器中了。我们还可以通过云服务器命令验证 cd conf进入到nginx安装目录下的conf目录通过ls查看当前目录下的文件。可以看到我们上传的ssl证书和密钥!

image-20200511143824200

接下来编写nginx配置文件通过vim /etc/nginx/nginx.conf。修改server

image-20200511144047443

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name www.domain.com;
#证书文件名称
ssl_certificate 1_www.domain.com_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_www.domain.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
}
}

注意证书名称的修改!!:wq保存退出

image-20200511144400027

由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用listen 443 ssl 代替 listen 443ssl on。按照我写的文章部署到云服务器的不用考虑版本问题。

cd /在服务器的根目录下通过./sbin/nginx -t查看配置文件是否存在问题

image-20200511144816343

没有存在问题!在通过 service nginx restart重启nginx服务。接下来就能通过https://www.kylin.show访问到网站了(https://你的域名)

image-20200511151140263

image-20200511151250560

可能出现并非完全安全即是小锁没锁上的,是你当前页面引用了http协议的资源!

HTTP 自动跳转 HTTPS 的安全配置

我们的网站已经可以通过HTTPS访问到了,但是还是可以通过HTTP访问到我们的网站。这时

我们就要配置访问http时自动跳转https的安全配置。很简单

再次编写nginx的配置文件vim /etc/nginx/nginx.conf(nginx的安装路径)。在配置文件中的http括号内再次编写一个server。注意位置,这是一个新的serer。

image-20200511150357870

image-20200511145500220

1
2
3
4
5
6
7
server {
listen 80;
#填写绑定证书的域名
server_name www.domain.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}

保存退出:wq

cd /在服务器的根目录下通过./sbin/nginx -t查看配置文件是否存在问题

image-20200511150446300

没有问题。重新启动nginx服务service nginx restart

image-20200511150535755

此时在通过http://www.kylin.show访问它就会自动跳转到https://www.kylin.show。成功!直接通过域名访问也是通过https协议了!

GIF