1.13.4.2. 인증서 확인

Bookinfo 샘플 애플리케이션을 사용하여 CA에 연결된 인증서로 워크로드 인증서에 서명하는지 확인합니다. 이를 위해서는 openssl 이 시스템에 설치되어 있어야 합니다.

  1. 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.pemproxy-cert-3.pem 의 3개의 파일이 있어야 합니다.

  2. 루트 인증서가 관리자가 지정한 것과 동일한지 확인합니다. <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

    다음과 같은 결과가 표시됩니다. /tmp/root-cert.crt.txt 및 /tmp/pod-root-cert.crt.txt 파일은 동일합니다.

  3. 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

    다음과 같은 결과가 표시됩니다. /tmp/ca-cert.crt.txt 및 /tmp/pod-cert-chain-ca.crt.txt 파일은 동일합니다.

  4. 루트 인증서에서 워크로드 인증서로의 인증서 체인을 확인합니다. <path>를 인증서 경로로 교체합니다.

    $ openssl verify -CAfile <(cat <path>/ca-cert.pem <path>/root-cert.pem) ./proxy-cert-1.pem

    /proxy-cert-1.pem 결과가 표시됩니다. OK