2017-11-10 14 views
0

トラフィックのガイドに沿ってLet's Encrypt and Dockerを設定しました。my-domain.comは、その後ろに静的なウェブサイトがあるHTTPSを適切に受け入れます。次に、Trapikの背後で実行されているgRPCサーバーをmy-grpc-server.my-domain.comにしたいと思います。 gRPC with Traefikを使用するTraefikのドキュメントを見ると、自己署名証明書を使用する手順がわかります。 Let's Encryptの有効な証明書を既に持っているという事実を利用するにはどうすればよいですか?gRPCでTraefikを暗号化しましょうか?

私のgrpc-server Dockerコンテナでは、Traefikが書き込むacme.jsonファイルをマウントし、そのファイルからキーを読み取り、それらを使用してgRPCサーバーを初期化することができます。その場合でもうまくいくはずですが、Traefikと私のgrpc-server Dockerコンテナの間のトラフィックがSSLを必要としているという事実を考慮に入れて、別のtraefik.tomlの設定が必要なようです。


UPDATE:私は今のところありません成功し、この試しを与えてきました。私は手作業でacmeキーをエクスポートしてテストしましたので、簡単にするためにLet's Encryptをピクチャから外しました。 grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.CANCELLED, Received http2 header with status: 500)>

そしてTraefikエラー:

ここgRPCクライアントエラーです level=warning msg="Error forwarding to https://172.18.0.2:443, err: stream error: stream ID 1; INTERNAL_ERROR"

私はgRPCクライアントと接続する不思議は、gRPCサーバ上のメッセージはありません。私はWebブラウザmy-grpc-server.my-server.comを打ったときしかし、私はTraefikで同じエラーとgRPCサーバー上に追加のエラーが表示されます。 E1112 21:06:37.480636928 8 http_server_filter.c:236] GET request without QUERY トラフィックがgRPC Webブラウザの場合には転送されなく取得し、なぜ私が今思ったんだけどクライアントケース。あなたのtraefikとあなたのコンテナの間のhttpsで通信する

答えて

0

、あなたは、traefikがあなたのバックエンドサーバーに接続する時期ドッキングウィンドウのバックエンドで、あなたのコンテナまた(https://docs.traefik.io/configuration/backends/docker/#on-containers

にラベルtraefik.protocol = HTTPSを追加する必要がありますコンテナのIPを使用します(ドメイン証明書と一致しません)。したがって、あなたのtraefik構成(https://docs.traefik.io/configuration/commons/#main-section)でアクティブInsecureSkipVerifyすることができます。

+0

クライアントと 'my-grpc-server.my-domain.com'の間でLet's Encryptを使用して、TraefikとgRPCサーバ間のトラフィックに自己署名証明書を使用することはできますか?そうすれば、暗号化することができます。 –

+0

私はまだこの1つに固執しています。私はtraefik.tomlファイルで 'InsecureSkipVerify = true'を有効にしていますが、' Error Forwarding to https://172.18.0.4:50051、err:tls:最初のレコードがTLSハンドシェイクのように見えません。 –

+0

Let's Encryptを使用することは可能でしょうか?いいえ(ドッカーバックエンドではありません)。 gRpcクライアントとgRpcサーバーでHTTPSを有効にしてもよろしいですか? –

関連する問題