上次我写了一篇选购海外域名的文章,有需要请看。
买好域名之后,如果没有本文讲的SSL/TLS证书,那么你的网站不够安全,并且别人访问只能用http://,浏览器会提示不安全,也颇为丑陋,因此需要申请或购买SSL/TLS证书,对访问网站的流量进行加密。本文并不是讲复杂的协议(我也不懂?),只是从应用层面教大家申请证书,就用下面一张图来简略的、生动的理解。
下面说如何申请免费证书,我用过两款赫赫有名的免费证书:Let’s Encrypt和cloudflare自签证书。如果网站加了cdn,则直接使用cloudflare的自签证书最简单;如果网站没有加cdn,那就可以使用Let’s Encrypt申请免费证书了。
一、使用cloudflare自签证书
- 用邮箱注册cloudflare账号
- 登录cloudflare,添加站点,并选择免费free方案
进行域名托管,以namesilo为例,在你的域名注册商改变其名称服务器,改成cloudflare的名称服务器。完成域名托管之后,需要稍等一段时间(几分钟到几十分钟左右吧),在cloudflare检查名称服务器成功后即为成功。
配置DNS,把域名映射到你的服务器公网IP(前提是你的网站已经在服务器的80端口运行,即可以直接通过http://你的公网IP 访问),并勾选“小云朵”,勾选小云朵就开启了cdn,再访问你的域名,你的服务器IP就被隐藏在cloudflare cdn之后了。这就成功了,你就可以通过https://你的域名访问了。
最后说一句,在cloudflare的SSL/TLS设置中可以选择加密模式,我选择的是“灵活”,即cloudflare和你的源服务器之间是不加密的,这样虽然安全性差一点,但少一次加密速度应该会快一些。
二、使用Let’s Encrypt申请证书
对于不使用cdn的网站,需要在服务器端使用脚本申请证书,脚本的官方地址是
https://github.com/acmesh-official/acme.shgithub.com/acmesh-official/acme.sh
官方脚本提供了好几种方式申请证书,我只说我最常用的一种。
ssh连接上你的服务器后,安装acme.sh脚本。
curl https://get.acme.sh | sh -s email=你的邮箱
必须在你的域名服务商那里设置,把域名映射到你的服务器IP。再使用http方式生成证书,此时必须要保持你的80端口处于闲置(没有被其它应用占用)和开放(防火墙开放80端口)状态。
acme.sh --issue -d 你的域名 --standalone
一切顺利的话,证书就会发布到服务器目录/root/.acme.sh/你的域名/。
申请证书就这么简单,至于怎么在你的网站上配置使用你的证书,那就涉及很多nginx或者apache之类的配置了,本文就不涉及了。
相比之下,如果你只是部署一个wordpress的博客,似乎还是使用cloudflare的自签证书更简单,不过其实对小白来说,两种方式还都是挺难的…还得多多查询各种资料才行!