为了运行HTTPS服务器,需要证书。openssl通过执行以下命令来生成带有的自签名证书:
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyoutkey.pem-outcert.pem-subj "/CN=example.com" -days 3650`
参数为:
req 使用证书申请工具
x509 创建一个自签名证书
newkey rsa:4096通过使用具有4096位密钥长度的RSA算法来创建新密钥和证书
sha256 强制使用主要浏览器认为安全的SHA256哈希算法(截至2017年)
nodes禁用私钥的密码保护。如果没有此参数,则服务器每次启动时都必须询问您密码。
keyout 将该文件命名为写入密钥的位置
out 将该文件命名为写入证书的位置
subj 定义该证书对其有效的域名
days该证书应有效期为几天?3650大约。10年。
注意:可以将自签名证书用于内部项目,调试,测试等。任何在那里使用的浏览器都会提到此证书不安全。为了避免这种情况,证书必须由证书颁发机构签名。通常,这不是免费提供的。一个例外是“让我们加密”运动:https://letsencrypt.org
您可以使用以下代码来处理服务器的配置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)) }