답변:
참조 https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem을 (( "BEGIN RSA PRIVATE KEY"의 페이지를 검색) 아카이브 링크 단지의 경우에 후손에 대한).
BEGIN RSA PRIVATE KEY
PKCS # 1이며 RSA 키일뿐입니다. 기본적으로 PKCS # 8의 핵심 개체이지만 버전 또는 알고리즘 식별자가 없습니다. BEGIN PRIVATE KEY
PKCS # 8이며 키 유형이 키 데이터 자체에 포함되어 있음을 나타냅니다. 링크에서 :
암호화되지 않은 PKCS # 8 인코딩 데이터는 태그로 시작하고 끝납니다.
-----BEGIN PRIVATE KEY----- BASE64 ENCODED DATA -----END PRIVATE KEY-----
base64로 인코딩 된 데이터에는 다음과 같은 DER 구조가 있습니다.
PrivateKeyInfo ::= SEQUENCE { version Version, algorithm AlgorithmIdentifier, PrivateKey BIT STRING } AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }
따라서 RSA 개인 키의 경우 OID는 1.2.840.113549.1.1.1이며 PrivateKey 키 데이터 비트 열로 RSAPrivateKey가 있습니다.
반대로 BEGIN RSA PRIVATE KEY
RSA 키를 항상 지정하므로 키 유형 OID를 포함하지 않습니다. BEGIN RSA PRIVATE KEY
입니다 PKCS#1
:
RSA 개인 키 파일 (PKCS # 1)
RSA 개인 키 PEM 파일은 RSA 키에 따라 다릅니다.
태그로 시작하고 끝납니다.
-----BEGIN RSA PRIVATE KEY----- BASE64 ENCODED DATA -----END RSA PRIVATE KEY-----
base64로 인코딩 된 데이터에는 다음과 같은 DER 구조가 있습니다.
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
CRT 매개 변수를 포함하는 PKCS # 8 키를 생성합니다.
openssl genrsa
명령을 사용할 수 있습니다. 사용하여 openssl req
개인 키와 함께 종료됩니다 브라운관을 모두 생성하는 PKCS # 8 키를 누릅니다. genpkey
수동 상태 The use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.
. 그러나 일부 소프트웨어 ( mysql
)는 PKCS # 1 키만 사용할 수 있습니다 . PKCS # 8 에서 PKCS # 1 로 변환 은로 수행 할 수 있습니다 openssl rsa -in key.pem -out key.pem
. 다른 방법으로 변환은으로 수행 할 수 있습니다 openssl pkey -in key.pem -out key.pem
.
를보십시오 <openssl/pem.h>
. 가능한 BEGIN 마커를 제공합니다.
빠른 참조를 위해 위의 링크에서 컨텐츠 복사
#define PEM_STRING_X509_OLD "X509 CERTIFICATE"
#define PEM_STRING_X509 "CERTIFICATE"
#define PEM_STRING_X509_PAIR "CERTIFICATE PAIR"
#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
#define PEM_STRING_X509_CRL "X509 CRL"
#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
#define PEM_STRING_PUBLIC "PUBLIC KEY"
#define PEM_STRING_RSA "RSA PRIVATE KEY"
#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
#define PEM_STRING_DSA "DSA PRIVATE KEY"
#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
#define PEM_STRING_PKCS7 "PKCS7"
#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
#define PEM_STRING_PKCS8INF "PRIVATE KEY"
#define PEM_STRING_DHPARAMS "DH PARAMETERS"
#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS"
#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
#define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
#define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
#define PEM_STRING_PARAMETERS "PARAMETERS"
#define PEM_STRING_CMS "CMS"