X. 509, PKCS 파일 형식 소개
위 키 에서 인용:
ASN.1 is a standard
interface description language for defining
data structures that can be serialized and deserialized in a
cross-platform way.
즉, ASN. 1 은 데이터 구 조 를 정의 하 는 인터페이스 기술 언어 로 바 이 너 리 도 파일 형식 도 아 닙 니 다. 아래 의 예 를 보면 알 수 있 습 니 다.
FooQuestion ::= SEQUENCE {
trackingNumber INTEGER,
question IA5String
}
이 코드 는 FooQuestion 의 데이터 구 조 를 정의 합 니 다. 다음은 FooQuestion 이라는 데이터 인터페이스의 구체 적 인 데이터 입 니 다.
myQuestion FooQuestion ::= SEQUENCE {
trackingNumber 5,
question "Anybody there?"
}
ASN. 1 은 아래 에 설명 할 X. 509 와 PKCS group of cryptography standards 등 여러 곳 에 사 용 됩 니 다.
파일 인 코딩 형식
DER 인 코딩 형식
위 키 에서 인용:
ASN.1 is closely associated with a set of encoding rules that specify how to represent a data structure as a series of bytes
ASN. 1 은 데이터 구 조 를 바 이 너 리 로 표시 하 는 방법 을 규정 하 는 관련 인 코딩 규칙 이 있 습 니 다. DER 은 그 중의 하나 입 니 다.
위의 FooQuestion 의 예 를 DER 로 인 코딩 하면 (16 진수):
30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f
번역 하면:
30 — type tag indicating SEQUENCE
13 — length in octets of value that follows
02 — type tag indicating INTEGER
01 — length in octets of value that follows
05 — value (5)
16 — type tag indicating IA5String
(IA5 means the full 7-bit ISO 646 set, including variants,
but is generally US-ASCII)
0e — length in octets of value that follows
41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f — value ("Anybody there?")
이곳 을 보면 DER 인 코딩 형식 에 대해 비교적 좋 은 인식 을 가지 게 될 것 이다.
PEM 인 코딩 형식
위 키 에서 인용:
Privacy-Enhanced Mail (PEM) is a de facto file format for storing and sending cryptographic keys, certificates, and other data, based on a set of 1993 IETF standards defining "privacy-enhanced mail."
PEM 은 암호학 key, 인증서 및 기타 데 이 터 를 저장 하고 전송 하 는 파일 형식의 사실 표준 입 니 다.ASN. 1 을 사용 하 는 많은 암호학 표준 (예 를 들 어 X. 509 와 PKCS) 은 DER 인 코딩 을 사용 하 는데 DER 인 코딩 의 내용 은 바 이 너 리 로 메 일과 전송 하기에 적합 하지 않 기 때문에 PEM 을 사용 하여 바 이 너 리 내용 을 ASCII 코드 로 변환 합 니 다.파일 내용 의 형식 은 다음 과 같 습 니 다:
-----BEGIN label-----
BASE64Encoded
-----END label-----
label 은 내용 이 어떤 유형 인지 구분 하 는 데 사 용 됩 니 다. 다음 에 말씀 드 리 겠 습 니 다.
PEM 과 관련 된 RFC 는 매우 많은 데 본 논문 의 내용 과 관련 된 것 은 RFC 7468 이다. 이 안에 많은 label 이 규정 되 어 있 지만 모든 label 에 대응 하 는 RFC 나 Specification 이 있 는 것 이 아니 라 이런 label 은 약 속 된 것 일 뿐이다.
PEM 은 실제로 DER 인 코딩 된 파일 의 바 이 너 리 내용 을 base 64 로 인 코딩 한 다음
-----BEGIN label-----
이러한 머리 와 -----END label-----
같은 끝 을 더 하고 중간 은 DER 파일 의 Base 64 인 코딩 이다.우 리 는 아래 의 방법 을 통 해 이 결론 을 검증 할 수 있 습 니 다. 선생님 은 RSA Private Key 가 되 고 인 코딩 형식 은 PEM 형식 입 니 다.
openssl genrsa -out key.pem
파일 내용 을 살 펴 보면 label 은
RSA PRIVATE KEY
:-----BEGIN RSA PRIVATE KEY-----
BASE64Encoded
-----END RSA PRIVATE KEY-----
그리고 우 리 는 PEM 형식 을 DER 형식 으로 변환 합 니 다.
openssl rsa -in key.pem -outform der -out key.der
이 럴 때 파일 내용 을 보면 모두 바 이 너 리 라 는 것 을 알 수 있 을 것 이다.그리고 DER 파일 의 내용 Base 64 를 한 번 보면 PEM 파일 과 같은 내용 을 볼 수 있 습 니 다.
base64 -i key.der -o key.der.base64
인증서, 암호학 Key 형식
위 에서 말 한 PEM 은 인증서, 암호학 Key 파일 에 대한 인 코딩 방식 입 니 다. 다음은 이 인증서, 암호학 Key 파일 형식 을 예 로 들 어 보 겠 습 니 다.
X. 509 인증서
위 키 에서 인용:
In cryptography,
X.509 is a standard defining the format of public key certificates. X.509 certificates are used in many Internet protocols, including TLS/SSL, which is the basis for HTTPS, the secure protocol for browsing the web.
X. 509 는 Public Key Certificates 의 형식 표준 으로 TLS / SSL 이 사용 하고 TLS / SSL 은 HTTPS 의 기초 이기 때문에 HTTPS 도 사용 합 니 다.이른바 Public Key Certificates 는 Digital Certificate 또는 Identity Certificate 라 고도 부른다.
An X.509 certificate contains a public key and an identity (a hostname, or an organization, or an individual), and is either signed by a certificate authority or self-signed.
X. 509 Certificate 는 Public Key 와 신분 정 보 를 포함 하고 있 습 니 다. CA 에 의 해 서명 되 거나 직접 서명 되 었 습 니 다.
다음 그림 은 X. 509 Certificate 입 니 다.
사실 X. 509 Certificate 라 는 명 사 는 보통 IETF 의 PKIX Certificate 와 CRL Profile 을 가리 키 는데 RFC 5280 을 볼 수 있다.그래서 PKIX Certificate 라 는 글 자 를 봤 을 때 X. 509 Certificate 라 고 볼 수 있 습 니 다.
PKCS 시리즈
위 키 에서 인용:
In cryptography,
PKCS stands for "Public Key Cryptography Standards"
앞서 언급 한 X. 509 은 Public Key Certificates 의 포맷 을 정의 하 는 기준 으로 PKCS 와 비슷 해 보이 지만 실제로는 다르다. PKCS 는 Public Key 암호학 표준 이다.또한 Public - Key Cryptography 는 이름 이 Public Key 만 다 루 는 것 처럼 보이 지만 실제로는 Priviate Key 도 다 루 기 때문에 PKCS 도 Private Key 를 다 루 고 있다.
PKCS 에는 모두 15 개의 표준 번호 가 있 습 니 다. 여 기 는 PKCS \ # 1, PKCS \ # 8, PKCS \ # 12 만 선택 합 니 다.
PKCS #1
PKCS \ # 1, RSA Cryptography Standard, RSA Public Key 와 Private Key 수학 속성 과 형식 을 정 의 했 습 니 다. 자세 한 내용 은 RFC 8017 참조.
PKCS #8
PKCS \ # 8, Private - Key Information Syntax Standard, Private Certificate Keypairs (RSA 에 국한 되 지 않 음) 를 암호 화하 거나 비 암호 적 으로 저장 하 는 데 사 용 됩 니 다. 자세 한 내용 은 RFC 5858 참조.
PKCS #12
PKCS \ # 12 는 일반적으로 Private Keys 와 Public Key Certificates (예 를 들 어 앞에서 언급 한 X. 509) 를 저장 하 는 파일 형식 을 정의 하고 암호 기반 대칭 키 로 보호 합 니 다.상기 Private Keys 와 Public Key Certificates 는 복수 형식 입 니 다. 이 는 PKCS \ # 12 파일 이 실제 적 으로 Keystore 이 고 PKCS \ # 12 파일 은 자바 Key Store (JKS) 로 사용 할 수 있 음 을 의미 합 니 다. 자세 한 내용 은 RFC 7292 참조.
인증 서 를 자신의 CA 로 발급 했다 면 다음 명령 을 실행 하면 PKCS \ # 12 keystore 를 생 성 할 수 있 습 니 다.
openssl pkcs12 -export \
-in \
-inkey \
-name my-cert \
-caname my-ca-root \
-CAfile \
-chain
-out
PKCS \ # 12 는 일반적으로 PEM 인 코딩 형식 을 내 보 내지 않 습 니 다.
PEM 형식 속사
PEM 파일 의 내용 이 어떤 형식 인지 모 르 면 아래 에 따라 조회 할 수 있 습 니 다.
X.509 Certificate
RFC7468 - Textual Encoding of Certificates
-----BEGIN CERTIFICATE-----
BASE64Encoded
-----END CERTIFICATE-----
X.509 Certificate Subject Public Key Info
RFC7468 - Textual Encoding of Subject Public Key Info
-----BEGIN PUBLIC KEY-----
BASE64Encoded
-----END PUBLIC KEY-----
PKCS #1 Private Key
RFC 나 권위 있 는 Specification 이 없 으 면 이 형식 은 때때로 전통 적 인 format, SSLeay format (SO 참조) 라 고 불 린 다.
-----BEGIN RSA PRIVATE KEY-----
BASE64Encoded
-----END RSA PRIVATE KEY-----
PKCS #1 Public Key
RFC 나 권위 가 없습니다. Specification
-----BEGIN RSA PUBLIC KEY-----
BASE64Encoded
-----END RSA PUBLIC KEY-----
PKCS #8 Unencrypted Private Key
RFC7468 - One Asymmetric Key and the Textual Encoding of PKCS #8 Private Key Info
-----BEGIN PRIVATE KEY-----
BASE64Encoded
-----END PRIVATE KEY-----
PKCS #8 Encrypted Private Key
RFC7468 - Textual Encoding of PKCS #8 Encrypted Private Key Info
-----BEGIN ENCRYPTED PRIVATE KEY-----
BASE64Encoded
-----END ENCRYPTED PRIVATE KEY-----
개인 키 조작 명령
생 성
PKCS \ # 1 형식의 RSA Private Key 생 성
openssl genrsa -out private-key.p1.pem 2048
바꾸다
PKCS #1 -> Unencrypted PKCS #8
openssl pkcs8 -topk8 -in private-key.p1.pem -out private-key.p8.pem -nocrypt
PKCS #1 -> Encrypted PKCS #8
openssl pkcs8 -topk8 -in private-key.p1.pem -out private-key.p8.pem
이 과정 에서 비밀 번 호 를 입력 하 게 될 것 입 니 다. 최소 4 자 를 입력 해 야 하기 때문에 PKCS \ # 8 은 PKCS \ # 1 보다 안전 합 니 다.
PKCS #8 -> PKCS #1
openssl rsa -in private-key.p8.pem -out private-key.p1.pem
이 PKCS \ # 8 이 암호 화 되 어 있다 면 비밀 번 호 를 입력 해 야 합 니 다.
Public Key 조작 명령
PKCS \ # 1 / \ # 8 에서 추출
추출 이란 Private Key 에서 Public Key 를 추출 하 는 것 을 말 합 니 다.
openssl rsa
PKCS \ # 1 과 PKCS \ # 8 을 동시에 지원 하 는 RSA Private Key 입 니 다. 유일한 차이 점 은 PKCS \ # 8 이 암호 화 되면 비밀 번 호 를 입력 하 라 는 것 입 니 다.X. 509 형식 RSA 공개 키 추출
openssl rsa -in private-key.pem -pubout -out public-key.x509.pem
PKCS \ # 1 형식 추출 RSA 공용 키
openssl rsa -in private-key.pem -out public-key.p1.pem -RSAPublicKey_out
X. 509 인증서 에서 추출
openssl x509 -in cert.pem -pubkey -noout > public-key.x509.pem
바꾸다
X.509 RSA Public Key -> PKCS #1 RSA Public Key
openssl rsa -pubin -in public-key.x509.pem -RSAPublicKey_out -out public-key.p1.pem
PKCS #1 RSA Public Key -> X.509 RSA Public Key
openssl rsa -RSAPublicKey_in -in public-key.p1.pem -pubout -out public-key.x509.pem
참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Nginx를 사용하여 도메인을 포트 번호로 리디렉션하고 SSL을 설정하는 방법은 무엇인가요?nano 또는 vim에서 이 파일 열기/etc/nginx/nginx.conf nginx.conf를 업데이트한 후 이 명령을 적용합니다. nginx.conf 테스트sudo nginx -tnginx 서비스 다시 시작su...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.