Pem 파일이란 무엇이며 다른 OpenSSL 생성 키 파일 형식과 어떻게 다릅니 까?


1342

두 대의 데비안 서버를 관리 할 책임이 있습니다. 보안 인증서로 무엇이든해야 할 때마다 Google은 자습서를 제공하고 최종적으로 작동 할 때까지 이기고 있습니다.

하지만, 내 검색에 나는 종종 다른 파일 형식 건너 ( .key, .csr, .pem)하지만 각 파일 형식의 목적이 무엇의 좋은 설명을 찾을 수 없었습니다.

ServerFault의 좋은 사람들 이이 문제에 대해 명확하게 설명 할 수 있는지 궁금합니다.


답변:


1654

SSL은 오랫동안 사용되어 왔으며 컨테이너 형식에 동의 할 것이라고 생각할 것입니다. 그리고 당신 말이 맞아. 표준이 너무 많습니다. 이것이 제가 아는 것입니다. 다른 사람들도 그렇게 할 것입니다.

  • .csr- 인증서 서명 요청입니다. 일부 응용 프로그램은이를 인증 기관에 제출하기 위해이를 생성 할 수 있습니다. 실제 형식은 PKCS10이며 RFC 2986에 정의되어 있습니다. 제목, 조직, 상태, 기타 정보와 같은 요청 된 인증서의 일부 / 모든 주요 정보와 서명 할 인증서 의 공개 키 가 포함됩니다. 이것들은 CA에 의해 서명되고 인증서가 반환됩니다. 반환 된 인증서는 공개 인증서 자체가 형식의 몇 수 있습니다 (공개 키하지만 개인 키를 포함).
  • .PEM이 - RFC에 정의 1421 을 통해 1424 ,이 (아파치 설치하고 CA 인증서 파일 등과 마찬가지로 단지 공용 인증서를 포함 할 수 컨테이너 형식입니다 /etc/ssl/certs), 또는 공개 키, 개인 키를 포함하여 전체 인증서 체인을 포함 할 수 있으며, 루트 인증서. 혼란스럽게도, PKCS10 형식이 PEM으로 변환 될 수 있으므로 CSR을 인코딩 할 수도 있습니다 (예 : 여기에 사용됨 ). 이 이름은 안전한 전자 메일에 실패한 방법이지만 사용 된 컨테이너 형식 인 PEM (Privacy Enhanced Mail) 의 이름이며 x509 ASN.1 키의 base64 변환입니다.
  • .key- 특정 인증서의 개인 키만 포함하는 PEM 형식 파일이며 표준 이름이 아닌 일반적인 이름 일뿐입니다. 아파치 설치에서 이것은 종종에 있습니다 /etc/ssl/private. 이러한 파일에 대한 권한은 매우 중요하며 일부 프로그램은 이러한 인증서를 잘못 설정하면로드를 거부합니다.
  • .pkcs12 .pfx .p12 -RSA에서 처음 공개 키 암호화 표준 (PKCS)으로 정의한 "12"변형은 원래 Microsoft에 의해 개선 된 후 RFC 7292 로 제출되었습니다 . 이것은 공개 및 개인 인증서 쌍을 모두 포함하는 비밀번호 컨테이너 형식입니다. .pem 파일과 달리이 컨테이너는 완전히 암호화됩니다. Openssl은 이것을 공개 키와 개인 키가 모두있는 .pem 파일로 바꿀 수 있습니다.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

때때로 나타나는 다른 형식들 :

  • .der -ASN.1 구문을 바이너리로 인코딩하는 방법 인 .pem 파일은 Base64로 인코딩 된 .der 파일입니다. OpenSSL은이를 .pem ( openssl x509 -inform der -in to-convert.der -out converted.pem)으로 변환 할 수 있습니다 . Windows는이를 인증서 파일로 간주합니다. 기본적으로 Windows는 인증서를 다른 확장자를 가진 .DER 형식의 파일로 내 보냅니다. 처럼...
  • .cert .cer .crt- 다른 확장자를 가진 .pem (또는 드물게 .der) 형식의 파일로, Windows 탐색기에서 인증서로 .pem이 아닌 파일을 인식합니다.
  • .p7b .keystore - RFC 2315 에서 PKCS 번호 7로 정의되어 있으며 이는 Windows에서 인증서 교환을 위해 사용하는 형식입니다. Java는이를 기본적으로 이해하며 종종 .keystore확장으로 사용합니다. .pem 스타일 인증서와 달리이 형식 에는 인증 경로 인증서를 포함 하는 정의 된 방법이 있습니다.
  • .crl- 인증서 해지 목록 인증 기관은 만료 전에 인증서를 인증 해제하는 방법으로이를 생성합니다. 때로는 CA 웹 사이트에서 다운로드 할 수 있습니다.

