O comando genpkey pode criar outros tipos de chaves privadas - DSA, DH, EC e talvez GOST - enquanto o genrsa , como o próprio nome indica, só gera chaves RSA. Existem comandos equivalentes de gendh e gendsa .
No entanto, a documentação do OpenSSL afirma que esses comandos gen* foram substituídos pelo comando genérico genpkey .
No caso de seus exemplos, ambos geram chaves privadas RSA.
openssl genrsa -out genrsa.key 2048
e
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out genpkey.key
irá gerar uma chave RSA de 2048 bits com o expoente configurado para 65537.
Simplesmente cat dos arquivos resultantes para ver se ambos são chaves privadas no formato PEM; Embora openssl rsa os inclua em BEGIN RSA PRIVATE KEY e END RSA PRIVATE KEY , enquanto openssl genpkey omite o RSA . O primeiro é o formato PKCS # 1 , enquanto o segundo é PKCS # 8 .
A execução de openssl rsa text -in <filename> contra ambos mostra que são chaves privadas RSA com o mesmo publicExponent . O mais recente comando genpkey tem a opção de alterar isso usando -pkeyopt rsa_keygen_pubexp:value , enquanto o comando genrsa não tem essa opção.