winer's Blog - Gogs
type: channel
link: https://blog.winer.website/tag/Gogs/
items: Centos7+nginx使用Certbot脚本给Typecho和Gogs安装Let's Encrypt的TLS证书（超详细版本）

Centos7+nginx使用Certbot脚本给Typecho和Gogs安装Let's Encrypt的TLS证书（超详细版本）
type: item
date: 2020-01-12T16:30:00+08:00
description: 前言https在这个时代普遍性就不说了，最关键的是只要不乱装证书，带上这个可以让中间设备都无法获取通讯信息，对于网络会被审查的环境其实还是比较有用的。之前的SSL服务商基本证书价格都恐怖的吓人，哪怕我的blog访问数再多2个0我也完全不会考虑加证书，现在因为Let's Encrypt的出现，一下子就让https变得非常亲民，所以当然要来鼓捣一下~主要内容本文主要介绍在CentOS7下是用Certbot进行证书申请，安装以及自动续期的过程。因为这方面的教程很多，所以不会特别详细，给自己做个记录。在Typecho上面套SSL的教程也不少，所以也不细说了，会稍微说下我自用的Gogs版本控制平台如何套SSL（主要是自动续期，Let's Encrypt似乎不支持靠更改DNS解析的txt解析来进行自动续期，这里来说下Gogs怎么办），然后就是阿里系的机器用自带的镜像无法运行Certbot该怎么办正文前提条件已经在服务器上部署好了网站，nginx等，并且能够通过80端口对网站进行正常访问，能够使用SSH工具连接服务器执行命令1.安装EPEL源对于部分CentOS系统来说，直接在bash里面使用yum安装cetbot是找不到的，所以要先装这么一个东西——EPEL (Extra Packages for Enterprise Linux)是一个基于Fedora的项目，为“红帽系”的操作系统提供额外的软件包，适用于RHEL、CentOS和Scientific Linux。可以简单的认为就是自动配置yum的软件仓库用的...当然可以手动配置不装这个，不过没找到教程所以没试，并且有现成的当然更好，命令只有这一行sudo yum install -y epel-release执行就好2.安装Certbot有了仓库，装Certbot，同样一行搞定sudo yum install -y certbot3.初次是用Certbot申请证书命令如下certbot certonly --webroot -w /opt/www/demo.mydomain.com -d demo.mydomain.com -m myname@gmail.com --agree-tos关于这条命令的解释是certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos站点目录，站点域名按照自己实际情况来，不要直接抄上去，email的话可以考虑填写真的，因为他们会在证书即将过期之前发信到这个邮箱进行通知。不过如果接下来的自动续期可以配置成功其实倒也没太大关系了~最后那个agree-tos当然要有，要是不同意人家怎么可能给用[scode type="red"]可能出现的问题注意如果这一步出现ImportError: cannot import name UnrewindableBodyError，说明urllib3库有问题了，需要重装。pip uninstall urllib3pip install urllib3[/scode]如果遇到这个问题的你使用的是阿里系主机[scode type="yellow"]但是，如果你用的是阿里云的机器提供的Ubuntu或者CentOS镜像，那求求你就就别用Certbot了，直接换。因为不明原因，阿里的这两个镜像在涉及Certbot的时候总是会出现问题，换acme.sh吧[/scode]emmm,附上一点额外的东西吧当然虽然我嘴上说着换工具，但是内心还是偏向Let's Encrypt推荐的Certbot...所以我就就这这个坑直接跳进去了Orz所以来说说阿里系遇到这种问题的解决方法，错误方案和中间过程因为尝试次数过多就不记录了，直接记解决方法...上面我已经使用pip uninstall urllib3把urllib3卸载掉了，重新安装的时候发现还是不行...所以干脆彻底了一点...把另两个也卸了...pip uninstall requestspip uninstall chardet然后再用这条命令装回来pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3安装发现报错又给卸载了...既然这样，那就重来一遍改下命令直接忽视报错吧pip install --upgrade --force-reinstall --ignore-installed 'requests==2.6.0' urllib3这下安装完就可以啦，然后回去certbot那行命令应该就没什么问题啦4.继续第3步如果没什么问题返回应该是、Saving debug log to /var/log/letsencrypt/lets…