Typecho建站记(二)---ssl加密及域名转发
添加ssl加密
因为certbot需要用到stretch-backports,而stretch-backports在Debian自带源中是没有的,需要添加源,注意下面四行是一个命令,全部复制到终端后执行即可。
cat >> /etc/apt/sources.list<<EOF
# backports
deb http://deb.debian.org/debian stretch-backports main
EOF
然后执行更新
- apt update
安装certbot
- certbot --apache
运行后会有对话框,按下图选择对应的选项即可。
至此ssl加密已经设置完成,而且域名转发也开启了,但是此时的转发是不够完美的,还需要自己再添加规则。
完善域名转发
前面在购买域名的时候我们添加了两条解析记录,现在又设置了加密,这样的话就会出现4个网址组合,如下示例:
http://example.com
http://www.example.com
https://example.com
https://www.example.com
这样对我们的访客是不友好的,而且搜索引擎也会将这当做四个不同的网站来收录,无形中降低了网站在搜索引擎中的排名。因此我们需要把这四个域名统一起来,这里就需要用到域名转发了。上面设置ssl加密的时候,certbot已经设置好了其中一个http网址的转发,因此我们把另外一个网址添加到转发规则里面就可以了。
使用winscp登陆进服务器,进入etc/apache2/sites-available文件夹,里面的000-default.conf就是http页面的配置文件,右击---编辑,把RewriteEngine on后面的这段内容改为(红色为新添加内容)
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
但是针对https页面直接添加转发规则是不行的,因为浏览器针对https域名会先验证证书与域名是否相符,不相符的话则停止访问,因此不会触发到服务器里面的跳转规则。
因此我们需要给https://example.com也加上ssl加密,以便浏览浏览器可以继续访问我们的服务器。
首先我们需要添加https://example.com域名到服务器中,使用winscp进入etc/apache2/sites-available,把000-default-le-ssl.conf(https://www.example.com的配置文件)下载到本地,名字修改为111-default-le-ssl.conf后重新上传到原文件夹,然后右击编辑,找到ServerName www.example.com这一行,修改为ServerName example.com(注意这里的example是示例,实际操作时为你自己的域名,前面是没有#号注释的),保存。
然后ssh登陆到服务器,进入到etc/apache2/sites-enabled文件夹,给刚刚新建的111-default-le-ssl.conf做一个软链以启用这个配置。
- cd /etc/apache2/sites-enabled
- a2ensite 111-default-le-ssl.conf
重启我们的服务器,然后和前面添加ssl加密一样运行certbot,给https://example.com添加ssl加密,注意此时第四步会出现域名选择列表,选https://example.com这个域名即可。
- certbot --apache
现在我们可以给https://example.com添加转发规则了,winscp登陆进服务器,进入etc/apache2/sites-available文件夹,右击111-default-le-ssl.conf,在</VirtualHost>前面添加下列转发规则,然后保存。
RewriteEngine OnRewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com$1 [L,R=301]
自动更新证书(未验证)
lets-encrypt的免费证书只有三个月的期限,三个月后需要重新申请证书,好在certbot自带了更新证书的功能,我们要做的就是让它每三个月执行一次,只需执行下记命令添加计划任务到crontab中即可。
- echo "0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" >> /etc/crontab
至此typecho博客总算是折腾好了,可以放心的记录日常了。另ssh客户端及winscp使用可参考我前面的博文Vultr自建SS服务和超简单的自建SSR教程。没有服务器的同学可以去vultr买一个,现在vultr搞活动,通过我的推广链接https://www.vultr.com/?ref=7888839-4F注册vultr帐号有50美金的体验金。
参考文章:
另因参考文章较多,有些网页未及时收藏导致未在此列出,在此一并表示感谢。
评论
发表评论