hexo博客部署云服务器开启https

分类:教程

​ 自己的博客也开通一段时间了,一直没有开启https,今天开启顺便记录一下自己的开启过程。

我的服务器是阿里云的,域名也是再阿里云购买,所以在此选择SSL证书也是阿里云的DV免费版。

获取证书

我这里选择的是阿里云SSL证书,DV免费版,有效期一年。

阿里云SSL证书申请流程可以到阿里云官方网站获取。

在验证域名所有权审核通过后,就可以到SSL证书管理控制台下载对应服务器的证书。

我使用的是Nginx,所以下载对应Nginx版本,解压下载文件后得到两个文件:.key文件和.pem文件。

上传证书到服务器

再服务器上创建一个文件夹,用于存放证书文件,我的路径是:/home/SSL

Nginx配置文件中证书设置

编辑Nginx的配置文件,如/usr/local/nginx/conf/nginx.conf

在配置文件的后边添加下述配置保存重启nginx

server {
    listen 443;
    server_name sfanonline.cn;     # 填写绑定证书的域名
    ssl on;
    ssl_certificate /home/SSL/2710787_www.sfanonline.cn.pem;
    ssl_certificate_key /home/SSL/2710787_www.sfanonline.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    # 按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件
    ssl_prefer_server_ciphers on;
    location / {
        root /www/wwwroot/hexo;    # 站点目录
        index  index.html index.htm;
    }
}

如果使用全站加密,有些用户不知道https访问情况,可以让服务器自动把http的请求重定向到https。再Nginx支持rewrite

再nginx的server listen 80配置中添加

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

这样的配置,实现http80请求进来,重定向为https了。

在配置文件配置可能的报错

在centos中,配置nginx的https时,出现如下错误。

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:102

解决方法如下

1.到解压的nginx目录下

./configure --with-http_ssl_module

2.执行以上仍然出现问题

yum -y install openssl openssl-devel
再执行./configure

3.重新执行

./configure --with-http_ssl_module
make   ,切记不能make install会全覆盖

4.把原来nginx备份,把新的nginx覆盖旧的

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

把新的nginx覆盖旧的
cp objs/nginx /usr/local/nginx/sbin/nginx

以上操作就可以解决问题

有些还可能再执行4时候出现

cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy

用cp -rfp objs/nginx /usr/local/nginx/sbin/nginx解决

测试nginx是否正确

/usr/local/nginx/sbin/nginx -t

(nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful)

重启nginx

/usr/local/nginx/sbin/nginx -s reload