Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

二叶草 2020年1月24日16:20:54使用教程评论阅读模式

本文关键讲的就是说怎么让自身的免费网站从HTTP更新为HTTPS,应用的是 Let's Encrypt的资格证书。事实上也就是说一个Let's Encrypt 完全免费资格证书获得实例教程 。 需不需要上HTTPS,,说一个小故事。

从前有个网站,后来有个广告,没了

作为一个门户,自然不想让在被别人浏览的时候,出现莫名的广告(运营商劫持)。这时候,HTTPS的价值就体现出来了。 HTTPS的好处还有很多,但单单这一条,就够我花心思去升级了。 (其实主要目的是提升网站Biger :)

Let's Encrypt 简介

如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从 Let's Encrypt 获得网站域名的免费的证书。这篇文章也主要讲的是通过 Let's Encrypt + Nginx 来让网站升级到HTTPS。

Certbot 简介

Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的,个人门户的服务器系统是CentOS 7,这篇教程也是通过在个人门户上启用HTTPS的基础上完成的。

获取免费证书

1.安装Certbot客户端

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

2.获取证书

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

这个命令会为 example.com 和 www.example.com 这两个域名生成一个证书,使用 --webroot 模式会在 /var/www/example 中创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器。这个命令在大多数情况下都可以满足需求,

但是有些时候我们的一些服务并没有根目录,例如一些微服务,这时候使用 --webroot 就走不通了。certbot 还有另外一种模式 --standalone , 这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。我们有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

证书生成完毕后,我们可以在 /etc/letsencrypt/live/ 目录下看到对应域名的文件夹,里面存放了指向证书的一些快捷方式。

这时候我们的第一生成证书已经完成了,接下来就是配置我们的web服务器,启用HTTPS。

Nginx 配置启用 HTTPS

门户系统使用的是Nginx 服务器来转发请求,这里贴一下我的Nginx配置。

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

主要是监听 443 端口,启用 SSL,并配置 SSL 的证书路径(公钥,私钥的路径)。
通过这些配置 我们就已经成功的完成了 Https 的启用。
现在打开我的门户 就可以看到标有 安全 的字样。

自动更新 SSL 证书

配置完这些过后,我们的工作还没有完成。 Let's Encrypt 提供的证书只有90天的有效期,我们必须在证书到期之前,重新获取这些证书,certbot 给我们提供了一个很方便的命令,那就是 certbot renew。
通过这个命令,他会自动检查系统内的证书,并且自动更新这些证书。
我们可以运行这个命令测试一下

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

我在运行的时候出现了这个错误

Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

这是因为我的api.diamondfsd.com生成证书的时候使用的是 --standalone 模式,验证域名的时候,需要启用443端口,这个错误的意思就是要启用的端口已经被占用了。 这时候我必须把nginx先关掉,才可以成功。果然,我先运行 service nginx stop 运行这个命令,就没有报错了,所有的证书都刷新成功。

证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。 这件事情就可以直接交给定时任务来完成。linux 系统上有 cron 可以来搞定这件事情。
我新建了一个文件 certbot-auto-renew-cron, 这个是一个 cron 计划,这段内容的意思就是 每隔 两个月的 凌晨 2:15 执行 更新操作。

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

--pre-hook 这个参数表示执行更新操作之前要做的事情,因为我有 --standalone 模式的证书,所以需要 停止 nginx服务,解除端口占用。
--post-hook 这个参数表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用

最后我们用 crontab 来启动这个定时任务

Let's Encrypt 使用教程,让你的网站拥抱 HTTPS

至此,整个网站升级到HTTPS就完成了。 总结一下我们需要做什么

  1. 获取Let's Encrypt 免费证书
  2. 配置Nginx开启HTTPS
  3. 定时刷新证书

本文来源于:Let's Encrypt 使用教程,让你的网站拥抱 HTTPS-变化吧门户
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧门户观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
二叶草
部落冲突找回游戏进度教程分享 使用教程

部落冲突找回游戏进度教程分享

部落冲突找回游戏进度教程分享,这个在技术层面没什么难度,以前SC不给找或不提供正式受理渠道是受制于人力,这个事挺耗费人力成本的。现在SC牛逼了壮大了客服人多了,他们也慢慢有人力去帮玩家做这个事了。当然...

发表评论