Nella crittografia a chiave pubblica RSA, le chiavi private e pubbliche in una coppia sono matematicamente correlate in quanto condividono lo stesso modulo. La lunghezza del modulo, espressa in bit, è la lunghezza della chiave.
Per confermare che una determinata chiave privata corrisponde alla chiave pubblica contenuta in una richiesta di firma del certificato (CSR) e certificato, si deve confermare che i moduli di entrambe le chiavi sono identici. Questo può essere fatto direttamente con OpenSSL su Linux / Unix, macOS o Windows (con Sottosistema Linux di Windows 10 or Cygwin), come segue:
Per visualizzare l'hash md5 del modulo della chiave privata:
$ openssl rsa -noout -modulus -in mykey.key | apresl md5
Per visualizzare l'hash md5 del modulo di CSR:
$ openssl req -noout -modulus -in mycsr.csr | apresl md5
Per visualizzare l'hash md5 del modulo del certificato:
$ openssl x509 -noout -modulus -in mycert.crt | apresl md5
Se tutti e tre gli hash corrispondono, il CSR, certificato e chiave privata sono compatibili. Puoi usare diff3
per confrontare i moduli da tutti e tre i file contemporaneamente:
$ openssl req -noout -modulus -in mycsr.csr > csr-mod.txt $ openssl x509 -noout -modulus -in mycert.crt> cert-mod.txt $ openssl rsa -noout -modulus -in mykey.key> privkey-mod.txt $ diff3 csr-mod.txt cert-mod.txt chiave privata-mod.txt
Se tutti e tre i file sono identici, diff3
non produrrà alcun output. Se desideri confrontare solo due file (ad esempio il certificato e la chiave privata), puoi semplicemente usare diff
:
$ diff cert-mod.txt privkey-mod.txt
Ancora, diff
non produrrà output se i file sono identici.