Генерация отпечатков HPKP для всей цепочки сертификатов

Генерация отпечатков HPKP для всей цепочки сертификатов

Из команды ниже можно сгенерировать Base64 pin только для сертификата первой глубины. Но нужно сгенерировать pin для всей глубины сертификата.

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

Дает только один ключ вместо трех,

cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=

Итак, как нам сгенерировать все три уровня пинов?

решение1

Хотя я в целом согласен с Ромео, что у вас уже должны быть файлы сертификатов на сервере, если выделатьнеобходимо обработать несколько сертификатов из одного, 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

Связанный контент