为网站配置HTTPS传输协议
2018-05-12更新
全站启用https访问,http的80端口转发到https的443端口,nginx配置可以这样写:
1 | server { |
————
HTTPS已经成为一个正规网站必备的配置,因为它的安全性,使得浏览器和服务器之间的数据传输,不再能够轻易地被“抓包”,HTTP正在被打上“不安全”的标签。为自己的网站配置HTTPS,无论从用户体验上,搜索引擎优化(SEO)上,还是数据传输的安全性上来说,都已经成为了必不可少的操作。今天就来记录一下老亨利站点实现HTTPS的过程。
之前(年初到现在4个月的样子)用过一段时间的宝塔面板,一键安装LNMP,一键建站,一键配置Let’s Encrypt提供的免费https证书服务并自动续订,还有更多免费功能,对小白来说简直不能太友好。现在为什么不用了呢,原因就在于它实在太友好,你只需懂一点服务器和建站的基本常识,这里点一点,那里点一点,环境就起来了,网站就搭好了,绑上域名就能通过https协议访问了,完全不用管它对你的服务器做了什么,修改了什么默认的配置。这对一个要时刻知道哪个路径下有什么文件,不允许有什么文件,对服务器的环境要尽量保持干净的轻微强迫症患者来说怎么能受得了呢。不过也多亏使用了宝塔面板,让我学到不少东西,从一个建站小白升级为建站大白。
花260买了3年腾讯云服务器,败了个新域名,搞了备案,⬅️整个过程要从春节前开始算起了。这几天又学了下Docker,个人博客重新搭起来嘿!扯远了,这些东西详细记录起来,应该好好写写的。今天只记录一下用Docker和CertBot申请https证书的事吧。
去Let’s encrypt官网看看
中文翻译来自Chrome的ImTranslator插件。
官网建议使用Shell访问的人使用CertBot ACME客户端,于是转到CertBot官网看看
选好Linux版本(Debian 9)和服务器端配置(Nginx)。
看到可以使用Docker来运行CertBot。于是果断在服务器上~$ docker search CertBot
一下,看到官方版本的image name。
~$ docker pull certbot/certbot
,把certbot的官方image拉到本地。
~$ mkdir letsencrypt
,在当前user的路径下,创建letsencrypt路径,用来映射docker容器的路径,之后申请的证书和私钥就存放在这里
1 | ~$ docker run \ |
-it
进入docker交互模式
--rm
容器停止运行后自行销毁
-p 80:80
把docker容器的80端口映射到服务器的80端口
-p 443:443
把docker容器的443端口映射到服务器的443端口
-v $PWD/letsencrypt:/etc/letsencrypt
把docker容器的/etc/letsencrypt路径映射到当前user的/letsencrypt(即 /home/username/letsencrypt)路径下
certbot/certbot
根据使用certbot的image创建容器
certonly
certbot容器的交互指令
Enter回车后,就会创建CertBot容器并进入CertBot交互模式,按照提示输入自己的信息即可(创建方式,你的邮箱,你的域名等)。
创建成功后,在/home/username/letsencrypt/live/
路径下就可以找到证书和私钥。
letsencrypt目录结构如下:
1 | root@debian:/home/username# tree letsencrypt/ |
修改nginx的配置文件
1 | server { |
这里我同样是用docker创建的nginx容器,来运行这个静态网站。命令如下:
1 | ~$ docker run \ |
-d
后台运行
-p 443:443
把docker容器的443端口映射到服务器的443端口
-p 80:80
把docker容器的80端口映射到服务器的80端口
-v $PWD/conf:/etc/nginx/
在/home/username/路径下创建了conf目录来把docker容器的nginx配置文件映射到这里
-v $PWD/oxo.red:/usr/share/nginx/html
在/home/username/路径下创建了oxo.red目录来把docker容器的nginx html目录映射到这里
-v $PWD/letsencrypt:/etc/letsencrypt
把本地的letsencrypt目录映射到docker容器中,使nginx容器能够找到letsencrypt中的证书和私钥
--name oxo.red
容器的名字
nginx
使用nginx的image创建容器。
配置完成,浏览器访问oxo.red,即可看到
为网站配置HTTPS传输协议