php小編小新發現,當使用AutoTLS和Gin (gin-gonic)建構Web應用程式時,可能會遇到一個問題:無法讀取SSL憑證。這個問題可能會導致應用程式無法正常使用HTTPS協定進行安全通訊。儘管AutoTLS和Gin都是非常流行的工具,但在處理SSL憑證方面存在一些限制。在本文中,我們將深入探討這個問題,並提供一些解決方案,以幫助開發者克服這個難題。
我正在嘗試使用 gin (gin-gonic) 用簡單的程式碼建立一個微服務環境:
package main import ( "example.com/MSHandler/ms1" "log" "github.com/gin-gonic/autotls" "github.com/gin-gonic/gin" ) func main() { // Create GIN router := gin.Default() // Call MS // Call MS1 router.GET("/ms1", ms1.CallMS1) // Run GIN // router.Run(":443") // Run with Let's Encrypt log.Fatal(autotls.Run(router, "exampleMS.org")) }
每次我嘗試造訪該網站時,該網站都會被標記為不安全。我的 ssl 憑證是使用 openssl 產生的,它們(.key 和 .pem)都位於 ~/.ssl 資料夾中(我使用的是 ubuntu)。我的憑證需要與應用程式位於同一資料夾中嗎?
我在網路上和這裡閱讀了一些文章,但沒有任何內容直接指向 autotls。
軟體包github.com/gin-gonic/autotls
在下面使用golang.org/x/crypto/acme/autocert
。因此,如果您想閱讀該文檔,請前往 https://pkg .go.dev/golang.org/x/crypto/acme/autocert。 Let's Encrypt 的工作原理是必讀文件。
註解:
autocert
從https://www.php.cn/link/1c9884d82761f8718077f56cee0c1da4 應用程式證書,因此您不需要提供您自己使用openssl
# 產生的憑證。如果您想要使用自簽名證書,則不需要 autocert
(和 autotls
)。並且預設情況下,客戶端不信任自簽名憑證。
autocert
將為您建立一個新的 ECDSA P-256 金鑰。如果您想使用自己的私鑰,請使用 設定金鑰autocert.Manager.
由於需要申請來自https://www.php.cn/link/1c9884d82761f8718077f56cee0c1da4的證書,公網應該可供您的應用程式使用。
Let's Encrypt 將透過向您的網站發送 HTTP 請求來驗證您是否是網域擁有者。確保您的網站可以在網域上存取(根據您的演示,它是 exampleMS.org
)。並且這個請求發送到HTTP連接埠80
。所以你應該確保這個端口也沒有被阻止。更準確地說:
Let’s Encrypt CA 將查看所要求的網域名稱並發出一組或多組挑戰。這些都是代理證明域控制權的不同方式。例如,CA 可能會給代理一個選擇:
autotls
提供了幾個示範,如果你不知道的話。
以上是AutoTLS 和 Gin (gin-gonic) 無法讀取 SSL 憑證的詳細內容。更多資訊請關注PHP中文網其他相關文章!