아래 명령에서는 첫 번째 깊이 인증서에 대해서만 Base64 핀을 생성할 수 있습니다. 하지만 인증서의 모든 깊이에 대해 핀을 생성해야 합니다.
openssl s_client -servername example.com -connect example.com:443 -showcerts
| openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
3개가 아닌 1개의 키만 제공합니다.
cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=
그렇다면 세 가지 수준의 핀을 모두 생성하려면 어떻게 해야 할까요?
답변1
서버에 이미 인증서 파일이 있어야 한다는 Romeo의 의견에 대부분 동의하지만,하다s_client
다음과 같이 할 수 있는 여러 인증서를 처리해야 합니다 .
openssl s_client ..... -showcerts \
| awk '/-----BEGIN/{f="cert."(n++)} f{print>f} /-----END/{f=""}'
# or input from bundle or chain file
for c in cert.*; do
openssl x509 <$c -noout -pubkey .....
done
rm cert.*
# use better temp name/location if you want
답변2
인증서(발급자의 CN)에서 발급자를 추출할 수 있습니다. 하지만 이 시점부터는 발급자 웹사이트에서 검색하여 이 인증서를 직접 받아야 합니다. 웹 서버에 액세스할 수 있는 경우 파일 시스템에서 인증서를 찾고 CA 인증서가 있는 파일에 대해 스크립트를 실행합니다.