3.7.2.2. インポートされた証明書に関する問題のトラブルシューティング
証明書を追加した後に問題が発生した場合は、OpenShift Dev Spaces のインスタンスレベルおよびワークスペースレベルで指定された値を確認します。
OpenShift Dev Spaces インスタンスレベルでのインポート済み証明書の検証
OpenShift Dev Spaces Operator デプロイメントの場合、
CheCluster
が配置されている名前空間には、正しいコンテンツを含むラベル付き 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 yaml
OpenShift Dev Spaces Pod Volumes リストには、
ca-certs-merged
ConfigMap をデータソースとして使用するボリュームが含まれています。OpenShift Dev Spaces Pod のボリュームのリストを取得するには:$ oc get pod -o json <devspaces-pod-name> -n openshift-devspaces | jq .spec.volumes
OpenShift Dev Spaces は、証明書を OpenShift Dev Spaces サーバーコンテナーの
/public-certs/
フォルダーにマウントします。このフォルダー内のファイルのリストを表示するには、次のように入力します。$ oc exec -t <devspaces-pod-name> -n openshift-devspaces -- ls /public-certs/
OpenShift Dev Spaces サーバーログに、設定された OpenShift Dev Spaces 証明書など、Java トラストストアに追加されたすべての証明書に対する行があります。次の表示:
$ oc logs <devspaces-pod-name> -n openshift-devspaces
OpenShift Dev Spaces サーバーの Java トラストストアに証明書が含まれます。証明書の SHA1 フィンガープリントは、トラストストアに含まれる証明書の SHA1 リストにあります。リストを表示します。
$ oc exec -t <devspaces-pod-name> -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 内で
ca-certs
ConfigMap を探します。$ oc get cm ca-certs <workspace namespace>
ca-certs
ConfigMap のエントリーに事前に追加した追加エントリーがすべて含まれていることを確認します。さらに、予約されているca-bundle.crt
エントリーが含まれる場合があります。エントリーを表示します。$ oc get cm ca-certs -n <workspace namespace> -o json | jq -r '.data | keys[]' ca-bundle.crt source-config-map-name.data-key.crt
ca-certs
ConfigMap がワークスペース Pod のボリュームとして追加されていることを確認します。$ oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq '.spec.volumes[] | select(.configMap.name == "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-self-signed-certs")' { "mountPath": "/public-certs", "name": "che-self-signed-certs", "readOnly": true }
Che-Theia IDE コンテナーの
/public-certs
フォルダーを検査し、その内容がca-certs
ConfigMap のエントリーの一覧と一致するかどうかを確認します。$ 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