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