3.7.3. 信頼できない TLS 証明書の OpenShift Dev Space へのインポート
デフォルトでは、OpenShift Dev Spaces コンポーネント間の外部通信は TLS で暗号化されます。プロキシー、ソースコードリポジトリー、ID プロバイダーなどの外部サービスとの OpenShift Dev Spaces コンポーネントの通信にも、TLS が必要になる場合があります。TLS で暗号化されたすべての通信では、信頼できる認証局 (CA) によって署名された TLS 証明書を使用する必要があります。
OpenShift Dev Spaces コンポーネントまたは外部サービスが使用する証明書が信頼できない CA によって署名されている場合、CA 証明書を OpenShift Dev Spaces インスタンスにインポートして、すべての OpenShift Dev Spaces コンポーネントが証明書を信頼された CA によって署名されたものとして扱うようにする必要があります。次の場合にこれを行う必要があります。
- 基盤となる OpenShift クラスターが、信頼されていない CA によって署名された TLS 証明書を使用ている場合。OpenShift Dev Spaces サーバーまたはワークスペースのコンポーネントが、信頼できない CA によって署名された TLS 証明書を使用する外部 OIDC プロバイダーまたは Git サーバーに接続している場合。
OpenShift Dev Spaces は、プロジェクトのラベルが付いた ConfigMap
オブジェクトを TLS 証明書のソースとして使用します。ConfigMap
オブジェクトには、それぞれ証明書数の乱数を持つ任意の数のキーを指定できます。
OpenShift クラスターにクラスター全体の信頼できる CA 証明書が クラスター全体のプロキシー設定 を通じて追加されている場合、OpenShift DevSpaces Operator はそれらを検出し、この ConfigMap
オブジェクトに自動的に挿入します。OpenShift Dev Spaces は、 ConfigMap
オブジェクトに config.openshift.io/inject-trusted-cabundle="true"
ラベルを自動的に付けます。このアノテーションに基づいて、OpenShift は ConfigMap
オブジェクトの ca-bundle.crt
キー内にクラスター全体で信頼される CA 証明書を自動的に挿入します。
一部の OpenShift Dev Spaces コンポーネントでは、エンドポイントを信頼するために完全な証明書チェーンが必要です。クラスターが中間証明書で設定されている場合は、自己署名ルートを含むチェーン全体を OpenShift Dev Spaces に追加します。
3.7.3.1. OpenShift Dev Spaces への新しい CA 証明書の追加
通常、証明書ファイルは Base64 ファイルとして保存され、エクステンションは .pem
、.crt
、.ca-bundle
などになります。証明書ファイルを保持するすべてのシークレットでは、バイナリーでエンコードされる証明書ではなく、Base64 でエンコードされた証明書を使用する必要があります。次の手順は、すでにインストールおよび実行されているインスタンスと、インストールされるインスタンスに適用されます。
前提条件
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI の使用方法 を参照してください。 - OpenShift Dev Space の namespace が存在します。
OpenShift Dev Spaces は、すでに予約済みファイル名を使用して証明書を
ConfigMap
オブジェクトに自動的に挿入します。証明書の保存には、以下の予約済みファイル名を使用しないでください。-
ca-bundle.crt
-
ca.crt
-
手順
インポートする必要のある証明書をローカルファイルシステムに保存します。
注意導入句が
BEGIN TRUSTED CERTIFICATE
の証明書は、Java でサポートされていない PEMTRUSTED CERTIFICATE
形式である可能性があります。次のコマンドを使用して、サポートされているCERTIFICATE
形式に変換します。-
openssl x509 -in cert.pem -out cert.cer
-
必要な TLS 証明書で新規
ConfigMap
オブジェクトを作成します。$ oc create configmap custom-certs --from-file=<bundle-file-path> -n=openshift-devspaces
複数のバンドルを適用するには、別の
-from-file=<bundle_file_path>
を追加します。または、別のConfigMap
オブジェクトを作成します。作成した
ConfigMap
オブジェクトにapp.kubernetes.io/part-of=che.eclipse.org
およびapp.kubernetes.io/component=ca-bundle
ラベルを付けます。$ oc label configmap custom-certs app.kubernetes.io/part-of=che.eclipse.org app.kubernetes.io/component=ca-bundle -n openshift-devspaces
- 以前にデプロイされていない場合は、OpenShift Dev Spaces をデプロイします。それ以外の場合は、OpenShift Dev Spaces コンポーネントのロールアウトが完了するまで待ちます。
- 変更を有効にするには、実行中のワークスペースを再起動します。