요약하면 인증서와 해당 구성 요소를 제시하는 네 가지 방법이 있습니다.

  • PEM -RFC에서 관리하며 오픈 소스 소프트웨어에서 우선적으로 사용합니다. 다양한 확장명을 가질 수 있습니다 (.pem, .key, .cer, .cert 등).
  • PKCS7 -Java에서 사용하고 Windows에서 지원하는 공개 표준입니다. 개인 키 자료를 포함하지 않습니다.
  • PKCS12- 일반 텍스트 PEM 형식에 비해 향상된 보안을 제공하는 RFC에서 나중에 정의 된 Microsoft 개인 표준입니다. 여기에는 개인 키 자료가 포함될 수 있습니다. Windows 시스템에서 우선적으로 사용되며 openssl을 사용하여 PEM 형식으로 자유롭게 변환 할 수 있습니다.
  • DER -PEM의 부모 형식입니다. base64로 인코딩 된 PEM 파일의 이진 버전으로 생각하면 유용합니다. 일상적으로 Windows 외부에서는 많이 사용되지 않습니다.

이게 도움이 되길 바란다.


297
표준에 대한 좋은 점은 선택할 수있는 사람이 너무 많다는 것입니다.
squillman

36
.crt는 .cert와 .cer의 또 다른 확장입니다
David Pashley

44
PEM은 인증서 (일명 공개 키), 개인 키 또는 실제로 함께 연결된 파일 형식입니다. 파일 확장자에 많은주의를 기울이지 마십시오. 그것은 개인 정보 보호 강화 메일을 의미합니다. 많이 사용되지는 않지만 파일 형식이 붙어 있습니다.
Dan Carley

20
매우 유용한 답변이지만에서 만든 .pub 형식을 다루지 않았다고 생각합니다 ssh-keygen. 그것이 다른 것들과 어떻게 연결되는지 아는 것이 유용 할 것입니다.
Jez December

24
"Privacy Enhanced Email"은 "PEM"이 아니라 "PEE"라는 약어를 제공합니다. RFC는 "개인 정보 보호 강화 메일"이라는 문구를 사용하는 경향이 있습니다
aidan

141

PEM 자체는 인증서가 아니며 데이터를 인코딩하는 방법 일뿐입니다. X.509 인증서는 PEM을 사용하여 일반적으로 인코딩되는 데이터 유형 중 하나입니다.

PEM은 X.509 인증서 (이 구조는 ASN.1을 사용하여 정의 됨)이고 ASN.1 DER (고유 인코딩 규칙)을 사용하여 인코딩 된 다음 Base64 인코딩을 통해 실행되고 일반 텍스트 앵커 라인 (BEGIN CERTIFICATE 및 END CERTIFICATE) 사이에 붙어 있습니다. ).

PKCS # 7 또는 PKCS # 12 표현을 사용하여 동일한 데이터를 표시 할 수 있으며 openssl 명령 행 유틸리티를 사용하여이를 수행 할 수 있습니다.

PEM의 확실한 이점은 앵커 라인이 있고 7 비트로 깨끗하기 때문에 전자 메일 메시지 본문에 붙여 넣기가 안전하다는 것입니다.

RFC1422 에는 키 및 인증서와 관련된 PEM 표준에 대한 자세한 내용이 있습니다.


1
"openssl 명령 줄을 사용하여"이 작업을 어떻게 수행합니까?
Samik R

2
DER 파일 (.crt .cer .der)을 PEM으로 변환하려면 다음을 수행하십시오 openssl x509 -inform der -in cert.cer -out cert.pem. PEM 파일을 DER로 변환하려면 : openssl x509 -outform der -in cert.pem -out certi.der. 개인 키와 인증서가 포함 된 PKCS # 12 파일 (.pfx .p12)을 PEM으로 변환하려면 : openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. PEM을 인증서 파일 및 PKCS 번호에 대한 개인 키를 변환하려면 12 (.PFX가 .p12) openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt에서 여기
mpeac

54

때로는 .crt파일이 이미입니다 .pem. 참조 : https : //.com/questions/991758/openssl-pem-key


4
사실, 나는 오늘 이것을 방금 알아 차렸다. 랙 공간로드 밸런서에 PEM ​​인증서를 입력해야했고 생성 된 crt가 해당 형식인지 궁금했습니다. 그러나 그것은 그렇게 작동했기 때문에 이것이 나의 결론이기도합니다.이 .crt의 대부분은 PEM 형식으로 나타납니다.
Glenn Plas

@GlennPlas 는 파일의 이름이나 확장자가 아닌 파일 의 내용 대신에 초점을 둡니다 . 그것은 .foobar중요한 모든 것을
요구할
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.