建立 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))
}