大家在开发网站,或者对外提供REST接口时,从安全性方面的考虑或要求出发,都要求使用Https协议来进行访问,使用Https就需要有SSL安全证书。目前,绝大多数的证书提供商提供的证书都是收费的,而且费用还不低,证书一般是按时间收费,一个证书一年动辄就要上千元。这笔费用对于稳定运营的公司来说还好,但对于一些创业公司或者创业者来说,这笔开销能省最好。
虽然,有的证书提供商或云服务提供商,会提供一些免费证书,但这些免费证书有使用时间限制,一般为一年,而且总的免费证书申请数量也是有限制的,所以并不能满足长期的使用需求。今天就给大家介绍一种获取免费SSL证书的方法。
目录
使用【certbot】获取免费的【Let’s Encrypt】证书
Let’s Encrypt是一家免费、开放、自动化的证书颁发机构(CA),其为公众的利益而运行,任何拥有域名的人都可以获取并使用Let’s Encrypt的免费证书。certbot则是一款免费开源的,获取Let’s Encrypt证书的工具软件。本文接下来,给大家介绍在Linux系统下如何通过certbot获取Let’s Encrypt免费证书。
获取证书前,我们要先安装certbot,之前的certbot工具为certbot-auto,可以直接通过网站下载下来使用,但目前已不支持这种方式安装了。下面我们主要介绍在CentOS下,采用snap方式来安装certbot(snap为linux下的一款软件部署和程序包管理工具)。安装snap的命令如下:
通过snap安装certbot命令如下:
安装完certbot后,就可以开始使用它来生成SSL证书了。certbot生成证书大致有两种方式:一种是自动方式,一种是手动方式。
自动方式:certbot可以和服务器以及域名代理商进行对接,这种方式最主要的好处就是可以自动更新证书,因为certbot申请的证书有效期为3个月,到期后需要重新申请证书。采用该方式,就免去了证书到期后手动更新证书的步骤,但是需要对服务器进行相关配置,还需要域名提供商有相关对接接口,所以该方式对外部依赖较大。
手动方式:用户直接运行certbot生成证书,并在域名代理商处进行【DNS TXT】解析配置后就可以了。该方式的缺点,就是3个月域名到期后,需要手动进行证书的更新。
因为自动方式对外部依赖性大,本文主要介绍手动方式。certbot手动生成证书的命令如下:
安装完certbot后,第一次使用时,会要求你录入邮箱,以便于证书到期时通知你,还要求你同意相关许可,具体如下:
运行certbot命令手动生成证书的过程如下:
上面过程中,主要是第二步,需要到域名代理商网站下,去给申请证书的域名配置一条TXT类型的解析(比如:域名在阿里云购买的,那就到阿里云去做域名解析的配置),记录名为第一个黄框的内容,记录值为第二个黄框的内容,待该步配置完成后,在第三步敲回车并验证完第二步配置的解析成功后,就能生成需要的SSL证书了,大家可以在最后的申请证书成功的信息里看到证书的保存位置。如果大家想生成泛域名证书的话,可以在第一步输入域名时输入类似:*.demo.com的域名。待到3个月证书过期前,重新走下上面手动生成证书的流程,重新配置下就可以了。certbot的其他命令可以查看官网文档。
Nginx服务器配置SSL证书
拿到证书后,就需要配置到自己的网站服务器上。大家做网站时,大多都会选用Nginx来做反向代理,所以下面给大家讲下在Nginx下怎么配置并使用上面生成的SSL证书,具体配置如下:
如果需要做全局的SSL证书配置,可将红框的配置代码提到server配置模块外的html模块下。
------ The End ------