Consulte https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (pesquise na página "BEGIN RSA PRIVATE KEY") ( link do arquivo para posteridade, apenas no caso).
BEGIN RSA PRIVATE KEY
é PKCS # 1 e é apenas uma chave RSA. É essencialmente apenas o objeto-chave do PKCS # 8, mas sem o identificador de versão ou algoritmo à frente. BEGIN PRIVATE KEY
é PKCS # 8 e indica que o tipo de chave está incluído nos próprios dados da chave. No link:
Os dados codificados PKCS # 8 não criptografados começam e terminam com as tags:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Nos dados codificados em base64, a seguinte estrutura DER está presente:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Portanto, para uma chave privada RSA, o OID é 1.2.840.113549.1.1.1 e existe um RSAPrivateKey como a cadeia de bits de dados da chave PrivateKey.
Ao contrário de BEGIN RSA PRIVATE KEY
, que sempre especifica uma chave RSA e, portanto, não inclui um tipo de chave OID. BEGIN RSA PRIVATE KEY
é PKCS#1
:
Arquivo de chave privada RSA (PKCS # 1)
O arquivo PEM de chave privada RSA é específico para chaves RSA.
Começa e termina com as tags:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Nos dados codificados em base64, a seguinte estrutura DER está presente:
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
openssl genpkey -algorithm RSA -out key.pem
gera a chave PKCS # 8 que inclui os parâmetros CRT.openssl genrsa
comando pode ser usado. Usaropenssl req
para gerar a chave privada e a crt terminará com uma chave PKCS # 8 . Ogenpkey
manual declaraThe use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.
. Mas alguns softwares (mysql
) podem usar apenas as teclas PKCS # 1 . A conversão de PKCS # 8 para PKCS # 1 pode ser feita comopenssl rsa -in key.pem -out key.pem
. A conversão para o outro lado pode ser feita comopenssl pkey -in key.pem -out key.pem
.Dê uma olhada
<openssl/pem.h>
. Dá possíveis marcadores de COMEÇO.Copiando o conteúdo do link acima para referência rápida:
fonte