【发布时间】:2020-10-10 05:59:37
【问题描述】:
完整的错误信息是:
403 urn:acme:error:unauthorized: ACMEv1 上的帐户创建是 禁用。请将您的 ACME 客户端升级到支持 ACMEv2 / RFC 8555。见 https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430 了解详情
我已经用谷歌搜索过这个链接并查看了那个链接,但我只是在使用:
golang.org/x/crypto/acme/autocert
以非常正常的方式打包:
package main
import (
"crypto/tls"
"net/http"
"github.com/gin-gonic/gin"
"golang.org/x/crypto/acme/autocert"
)
func main() {
router := gin.Default()
hosts := []string{"yourdomain.com"}
certManager := autocert.Manager{
Prompt: autocert.AcceptTOS,
HostPolicy: autocert.HostWhitelist(hosts...),
Cache: autocert.DirCache("/certs"),
}
server := &http.Server{
Addr: ":https",
Handler: router,
TLSConfig: &tls.Config{
GetCertificate: certManager.GetCertificate,
},
}
server.ListenAndServeTLS("", "")
}
事实上,这段代码在过去 6 个月里一直运行良好。但是就在今天,我切换了它所在的服务器,现在得到了上述消息。
我尝试获取最新版本的 golang,但仍然存在同样的问题。
我将我的主机的 DNS 更改为这个新服务器的 ip,并且服务器的主机名是正确的。
据我所知,它与以前的工作服务器 100% 相同,但使用了新 IP。
golang 的 acme/autocert 真的这么过时而且不使用 ACMEv2 吗?
【问题讨论】:
-
您需要更新您的 certbot 软件/库,它太旧了。就像错误消息说的那样,不久前 Let's Encrypt 上的 API 发生了变化,因此需要更新客户端。
-
godoc.org/golang.org/x/crypto/acme 似乎提供了 ACMEv2
-
@Patrick 没有 certbot 软件!这是直接使用golang的库。
-
是的...这就是我说“certbot 软件/库”的原因。注意“库”。
-
然而,我能找到的一切都表明 golang 库是 ACMEv2。
标签: go https dns ssl-certificate tls1.2