Dockerでは、HTTPSポート443を使用してtraefikバックエンドをセットアップしようとするため、traefikコンテナーとアプリコンテナー(Apache 2.4)間の通信は暗号化されます。
DockerコンテナでInternal Server Error
およびtraefik.protocol=https
をアクティブにすると、traefik.port=443
が表示されます。この問題はここに文書化されています: https://github.com/containous/traefik/issues/2770#issuecomment-374926137
たとえば、jwidler/nginx-proxy
(Dockerハブで使用可能なリバースプロキシ)でもまったく同じセットアップがうまく機能します。コンテナ(内部で実行されているApache 2.4)の証明書は実際に署名されたものです(私はtraefikとコンテナのApacheにそれらをインストールしました)。 https:// ...でApacheコンテナを直接リクエストすると、すべてのブラウザで証明書が有効であると表示されます(緑色)。コンテナ内の証明書は大丈夫です。
質問は簡単です:InsecureSkipVerify = true
を使用することは安全ではありません。よく知られている機関(私の場合はGandiまたはComodo)によって発行された証明書を使用して、ラベルtraefik.protocol=https
およびtraefik.port=443
のコンテナーバックエンドを動作させるための本番用のソリューションはありますか。
ありがとう。
追加する必要があるかもしれません
InsecureSkipVerify = true
メイン/グローバルセクション
https://docs.traefik.io/configuration/commons/ を参照してください。
InsecureSkipVerify : If set to true invalid SSL certificates are accepted for backends.
Note: This disables detection of man-in-the-middle attacks so should only be used on secure backend networks.
私にとっての問題はtraefik.protocol=https
;これはhttpsを有効にするために必要ではなく、直接500
。
InsecureSkipVerify = true
を設定してKubernetesダッシュボードを公開することができました。以下は、traefikデプロイメントファイルに追加した方法です(最終行)。
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
containers:
- image: traefik
name: traefik-ingress-lb
ports:
- name: https
containerPort: 443
args:
- --api
- --kubernetes
- --logLevel=INFO
- --defaultentrypoints=https
- --entrypoints=Name:https Address::443 TLS
- --insecureSkipVerify=true