创建 HTTPS 服务器
生成证书
要运行 HTTPS 服务器,必须提供证书。使用 openssl
生成自签名证书是通过执行以下命令完成的:
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout key.pem -out cert.pem -subj "/CN=example.com" -days 3650`
参数是:
req
使用证书申请工具x509
创建自签名证书newkey rsa:4096
使用带有4096
位密钥长度的 RSA 算法创建新密钥和证书sha256
强制主要浏览器认为安全的 SHA256 哈希算法(2017 年)nodes
禁用私钥的密码保护。如果没有此参数,你的服务器每次启动时都必须要求你输入密码。keyout
命名文件的写入位置out
将文件命名为写入证书的位置subj
定义此证书有效的域名days
这个证书应该有多少天有效?3650
约。10 年。
注意:自签名证书可用于内部项目,调试,测试等。任何浏览器都会提到,此证书不安全。为了避免这种情况,证书必须由证书颁发机构签名。大多数情况下,这是免费的。一个例外是“Let’s Encrypt”运动: https : //letsencrypt.org
必要的 Go 代码
你可以使用以下代码处理服务器的配置 TLS。cert.pem
和 key.pem
是你的 SSL 证书和密钥,使用上述命令生成。
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, world!"))
})
log.Fatal(http.ListenAndServeTLS(":443","cert.pem","key.pem", nil))
}