go - 是什么导致 golang 的 acme/autocert 中的 urn:acme:error:unauthorized 403 错误?
问题描述
完整的错误信息是:
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 吗?
解决方案
这个说法:
事实上,这段代码在过去 6 个月里一直运行良好。但是就在今天,我切换了它所在的服务器,现在收到了上述消息。
可能表明您正在针对旧版本进行构建golang.org/x/crypto
- 检查您的go.mod
文件并确保您使用的是相当新的版本。我最近完成了一个使用几乎相同代码的项目。在require
我go.mod
看起来像这样:
golang.org/x/crypto v0.0.0-20200602180216-279210d13fed
推荐阅读
- ansible - Ansible 循环获取下一个值
- angular - 与 p-table 一起使用时,primeng 下拉选项可见性问题
- django - 502 Bad Gateway with DigitalOcean (gunicorn/nginx) 使用 Selenium 和 Django
- vue.js - 取消 vue 组件中的属性更新
- sapui5 - 使用 sapUI5 VizFrame 连接的散点图
- javascript - 使用 Jest 触发方法后检查 Vue 组件数据
- python - 使用python将相同的文本颜色excel单元格合并为一个?
- swift - 如何让用户在退出应用程序时不会收到 (APNC) 通知?
- reactjs - useEffect 导致状态在父组件中被覆盖
- kubernetes - 无法从 Kubernetes 上的 Helm 启动 Vault