借助acme.sh免费开启网站的HTTPS(Apache2环境)
本文仅记录无套路搞定网站HTTPS的方法。网上搜索的资料实在太杂乱了,就连acme.sh官方文档也不够详尽。
主要就三步:生成证书、安装证书、配置SSL。下文以Ubuntu 16.04(版本不重要) + Apache2为例。默认已经安装crontab
、openssl
等基本工具。网站目录也是默认的 /var/www/html/ 。
生成证书
1、先做准备工作:
1 | # 进入服务器的用户(一般是root)目录然后创建文件夹 |
2、安装acme.sh,它可以帮你搞定免费证书:
1 | # 此时已经在~/.acme.sh/目录下,开始安装 |
3、生成证书,以 test.com 域名作为下文示例(当然你需要改成你自己的):
1 | acme.sh --issue -d test.com --apache |
到此证书生成完毕。可以看到命令执行后会提示Success。
安装证书
1、进入apache安装目录创建存放证书的文件夹:
1 | # Ubuntu通过仓库安装的Apache默认就在这,如果你不在这,那么请自行进入相应目录 |
2、开始安装证书,这是一个带参数的一次执行命令:
1 | # 这里的3个文件名也是自定义的,自己能区分即可,但后缀最好保持.pem |
配置SSL
1、检查并开启SSL模块:
1 | a2enmod ssl |
2、修改SSL配置文件(关键步骤):
1 | cd /etc/apache2/sites-available |
打开default-ssl.conf文件后,重点关注这几个配置:
1 | # 这个要是开启状态on,默认就是on的 |
记得:wq保存退出。最后刷新配置:
1 | a2ensite default-ssl.conf |
再用浏览器打开 https://test.com ,完美。当然,你需要保证你的服务器是开启了443端口的,默认情况下一般都没问题。用 netstat -lp
命令测试一下,看到Local Address里有https就可以了。
开小灶
一般来说,我们需要将HTTP访问强制重定向到HTTPS,咋搞?
1、检查开启相关模块:
1 | a2enmod rewrite |
2、修改文件HTTP配置:
1 | vim /etc/apache2/sites-available/000-default.conf |
3、在80端口节点下增加如下三行(注意是增加不是直接复制粘贴啊!):
1 | <VirtualHost *:80> |
4、保存后重启Apache即可:
1 | service apache2 restart |
参考
文档里讲解了大部分使用说明,但一些细节没提到,会导致部署失败。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Pig Cat!
评论