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