Hexo升级网站为HTTPS访问

  1. Hexo升级网站为HTTPS访问
    1. 安装工具软件 certbot-auto
    2. 使用 certbot-auto 申请泛域名证书
    3. 配置Nginx
    4. FAQ:

Hexo升级网站为HTTPS访问

本文档主要介绍域名 netheroone.cn 的泛域名证书是如何通过 Let’s Encrypt 申请,并通过配置Nginx,实现通过SSL加密HTTP通道,使用HTTPS访问网站。

操作系统:CentOS7.3,hexo版本:4.2.0,主题:3-hexo,Nginx版本:1.17.8

安装工具软件 certbot-auto

certbot-auto 是用于申请 ssl 证书的工具软件,使用上和 certbot 软件几乎一致。

yum install python2-certbot-nginx
cd /usr/bin/
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

使用 certbot-auto 申请泛域名证书

注意:将下面的域名和邮箱替换

/usr/bin/certbot-auto certonly -d "netheroone.cn" -d "*.netheroone.cn" --email xumeng32@126.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

其中

-d 是域名(domain)配置,支持多个域名,二级域名使用 “*.主域名” 形式
–email 填写自己邮箱
–manual 表示手动交互
–preferred-challenges 使用 DNS 方式校验域名所有权
–server Let’s Encrypt ACME v2 版本使用的服务器不同于 v1 版本,需要显示指定。

执行后进入操作交互流程:

1) 是否同意 Let’s Encrypt 协议要求,按 y 同意确认;
2) 询问是否对域名和机器(IP)进行绑定按 y 绑定;
3)域名验证 dns 解析增加 TXT 配置,对申请域名添加 TXT 解析,名称为 _achme-challenge,值为交互模式所给出的值;

此步骤需要在域名管理页面的 dns 服务配置中添加对应 TXT 解析(本博所购买域名来自阿里云的万网,因此直接在阿里云DNS配置页面根据上面显示信息配置即可);

添加解析后,需要先验证解析是否成功,新打开一个登陆窗口执行如下命令:

dig -t txt _acme-challenge.numas.ltd

查看输出的结果是否正确,本博客的响应中包含以下内容,表示响应正确,即可进入下一步

... 

;; ANSWER SECTION:
_acme-challenge.numas.ltd. 600    IN    TXT    "ejrcwsVrfPv58vL2FMIg3RHyNnYjFJvYg3yHHqgaGgU"

...

4)按下回车进入验证;这一步会在 /etc/letsencrypt/live/netheroone.cn/ 下会生成 4 个文件:

  • cert.pem >> Apache 服务器端证书
  • chain.pem >> Apache 根证书和中继证书
  • fullchain.pem >> nginx所需 ssl_certificate 文件
  • privkey.pem >> 安全证书 KEY 文件

如果无法生成建议根据提示信息重新配置 3)域名验证 dns 解析,我自己也是配置两遍才成功。

配置成功后显示如下(建议保存):

letsencrypt证书最多只有90天,90天之后我们需要重新注册证书。nginx 环境,就只需要用到 fullchain.pem 和 privkey.pem 两个证书文件。

certificate:/etc/letsencrypt/live/netheroone.cn/fullchain.pem

key:/etc/letsencrypt/live/netheroone.cn/privkey.pem

这两个文件的路径在下面配置Nginx会用到。

配置Nginx

直到这一步,证书已经就绪,只要配置好Nginx即可完美升级https。我的nginx的安装目录是/usr/local/nginx这个目录,修改nginx.conf文件。

vim /usr/local/nginx/conf/nginx.conf

原server配置如下:

server {
    listen 80;
    charset utf-8;
    root   /var/www/Blog;
    index  index.htm index.html index.jsp;
}

修改后如下:

# 配置301重定向
server {
    listen 80;
    server_name netheroone.cn;
    return 301 https://netheroone.cn$request_uri;
}
# 配置SSL
server {
    listen 443 ssl;
    charset utf-8;
    root   /var/www/Blog;
    index  index.htm index.html index.jsp;

    ssl_certificate /etc/letsencrypt/live/netheroone.cn/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/netheroone.cn/privkey.pem;
    ssl_session_timeout  5m;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
}

修改后重启Nginx服务完成配置修改,如果重启时提示错误,可参考后面[FAQ](# FAQ:)处理。

# nginx -s reload

配置后可通过https方式打开网站,同时通过http方式打开网站也会重定向到https网址打开。

http方式打开网站重定向如下图:

重定向后通过https请求结果如下图:

PS:如果网站使用了Gitalk,注意修改GitHub上Gitalk的网址配置

FAQ:

出现错误如下:

nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:148

nginx缺少http_ssl_module模块,编译安装的时候带上–with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/root/Downloads/nginx-1.17.8目录

(1)切换到源码包:

cd /root/Downloads/nginx-1.17.8

(2)配置信息:

./configure --with-http_ssl_module

(3)配置完成后,运行make进行编译,千万不要进行make install,否则就是覆盖安装。

make

(4)然后备份原有已经安装好的nginx

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

(5)停止Nginx,正常命令直接 nginx -s stop就可以

nginx -s stop

如果关不掉,就直接Kill掉进程。ps aux | grep 进程名 查看进程占用的PID号。

ps aux | grep nginx

杀掉查出来的PID就可以了,kill -9 PID 命令用于终止进程。必须先kill掉root对应的PID才能进行下面的nobody的PID。(PS:最后一行24393是grep命令出来的进程,不需要kill)

kill -9 24364
kill -9 24365

(6)将刚刚编译好的nginx覆盖掉原有的nginx

cp ./objs/nginx /usr/local/nginx/sbin/nginx

(7)启动nginx

nginx

(8)通过下面的命令查看是否已经加入成功。

nginx -V

显示结果如下说明SSL加入成功。

nginx version: nginx/1.17.8
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --with-http_ssl_module

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:Hexo升级网站为HTTPS访问

文章字数:1.4k

本文作者:F_numen

发布时间:2020-02-01, 13:43:47

最后更新:2020-02-11, 00:33:37

原始链接:https://netheroone.cn/archives/59e5f2e4.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/