如何在 Golang 中設定 HTTP 安全傳輸協定 (SSL/TLS)產生自簽章憑證。配置 Golang HTTP 伺服器的 TLS 配置,包括憑證和金鑰。使用 TLS 設定建立一個 HTTP 伺服器。
如何在Golang 中設定HTTP 安全傳輸協定(SSL/TLS)
引言
保護Web 流量免受竊聽和篡改至關重要,而SSL/TLS 是實現這一目標的關鍵技術。本教學將指導你如何在 Golang 中設定 SSL/TLS 以保護你的 HTTP 連線。
產生自簽名憑證
由於憑證授權單位(CA) 所頒發的憑證需要付費,因此對於開發和測試目的,產生自簽章憑證是可行的選擇。可以使用以下命令產生自簽名憑證:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
記住,自簽名憑證僅在你自己的網域或環境中受信任,因此不適合生產環境。
設定Golang HTTP 伺服器
建立自簽章憑證後,你可以在Golang HTTP 伺服器中設定SSL/TLS:
package main import ( "crypto/tls" "fmt" "net/http" ) func main() { // 创建 TLS 配置 tlsConfig := &tls.Config{ Certificates: []tls.Certificate{ { // 读取生成的证书和密钥 Certificate: []byte("cert.pem"), PrivateKey: []byte("key.pem"), }, }, } // 使用 TLS 配置创建一个 HTTP 服务器 server := &http.Server{ Addr: ":443", TLSConfig: tlsConfig, } fmt.Println("正在启动 TLS HTTP 服务器...") server.ListenAndServeTLS("", "") }
#實戰案例
讓我們執行一個簡單的Golang HTTP 伺服器來示範SSL/TLS 的工作原理:
在終端機中執行以下命令產生自簽名憑證:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
建立一個名為server.go
的Go 文件,其中包含以下程式碼:
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, HTTPS!") }) fmt.Println("正在启动 HTTPS 服务器...") http.ListenAndServeTLS(":443", "cert.pem", "key.pem") }
執行伺服器:
go run server.go
https://localhost:443
)存取你的伺服器。如果設定正確,你應該會看到 "Hello, HTTPS!" 訊息。 以上是如何使用 Golang 設定 HTTP 安全傳輸協定(SSL/TLS)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!