Na criptografia de chave pública RSA, as chaves pública e privada de um par são matematicamente relacionadas, pois compartilham o mesmo módulo. O comprimento do módulo, expresso em bits, é o comprimento da chave.
Para confirmar se uma chave privada específica corresponde à chave pública contida em uma solicitação de assinatura de certificado (CSR) e certificado, é preciso confirmar que os módulos de ambas as chaves são idênticos. Isso pode ser feito diretamente com OpenSSL no Linux / Unix, macOS ou Windows (com Subsistema Linux do Windows 10 or Cygwin), do seguinte modo:
Para visualizar o hash md5 do módulo da chave privada:
$ openssl rsa -noout -modulus -in mykey.key | openssl md5
Para visualizar o hash md5 do módulo do CSR:
$ openssl req -noout -modulus -in mycsr.csr | openssl md5
Para visualizar o hash md5 do módulo do certificado:
$ openssl x509 -noout -modulus -in mycert.crt | openssl md5
Se todos os três hashes corresponderem, o CSR, certificado e chave privada são compatíveis. Você pode usar diff3
para comparar os módulos dos três arquivos de uma vez:
$ openssl req -noout -modulus -in meucsr.csr > csr-mod.txt $ openssl x509 -noout -modulus -in meucert.crt > cert-mod.txt $ openssl rsa -noout -modulus -in minhachave.chave > privkey-mod.txt $ diff3 csr-mod.txt cert-mod.txt privkey-mod.txt
Se todos os três arquivos forem idênticos, diff3
não produzirá saída. Se você deseja comparar apenas dois arquivos (por exemplo, o certificado e a chave privada), basta usar diff
:
$ diff cert-mod.txt privkey-mod.txt
Mais uma vez, diff
não produzirá saída se os arquivos forem idênticos.