代码之家  ›  专栏  ›  技术社区  ›  Andrew Arrow

什么原因导致urn:acme:error:golang的acme/autocert出现未经授权的403错误?

  •  0
  • Andrew Arrow  · 技术社区  · 5 年前

    完整的错误消息是:

    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吗?

    0 回复  |  直到 5 年前
        1
  •  3
  •   Luke Joshua Park    5 年前

    声明如下:

    事实上,这段代码在过去6个月一直运行良好。但就在今天,我打开了服务器,现在收到了上面的信息。

    可能表明您正在根据旧版本的 golang.org/x/crypto -检查你的 go.mod 归档并确保使用的是最新版本。我最近完成了一个使用几乎相同代码的项目。这个 require 在我的 去摩登派青年 看起来像这样:

    golang.org/x/crypto v0.0.0-20200602180216-279210d13fed