前提
首先我们要有一台自己的服务器,并且部署到了我们的服务器中,通过nginx转发访问。详细部署过程可以看Hexo部署到云服务器
申请SSL证书
首先我们要拥有一个域名。本文使用的是腾讯云注册的域名。接着申请免费的SSL域名证书。
腾讯云首页登录后搜索SSL(其他网站类似)
这是我申请到的www.kylin.show的ssl证书也就是现在这个博客地址的证书。
接下来我们点击申请免费证书进行申请
填写相关的信息。通用名称我填写的是www.kylin.show
所以访问这个网址是有证书的。你申请其他的二级域名(例如:blog.kylin.show)也是可以的,记得配置DNS解析到服务器上即可。
之后点击下一步。验证域名即可
申请成功之后,等待验证。验证成功之后就会出现以下画面
Nginx 服务器证书安装
SSL证书申请成功之后,将其文件点击下载到本地上。
文件名是申请SSL证书的域名。解压后可得
我们使用的Nginx服务器,点击Nginx文件夹。可以看到.key证书文件和.crt私钥文件
接着我们需要通过Xshell6连接到我们的服务器上
进入到我们的nginx文件目录中。我们可以通过nginx -t
查看我们的nginx安装目录。由图可知我们的nginx安装目录在/etc/nginx/
中。
如果你是根据我的前面的文章部署hexo到服务器的会,目录应该一样。不一样就通过命令查看安装位置。接着我们通过cd /etc/nginx
/进入安装目录
在这目录下查看是否存在conf
目录。没有的话在此目录下通过mkdir -p conf
创建出一个conf目录
接下来我们要将我们下载的SSL证书和密钥文件传送到服务器中我们刚刚创建的conf
目录下。
这里我使用的是FileZilla,点击进入下载页。进行下载安装即可
打开FileZilla软件,连接服务器,和Xshell一样。
登录成功之后就能看见以图形化界面查看我们的云服务器上的文件了!
此时在这个软件中我们通过右边的文件管理。进入到我们下载的SSL证书文件的目录。
一次右键点击上传。上传成功之后刷新服务器上的conf目录。就可以发现这两个目录已经存在云服务器中了。我们还可以通过云服务器命令验证 cd conf
进入到nginx安装目录下的conf目录通过ls
查看当前目录下的文件。可以看到我们上传的ssl证书和密钥!
接下来编写nginx配置文件通过vim /etc/nginx/nginx.conf
。修改server
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
保存退出
由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0
以上请使用listen 443 ssl
代替 listen 443
和 ssl on
。按照我写的文章部署到云服务器的不用考虑版本问题。
cd /
在服务器的根目录下通过./sbin/nginx -t
查看配置文件是否存在问题
没有存在问题!在通过 service nginx restart
重启nginx服务。接下来就能通过https://www.kylin.show
访问到网站了(https://你的域名)
可能出现并非完全安全即是小锁没锁上的,是你当前页面引用了http协议的资源!
HTTP 自动跳转 HTTPS 的安全配置
我们的网站已经可以通过HTTPS访问到了,但是还是可以通过HTTP访问到我们的网站。这时
我们就要配置访问http时自动跳转https的安全配置。很简单
再次编写nginx的配置文件vim /etc/nginx/nginx.conf
(nginx的安装路径)。在配置文件中的http括号内再次编写一个server。注意位置,这是一个新的serer。
server {
listen 80;
#填写绑定证书的域名
server_name www.domain.com;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}
保存退出:wq
cd /
在服务器的根目录下通过./sbin/nginx -t
查看配置文件是否存在问题
没有问题。重新启动nginx服务service nginx restart
此时在通过http://www.kylin.show
访问它就会自动跳转到https://www.kylin.show
。成功!直接通过域名访问也是通过https协议了!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0HoZxwg-1601295691873)(https://cdn.jsdelivr.net/gh/kylincw/images/20200511151048.gif)]