1.13.4.2. 验证您的证书
使用 Bookinfo 示例应用程序来验证工作负载证书是否由插入到 CA 的证书签名。这要求您在机器上安装 openssl
要从 bookinfo 工作负载中提取证书,请使用以下命令:
$ sleep 60 $ oc -n bookinfo exec "$(oc -n bookinfo get pod -l app=productpage -o jsonpath={.items..metadata.name})" -c istio-proxy -- openssl s_client -showcerts -connect details:9080 > bookinfo-proxy-cert.txt $ sed -n '/-----BEGIN CERTIFICATE-----/{:start /-----END CERTIFICATE-----/!{N;b start};/.*/p}' bookinfo-proxy-cert.txt > certs.pem $ awk 'BEGIN {counter=0;} /BEGIN CERT/{counter++} { print > "proxy-cert-" counter ".pem"}' < certs.pem
运行此命令后,您的工作目录中应当有三个文件:
proxy-cert-1.pem
、proxy-cert-2.pem
和proxy-cert-3.pem
。验证 root 证书是否与管理员指定证书相同。将
<path>
替换为证书的路径。$ openssl x509 -in <path>/root-cert.pem -text -noout > /tmp/root-cert.crt.txt
在终端窗口中运行以下语法:
$ openssl x509 -in ./proxy-cert-3.pem -text -noout > /tmp/pod-root-cert.crt.txt
通过在终端窗口中运行以下命令来比较证书。
$ diff -s /tmp/root-cert.crt.txt /tmp/pod-root-cert.crt.txt
您应看到以下结果:
Files /tmp/root-cert.crt.txt and /tmp/pod-root-cert.crt.txt are identical
验证 CA 证书是否与管理员指定证书相同。将
<path>
替换为证书的路径。$ openssl x509 -in <path>/ca-cert.pem -text -noout > /tmp/ca-cert.crt.txt
在终端窗口中运行以下语法:
$ openssl x509 -in ./proxy-cert-2.pem -text -noout > /tmp/pod-cert-chain-ca.crt.txt
通过在终端窗口中运行以下命令来比较证书。
$ diff -s /tmp/ca-cert.crt.txt /tmp/pod-cert-chain-ca.crt.txt
您应看到以下结果:
Files /tmp/ca-cert.crt.txt and /tmp/pod-cert-chain-ca.crt.txt are identical.
从 root 证书到工作负载证书验证证书链。将
<path>
替换为证书的路径。$ openssl verify -CAfile <(cat <path>/ca-cert.pem <path>/root-cert.pem) ./proxy-cert-1.pem
您应看到以下结果:
./proxy-cert-1.pem: OK