gpt4 book ai didi

go - 需要帮助在 Go 中自动处理 TLS 证书

转载 作者:行者123 更新时间:2023-12-01 21:09:51 24 4
gpt4 key购买 nike

我有一个简单的 Go 网络服务器,我希望它使用 TLS 证书。我知道 certbot,python 应用程序,并且到目前为止经常使用它,但我想几乎自动化一切。那是我偶然发现的地方https://github.com/caddyserver/certmagic ,这真是太棒了。但是,我似乎无法将它与自定义服务器结构结合使用。

srv := http.Server{
ReadTimeout: 1 * time.Second,
WriteTimeout: 2 * time.Second,
IdleTimeout: 10 * time.Second,
ReadHeaderTimeout: 2 * time.Second,
Handler: router,
Addr: serverAddr,
}

if fileExists(serverCertFile) && fileExists(serverKeyFile) {
if err := srv.ListenAndServeTLS(serverCertFile, serverKeyFile); err != nil && err != http.ErrServerClosed {
panic("Couldn't start server with TLS")
}
} else {
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
panic("Couldn't start server")
}
}
到目前为止,这是我解决问题的方法,仅使用手动请求的证书。有什么建议么?

最佳答案

文档 here建议使用Listen()而不是 HTTPS()使用你自己的http.Server值(value)观。

listener, err := certmagic.Listen([]string{"yourdomain.com"})

srv := http.Server{
ReadTimeout: 1 * time.Second,
WriteTimeout: 2 * time.Second,
IdleTimeout: 10 * time.Second,
ReadHeaderTimeout: 2 * time.Second,
Handler: router,
Addr: serverAddr,
}

srv.Serve(listener)
Listent() 的文件

Listen manages certificates for domainName and returns a TLS listener. It uses the Default config.Because this convenience function returns only a TLS-enabled listener and does not presume HTTP is also being served, the HTTP challenge will be disabled. The package variable Default is modified so that the HTTP challenge is disabled.Calling this function signifies your acceptance to the CA's Subscriber Agreement and/or Terms of Service.

关于go - 需要帮助在 Go 中自动处理 TLS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62493073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com