为了账号安全,请及时绑定邮箱和手机立即绑定

使用 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 = "admin@example.com"

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 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信