亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Golang 在 Nginx 后面運行的 GRPC 服務的 TLS

使用 Golang 在 Nginx 后面運行的 GRPC 服務的 TLS

Go
梵蒂岡之花 2023-05-15 10:22:31
我有一個 flutter 應用程序(基于 dart)和一個使用 GRPC 的 GoLang 服務器。我想保護它,所以我嘗試設置Ngninx(certbot我是新手),但是機器人需要一個挑戰,它連接到 Web 服務(對于域)以獲得 http 響應,而我的服務沒有給。可以在同一端口上同時運行 GRPC 和 HTTP 服務器,但我不明白如何設置Nginx。然后我嘗試使用 acme 為我的服務本身設置 TLS,autocert但使用 acme 需要相同的 Web 服務響應,否則我必須提供手動證書并跳過目前在 dart 中不可用的不安全驗證(只有兩個選項可用secure和insecure). 在本地進行測試autocert也無濟于事,因為它甚至不會創建本地證書(至少對我而言)。我還閱讀了有關需要 DNS TXT 記錄的 DNS 質詢,但我不確定它是否會要求我在每次續訂時都提供新的 TXT 記錄。無論如何,我對如何推進這一點感到很困惑。我將 GRPC 連接到實際的移動應用程序,但在任何地方都找不到很多與此相關的教程或問題。我的 GoLang 服務器還與其他內部微服務交互,因此使其支持 TLS 也意味著重新部署啟用安全標志的所有其他服務。任何關于我應該如何保護我的 GRPC 連接到應用程序的幫助,都會很棒!
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

只是發布我最終為我的設置所做的事情。Nginx確實支持 1.3.10+ 版本的 GRPC,但需要大量手動工作和 cron 作業來自動更新證書,并且它缺少操作方法文檔。

簡而言之,Traefik 允許更簡單的設置和非常詳細的 GRPC 文檔來開始。另一個優點是它在 docker 本身內部運行,因此可以輕松地在我的 mac 上測試我在服務器上部署的相同版本。它提供了自動證書續訂和 DNS 質詢,我可以輕松驗證域。

TOML反向代理端 TLS 終止的示例文件,用于 GRPC 和普通 REST 服務,支持http(對于較舊的應用程序) &?https.

defaultEntryPoints = ["http", "https"]

logLevel = "INFO"

[traefikLog]

[accessLog]

? filePath = "/var/log/access.log"

? format = "json"

[entryPoints]

? [entryPoints.http]

? address = ":80"

? [entryPoints.https]

? address = ":443"

? ? [entryPoints.https.tls]

[api]

[file]

[acme]

email = "[email protected]"

storage = "acme.json"

entryPoint = "https"

acmeLogging = true

? [acme.dnsChallenge]

? ? provider = "gcloud"

? [[acme.domains]]

? ? main = "*.example.com"

? ? sans = ["www.example.com"]

[backends]

? [backends.foo]

? ? [backends.foo.servers.server1]

? ? url = "h2c://127.0.0.1:3000"

? [backends.bar]

? ? [backends.bar.servers.server1]

? ? url = "http://127.0.0.1:3001"

[frontends]

? [frontends.foo]

? backend = "foo"

? ? [frontends.foo.routes.server1]

? ? rule = "Host:foo.example.com"

? passHostHeader = true

? passTLSCert = false

? [frontends.bar]

? backend = "bar"

? ? [frontends.bar.routes.server1]

? ? rule = "Host:bar.example.com"

? passHostHeader = true

? passTLSCert = false

唯一的問題是弄清楚提供商 ( dnsChallenge) 的 Google Cloud 設置,如果是第一次這樣做,很難找到和設置!


查看完整回答
反對 回復 2023-05-15
  • 1 回答
  • 0 關注
  • 248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號