This documentation is for a release that is no longer maintained
See documentation for the latest supported version.3.7.3.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
$ oc get cm --selector=app.kubernetes.io/component=ca-bundle,app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
Copy to Clipboard Copied! 使用以下命令检查
ConfigMap
对象的内容:oc get cm <name> -n openshift-devspaces -o yaml
$ oc get cm <name> -n openshift-devspaces -o yaml
Copy to Clipboard Copied! OpenShift Dev Spaces Pod Volumes list 包含使用
ca-certs-merged
ConfigMap
对象作为数据源的卷。要获取 OpenShift Dev Spaces Pod 的 Volumes 列表,请运行:oc get pod -l app.kubernetes.io/component=devspaces -o "jsonpath={.items[0].spec.volumes}" -n openshift-devspaces
$ oc get pod -l app.kubernetes.io/component=devspaces -o "jsonpath={.items[0].spec.volumes}" -n openshift-devspaces
Copy to Clipboard Copied! OpenShift Dev Spaces 在 OpenShift Dev Spaces 服务器的
/public-certs/
文件夹中挂载证书。要查看此文件夹中的文件列表,请输入:oc exec -t deploy/devspaces -n openshift-devspaces -- ls /public-certs/
$ oc exec -t deploy/devspaces -n openshift-devspaces -- ls /public-certs/
Copy to Clipboard Copied! 在 OpenShift Dev Spaces 服务器日志中,每个证书都添加到 Java 信任存储中,包括配置的 OpenShift Dev Spaces 证书。查看它们:
oc logs deploy/devspaces -n openshift-devspaces
$ oc logs deploy/devspaces -n openshift-devspaces
Copy to Clipboard Copied! OpenShift Dev Spaces 服务器 Java 信任存储包含证书。证书 SHA1 指纹位于信任存储中包含的证书的 SHA1 列表中。查看列表:
oc exec -t deploy/devspaces -n openshift-devspaces -- keytool -list -keystore /home/user/cacerts
$ oc exec -t deploy/devspaces -n openshift-devspaces -- keytool -list -keystore /home/user/cacerts Your keystore contains 141 entries: + (...)
Copy to Clipboard Copied! 要在本地文件系统中获取证书的 SHA1 哈希,请运行:
openssl x509 -in <certificate-file-path> -fingerprint -noout
$ 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
Copy to Clipboard Copied!
在工作区级别上验证导入的证书
- 启动工作区,获取创建它的项目名称并等待工作区启动。
获取工作区 Pod 的名称:
oc get pods -o=jsonpath='{.items[0].metadata.name}' -n <workspace namespace> | grep '^workspace.*'
$ oc get pods -o=jsonpath='{.items[0].metadata.name}' -n <workspace namespace> | grep '^workspace.*'
Copy to Clipboard Copied! 在工作区 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'
$ oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq -r '.spec.containers[] | select(.name | startswith("theia-ide")).name'
Copy to Clipboard Copied! 在工作区命名空间中查找
che-trusted-ca-certs
ConfigMap
对象:oc get cm che-trusted-ca-certs -n <workspace namespace>
$ oc get cm che-trusted-ca-certs -n <workspace namespace>
Copy to Clipboard Copied! 检查
che-trusted-ca-certs
ConfigMap
中的条目是否包含您之前添加的所有额外条目。另外,它可以包含ca-bundle.crt
保留条目。查看条目:oc get cm che-trusted-ca-certs -n <workspace namespace> -o json | jq -r '.data | keys[]'
$ 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.crt
Copy to Clipboard Copied! 确认
che-trusted-ca-certs
ConfigMap
对象已添加为工作区 Pod 中的卷:oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq '.spec.volumes[] | select(.configMap.name == "che-trusted-ca-certs")'
$ 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" }
Copy to Clipboard Copied! 确认卷已挂载到容器中,特别是 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")'
$ 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 }
Copy to Clipboard Copied! 检查 Che-Theia IDE 容器中的
/public-certs
文件夹,并检查其内容是否与custom-certs
ConfigMap
中的条目列表匹配:oc exec <workspace pod name> -c <theia ide container name> -n <workspace namespace> -- ls /public-certs
$ 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
Copy to Clipboard Copied!