首頁  >  文章  >  後端開發  >  AutoTLS 和 Gin (gin-gonic) 無法讀取 SSL 憑證

AutoTLS 和 Gin (gin-gonic) 無法讀取 SSL 憑證

WBOY
WBOY轉載
2024-02-09 22:30:20433瀏覽

AutoTLS 和 Gin (gin-gonic) 无法读取 SSL 证书

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/autocertLet's Encrypt 的工作原理是必讀文件。

註解

  1. autocerthttps://www.php.cn/link/1c9884d82761f8718077f56cee0c1da4 應用程式證書,因此您不需要提供您自己使用openssl # 產生的憑證。如果您想要使用自簽名證書,則不需要 autocert (和 autotls)。並且預設情況下,客戶端不信任自簽名憑證。

  2. autocert 將為您建立一個新的 ECDSA P-256 金鑰。如果您想使用自己的私鑰,請使用 設定金鑰autocert.Manager.

  3. 由於需要申請來自https://www.php.cn/link/1c9884d82761f8718077f56cee0c1da4的證書,公網應該可供您的應用程式使用。

  4. Let's Encrypt 將透過向您的網站發送 HTTP 請求來驗證您是否是網域擁有者。確保您的網站可以在網域上存取(根據您的演示,它是 exampleMS.org)。並且這個請求發送到HTTP連接埠80。所以你應該確保這個端口也沒有被阻止。更準確地說:

    Let’s Encrypt CA 將查看所要求的網域名稱並發出一組或多組挑戰。這些都是代理證明域控制權的不同方式。例如,CA 可能會給代理一個選擇:

    • 在 example.com 下設定 DNS 記錄,或
    • 在眾所周知的 URI 下設定 HTTP 資源
  5. autotls提供了幾個示範,如果你不知道的話。

以上是AutoTLS 和 Gin (gin-gonic) 無法讀取 SSL 憑證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除