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
の 3 つのファイルが作成されるはずです。ルート証明書が管理者が指定したものと同じであることを確認します。
<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.
ルート証明書からワークロード証明書への証明書チェーンを確認します。
<path>
を証明書へのパスに置き換えます。$ openssl verify -CAfile <(cat <path>/ca-cert.pem <path>/root-cert.pem) ./proxy-cert-1.pem
以下のような出力が表示されるはずです:
./proxy-cert-1.pem: OK