3.7.3.2. インポートされた証明書に関する問題のトラブルシューティング
証明書を追加した後に問題が発生した場合は、OpenShift Dev Spaces のインスタンスレベルおよびワークスペースレベルで指定された値を確認します。
OpenShift Dev Spaces インスタンスレベルでのインポート済み証明書の検証
OpenShift Dev Spaces Operator デプロイメントの場合、
CheClusterが配置されている namespace には、正しいコンテンツを含む、ラベル付きのConfigMapオブジェクトが含まれます。$ oc get cm --selector=app.kubernetes.io/component=ca-bundle,app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
以下を入力して
ConfigMapオブジェクトの内容を確認します。$ oc get cm <name> -n openshift-devspaces -o yamlOpenShift Dev Spaces Pod ボリューム一覧には、
ca-certs-mergedConfigMapオブジェクトをデータソースとして使用するボリュームが含まれます。OpenShift Dev Spaces Pod のボリュームのリストを取得するには:$ oc get pod -l app.kubernetes.io/component=devspaces -o "jsonpath={.items[0].spec.volumes}" -n openshift-devspacesOpenShift Dev Spaces は、証明書を OpenShift Dev Spaces サーバーコンテナーの
/public-certs/フォルダーにマウントします。このフォルダー内のファイルのリストを表示するには、次のように入力します。$ oc exec -t deploy/devspaces -n openshift-devspaces -- ls /public-certs/
OpenShift Dev Spaces サーバーログに、設定された OpenShift Dev Spaces 証明書など、Java トラストストアに追加されたすべての証明書に対する行があります。次の表示:
$ oc logs deploy/devspaces -n openshift-devspaces
OpenShift Dev Spaces サーバーの Java トラストストアに証明書が含まれます。証明書の SHA1 フィンガープリントは、トラストストアに含まれる証明書の SHA1 リストにあります。リストを表示します。
$ oc exec -t deploy/devspaces -n openshift-devspaces -- keytool -list -keystore /home/user/cacerts Your keystore contains 141 entries: + (...)
ローカルファイルシステムの証明書の SHA1 ハッシュを取得するには、以下のコマンドを実行します。
$ openssl x509 -in <certificate-file-path> -fingerprint -noout SHA1 Fingerprint=3F:DA:BF:E7:A7:A7:90:62:CA:CF:C7:55:0E:1D:7D:05:16:7D:45:60
ワークスペースレベルでのインポート済み証明書の検証
- ワークスペースを起動し、これが作成されたプロジェクト名を取得し、ワークスペースが開始するまで待機します。
ワークスペース Pod の名前を取得します。
$ oc get pods -o=jsonpath='{.items[0].metadata.name}' -n <workspace namespace> | grep '^workspace.*'ワークスペース Pod 内の Che-Theia IDE コンテナーの名前を取得します。
$ oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq -r '.spec.containers[] | select(.name | startswith("theia-ide")).name'
ワークスペース namespace 内で
che-trusted-ca-certsConfigMapオブジェクトを検索します。$ oc get cm che-trusted-ca-certs -n <workspace namespace>che-trusted-ca-certsConfigMapオブジェクトのエントリーに、以前に追加した別のエントリーがすべて含まれていることを確認します。さらに、予約されているca-bundle.crtエントリーが含まれる場合があります。エントリーを表示します。$ oc get cm che-trusted-ca-certs -n <workspace namespace> -o json | jq -r '.data | keys[]' ca-bundle.crt source-config-map-name.data-key.crtche-trusted-ca-certsConfigMapオブジェクトがワークスペース Pod のボリュームとして追加されていることを確認します。$ oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq '.spec.volumes[] | select(.configMap.name == "che-trusted-ca-certs")' { "configMap": { "defaultMode": 420, "name": "ca-certs" }, "name": "che-self-signed-certs" }
ボリュームがコンテナー (とくに Che-Theia IDE コンテナー) にマウントされていることを確認します。
$ oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq '.spec.containers[] | select(.name == "<theia ide container name>").volumeMounts[] | select(.name == "che-trusted-ca-certs")' { "mountPath": "/public-certs", "name": "che-trusted-ca-certs", "readOnly": true }
Che-Theia IDE コンテナーの
/public-certsフォルダーを検査し、その内容がcustom-certsConfigMapオブジェクトのエントリーの一覧と一致するかどうかを確認します。$ oc exec <workspace pod name> -c <theia ide container name> -n <workspace namespace> -- ls /public-certs ca-bundle.crt source-config-map-name.data-key.crt