我尝试从autocert文档中运行此示例代码,并将其更改为使用我的域:
package main
import (
"fmt"
"log"
"net/http"
"golang.org/x/crypto/acme/autocert"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, TLS user! Your config: %+v", r.TLS)
})
log.Fatal(http.Serve(autocert.NewListener("mydomain.work"), mux))
}在浏览器中,我看到了一个CloudFlare错误,上面写着Error 525 SSL handshake failed。Go程序的输出是
2020/02/27 00:44:10 http: TLS handshake error from 172.69.22.250:26624: acme/autocert: unable to satisfy "https://acme-v02.api.letsencrypt.org/acme/authz-v3/3031814088" for domain "mydomain.work": no viable challenge type found当我关闭CloudFlare的始终使用HTTPS功能时,问题依然存在,因为HTTPS会阻止HTTPS的挑战。当我在CloudFlare控制台中将TLS设置为Off时,它也保持不变。通过返回Namec堆的基本DNS,我终于让它工作起来了。
我喜欢CloudFlare的功能,所以这让我想知道:如何使Go的autocert包与CloudFlare一起工作?或者因为我可以使用CloudFlare的完全加密设置的自签名证书,所以没有必要?
发布于 2020-02-27 06:01:19
在CloudFlare上,转到SSL/TLS,然后转到Origin选项卡。单击Certificate按钮,他们将免费为您制作一个。您可以使用它来处理它们的完全(严格)加密设置。

https://stackoverflow.com/questions/60425518
复制相似问题