I RSA-nyckelkryptografi är de privata och offentliga nycklarna i ett par matematiskt besläktade genom att de delar samma modul. Längden på modulen, uttryckt i bitar, är nyckellängden.
För att bekräfta att en viss privat nyckel matchar den offentliga nyckeln som finns i en begäran om certifikatsignering (CSR) och certifikat måste man bekräfta att modulerna för båda tangenterna är identiska. Detta kan göras enkelt med OpenSSL på Linux / Unix, macOS eller Windows (med Windows 10: s Linux-delsystem or Cygwin), som följer:
Så här visar du md5-hash för den privata nyckelns modul:
$ openssl rsa -noout -modulus -i mykey.key | openssl md5
För att se md5-hash för modulen för CSR:
$ openssl req -noout -modul -in mycsr.csr | openssl md5
Så här visar du hash för md5 för certifikatets modul:
$ openssl x509 -nära -modulus -in mycert.crt | openssl md5
Om alla tre hascherna matchar, CSR, certifikat och privat nyckel är kompatibla. Du kan använda diff3
för att jämföra modulerna från alla tre filerna samtidigt:
$ openssl req -noout -modul -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 privkey-mod.txt
Om alla tre filerna är identiska, diff3
ger ingen utgång. Om du bara vill jämföra två filer (t.ex. certifikatet och den privata nyckeln) kan du bara använda diff
:
$ diff cert-mod.txt privkey-mod.txt
Återigen, diff
ger ingen utgång om filerna är identiska.