需要帮助自动处理Go中的TLS证书吗
我有一个简单的Go Web服务器,我希望它使用TLS证书。我知道certbot,python应用程序,并且到目前为止经常使用它,但是我想几乎自动化一切。那是我偶然发现的,非常棒。但是,我似乎无法将它与自定义服务器结构结合使用需要帮助自动处理Go中的TLS证书吗,go,ssl,certificate,webserver,Go,Ssl,Certificate,Webserver,我有一个简单的Go Web服务器,我希望它使用TLS证书。我知道certbot,python应用程序,并且到目前为止经常使用它,但是我想几乎自动化一切。那是我偶然发现的,非常棒。但是,我似乎无法将它与自定义服务器结构结合使用 srv := http.Server{ ReadTimeout: 1 * time.Second, WriteTimeout: 2 * time.Second, IdleTimeout: 10 * time.Second, ReadHeade
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")
}
}
到目前为止,我只是使用手动请求的证书来解决这个问题。有什么建议吗?文档建议使用Listen()
而不是HTTPS()
来使用您自己的http.Server
值
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管理domainName的证书并返回TLS侦听器。它使用默认配置。
因为这个便利函数只返回一个启用了TLS的侦听器,并且不假定HTTP也被服务,所以HTTP质询将被禁用。修改包变量Default,以便禁用HTTP质询。
调用此功能表示您接受CA的用户协议和/或服务条款
啊,我看到的是Listen是一个低级TCP侦听器,而不是一个真正的HTTP侦听器。我会试试的。我不知道srv.Serve()函数。你知道使用任意端口而不是443的方法吗?看起来我们无法根据此链接更改端口