安装certbot包
ubuntu环境中安装certbot包,用于生成https证书
sudo apt-get install certbot
生成https证书
使用certbot命令,给指定的域名地址生成https证书
sudo certbot certonly --webroot --agree-tos --no-eff-email --email xxx@gmail.com -w /var/www/letsencrypt -d teachcourse.cn -d www.teachcourse.cn
使用了certbot工具来自动获取并配置Let's Encrypt的SSL/TLS证书,用于加密网站通信。下面是对这条命令各个部分的详细解释:
-
sudo: 以超级用户权限运行命令,因为配置和操作证书通常需要系统级的权限。 -
certbot certonly: 运行certbot工具仅生成证书,而不是自动配置web服务器(如Nginx或Apache)。这意味着你需要手动将生成的证书应用到你的web服务器配置中。 -
--webroot: 指定使用Webroot插件验证域名所有权。此插件会在你的web服务器的文档根目录下创建一个临时文件,Let's Encrypt的验证服务器会检查这个文件以确认你对域名的控制权。 -
--agree-tos: 同意Let's Encrypt的服务条款。在请求证书之前,你必须接受Let's Encrypt的《服务条款》(Terms of Service)。 -
--no-eff-email: 禁止向电子前哨基金会(Electronic Frontier Foundation, EFF)发送电子邮件。EFF是Let's Encrypt的一个支持者,但默认情况下,certbot会询问是否允许EFF发送邮件。使用这个选项可以避免接收来自EFF的邮件。 -
--email xxx@gmail.com: 提供一个电子邮件地址,用于接收关于证书即将过期或出现问题的通知。 -
-w /var/www/letsencrypt: 指定webroot路径,即你的web服务器用来提供内容的目录。在这个例子中,/var/www/letsencrypt将被用来放置验证文件。 -
-d teachcourse.cn -d www.teachcourse.cn: 请求为teachcourse.cn和www.teachcourse.cn这两个域名生成证书。这通常是为了确保无论用户通过哪个域名访问,都能获得加密连接。
总结来说,这条命令是在请求为teachcourse.cn及其子域www.teachcourse.cn生成SSL/TLS证书,并且使用/var/www/letsencrypt作为验证目录。在证书生成后,你需要手动更新你的web服务器配置,以使用这些新生成的证书来加密HTTP通信,将其转换为HTTPS。
Failed authorization procedure. teachcourse.cn (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: 47.106.131.141: Invalid response from http://teachcourse.cn/.well-known/acme-challenge/mdzS9ZKDTTYMafwOqjuDiNmZSGNRIknfCr9thKOmNvo: 404
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: teachcourse.cn
Type: unauthorized
Detail: 47.106.131.141: Invalid response from
http://teachcourse.cn/.well-known/acme-challenge/mdzS9ZKDTTYMafwOqjuDiNmZSGNRIknfCr9thKOmNvo:
404
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.

Failed authorization procedure. teachcourse.cn (http-01)
生成证书过程抛出异常:
Failed authorization procedure. www.teachcourse.cn (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verifye domain :: 47.106.131.141: Fetching http://teachcourse.cn/.well-known/acme-challenge/dVXUVwxrm4VrjtfLfpdHgfUyIc-tx2YHz5OoLSp8blk: Timeout after connect (y server may be slow or overloaded), teachcourse.cn (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verifye domain :: 47.106.131.141: Fetching http://teachcourse.cn/.well-known/acme-challenge/LU20q4PDAoU4KeRX04AbWmpHa_che0VytrxfhP5uLEY: Timeout after connect (y server may be slow or overloaded)

在使用Certbot这样的自动化工具来获取或更新SSL/TLS证书时,为了能够顺利通过ACME协议的HTTP-01挑战,需要确保.well-known/acme-challenge/目录可写并且对外部HTTP请求可访问。以下是具体的权限设置步骤:
1. 创建或确认.well-known/acme-challenge/目录的存在
如果你的Web服务器根目录下还没有这个目录,首先需要创建它。可以通过以下命令在你的网站文档根目录下创建:
sudo mkdir -p /var/www/html/.well-known/acme-challenge/
Web服务器文档根目录为/var/www/html,根据实际情况可能需要进行调整。
2. 设置目录权限
接下来,需要设置这个目录的权限,以便Web服务器用户(通常是www-data或类似名称)可以写入文件,同时确保目录对其他用户安全。执行以下命令来设置权限:
sudo chown -R www-data:www-data /var/www/html/.well-known/acme-challenge/
sudo chmod -R 755 /var/www/html/.well-known/acme-challenge/
第一行命令设置了目录的所有者和组为www-data,这是Nginx、Apache等Web服务器的默认运行用户。第二行命令设置了目录权限为755,这意味着目录对所有者可读写执行(7),对组和其他人可读可执行(55)。
3. 配置Web服务器
确保Web服务器配置允许外部访问.well-known/acme-challenge/目录。对于Nginx,可能需要在相关server块中添加或修改以下配置:
location /.well-known/acme-challenge/ {
allow all;
root /var/www/html/;
}
对于Apache,你可能需要在<Directory>或<VirtualHost>块中添加或修改以下配置:
<Directory "/var/www/html/.well-known/acme-challenge">
Require all granted
</Directory>
4. 重启Web服务器
修改完权限和配置后,记得重启Web服务器使更改生效:
sudo systemctl restart nginx # 对于Nginx
sudo systemctl restart apache2 # 对于Apache
通过以上步骤,就能确保Certbot能够顺利地在.well-known/acme-challenge/目录下创建和删除文件,从而通过HTTP-01挑战,完成SSL/TLS证书的获取或更新过程。
当前文章价值5.62元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

评论已关闭!