Letsencrypt简单教程调整

Letsencrypt简单教程调整Letsencrypt 简单教程 一文较为详细地介绍了 Letsencrypt 的安装以及使用方法 然而 最近在一台服务器部署 letsencrypt 时 执行 letsencrypt auto 命令出现错误 letsencrypt autohelpallS autoisdeprec Yoursystemis autoanymore

《Letsencrypt简单教程》一文较为详细地介绍了Letsencrypt的安装以及使用方法,然而,最近在一台服务器部署letsencrypt时,执行letsencrypt-auto命令出现错误:

./letsencrypt-auto --help all
Skipping bootstrap because certbot-auto is deprecated on this system. Your system is not supported by certbot-auto anymore. Certbot cannot be installed. Please visit https://certbot.eff.org/ to check for other alternatives. 

系统不再被支持!!!

查看certbot(https://github.com/certbot/certbot/releases)在

2021年1月的更新日志:

certbot-auto was deprecated on all systems. For more information about this
change, see
Certbot-auto no longer works on Debian based systems – #7 by bmw – Help – Let’s Encrypt Community Support.

可知:

certbot-auto不再支持所有的操作系统!根据作者的说法,certbot团队认为维护certbot-auto在几乎所有流行的UNIX系统以及各种环境上的正常运行是一项繁重的工作,加之certbot-auto是基于python 2编写的,而python 2即将寿终正寝,将certbot-auto迁移至python 3需要大量工作,这非常困难,因此团队决定放弃certbot-auto的维护。

既然如此,现在我们还能继续使用certbot吗?certbot团队使用了基于snap的新的分发方法。

1. 环境

操作系统:CentOS 7

WebserverNginx

2. 安装letsencrypt

2.1. 安装letsencrypt之前,需要先安装snaps。

a. 先安装epel。

yum install epel-release

b. 安装snapd。

yum install snapd

c. 启用snapd.socket。

systemctl enable –now snapd.socket

d. 创建/var/lib/snapd/snap和/snap之间的链接。

ln -s /var/lib/snapd/snap /snap

e. 退出账号并重新登录,或者重启系统,确保snap启用。

f. 安装/更新core软件包。

snap install core

snap refresh core

如果执行以上命令提示错误:

error: too early for operation, device not yet seeded or device model not acknowledged

则需要先禁用SELinux:

setenforce 0

2.2. 卸载已安装的certbot

如果之前在系统上已经部署过certbot,则需要先将其进行卸载。

a. 卸载certbot。

yum remove certbot

b. 根据certbot安装位置删除相关文件。

rm /usr/local/bin/certbot-auto

c. 删除certbot附加软件包。

rm -rf /opt/eff.org/certbot

2.3. 安装certbot。

a. 通过snap安装certbot。

snap install –classic certbot

b. 创建/snap/bin/certbot的软链接,方便certbot命令的使用。

ln -s /snap/bin/certbot /usr/bin/certbot

3. letsencrypt的使用

3.1. 获取证书。

a. 生成证书。

确保nginx处于运行状态,需要获取证书的站点在80端口,并且可以正常访问。

certbot certonly –nginx –email -d a.do.com -d b.do.com

b. 更新nginx配置并重启nginx。

3.2. 更新证书。

certbot renew

4.    错误

运行certbot 相关命令时提示一下错误:

An unexpected error occurred: ValueError: Requesting acme-v02.api.letsencrypt.org/directory: Network is unreachable 

执行curl确认网络是否正常:

curl -4 -v https://acme-v02.api.letsencrypt.org/directory curl -6 -v https://acme-v02.api.letsencrypt.org/directory 

如确实无法访问,请确认防火墙设置,如防火墙设置正确,则等待一段时间后重试。出现过该站点在一段时间内在指定服务器无法访问,过一段时间后恢复正常的情况。

5.    Letsencrypt根证书过期问题

[Leaf]: subjectName: CN=dancen.com issuerName: CN=R3,O=Let's Encrypt,C=US notBefore: 2021/08/30_10:18:42 notAfter: 2021/11/28_10:18:41 subjectAlternativeName: [dancen.com,www.dancen.com] [Intermediate_1/2]: subjectName: CN=R3,O=Let's Encrypt,C=US issuerName: CN=ISRG Root X1,O=Internet Security Research Group,C=US notBefore: 2020/09/04_08:00:00 notAfter: 2025/09/16_00:00:00 [Intermediate_2/2]: subjectName: CN=ISRG Root X1,O=Internet Security Research Group,C=US issuerName: CN=DST Root CA X3,O=Digital Signature Trust Co. notBefore: 2021/01/21_03:14:03 notAfter: 2024/10/01_02:14:03 [Root](由客户端补全): subjectName: CN=DST Root CA X3,O=Digital Signature Trust Co. issuerName: CN=DST Root CA X3,O=Digital Signature Trust Co. notBefore: 2000/10/01_05:12:19 notAfter: 2021/09/30_22:01:15 

对于根证书过期,Letsencrypt早在几年以前已经提供了新的名为ISRG Root X1的根证书,该证书与上面的证书链中的中间证书ISRG Root X1同名,并且使用相同的公钥,但实际为一个自签名的根证书,即证书链中的中间证书R3是由两个同名,但不同的ISRG Root X1证书交叉签名的。因此,对于终端证书,实际上存在两条可用的证书链,只不过fullchain.pem文件中明确指定的证书链为证书链1:

证书链1:guangzhuiyuan.com > R3 > ISRG Root X1(中间CA证书) > DST Root CA X3 证书链2:guangzhuiyuan.com > R3 > ISRG Root X1(根证书) 

由于Letsencrypt证书管理程序在服务端生成的证书文件fullchain.pem使用的是包含过期根证书的已经失效的证书链1,因此,该证书链将无法通过客户端的验证。

幸运的是,windows、浏览器等很多客户端在建立https连接时不会直接采纳服务端提供的证书链,它们会结合本地可信任证书存储区域中的证书重新构建证书链,最终形成证书链2,不至于在建立https连接时无法通过证书验证。

然而,悲剧的是,对于Java程序等客户端,它们在与服务端建立https连接时,会直接使用服务端提供的证书链,由于证书链中根证书已经过期,https连接将无法通过证书验证。这也导致了我们在10月1日时的一些运维事故,因为一些服务器无法和另外的服务器建立https连接。

更加悲剧和不可思议的是,即便是在根证书DST Root CA X3已经过期的当下,使用Letsencrypt证书管理程序在服务端生成证书文件时,很多情况下其仍然使用了过期的根证书形成的证书链。也就是说,即使现在重新从Letsencrypt申请证书也不能解决根证书过期的问题。

解决方案1:
解决方案之一是在客户端本地的可信任证书存储区域中手动移除已过期的根证书DST Root CA X3,并且,如果客户端没有安装根证书ISRG Root X1的话,需要手动安装之,这样,客户端就能够抛弃服务端返回的证书链1,重新构建出合法的证书链2。

解决方案2:
解决方案之二是手动修正服务端fullchain.pem文件中的证书链,将其由证书链1调整为证书链2。

-----BEGIN CERTIFICATE----- [终端证书] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVGEwJVUzEWMBQGA1UEChMNTGV0J3Mg RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG /kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAB gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2z CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX nLRbwHOoq7hHwg== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231141.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android中px和dip的区别

    Android中px和dip的区别

    2021年8月25日
    62
  • abstract修饰方法总结

    abstract修饰方法总结abstract这种方法修饰,主要用在抽象类和抽象方法.抽象的类是不可实例化的比如publicabstractclassTest{}他能够含有抽象的方法publicabstractclass

    2022年7月3日
    27
  • 达人评测小米平板5怎么样[通俗易懂]

    达人评测小米平板5怎么样[通俗易懂]小米平板5系列将推出三款新机,均会搭载高通处理器,分别为骁龙870、骁龙860和骁龙768G,分别对应高、中、低三个档位,无论是学习还是娱乐、工作,小米平板5都能提供匹配的体验。骁龙870大家此前已经非常熟悉,目前市面上已经有多款搭载该芯片的产品亮相,而骁龙860目前还未在国内上市。据悉,骁龙860处理器是此前骁龙855Plus的增强版,采用7nm工艺打造,CPU主频为2.96GHz,为1+3+4的三丛集架构设计,超大核为Kryo485,并且在5G、内存等和方面带来了全新提升,性能更..

    2022年8月10日
    18
  • 跨平台应用开发进阶(十五) :uni-app 自定义 showToast并实现下载进度条

    跨平台应用开发进阶(十五) :uni-app 自定义 showToast并实现下载进度条大话设计模式(四)单例模式的优与劣前言首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,

    2022年6月20日
    259
  • 开源微服务编排框架:Netflix Conductor「建议收藏」

    开源微服务编排框架:Netflix Conductor「建议收藏」简介:本文主要介绍netflixconductor的基本概念和主要运行机制。​作者|夜阳来源|阿里技术公众号本文主要介绍netflixconductor的基本概念和主要运行机制。

    2022年7月2日
    30
  • 如何把自己的百度网盘的内容分享给别人

    如何把自己的百度网盘的内容分享给别人

    2021年9月18日
    624

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号