누구나 파일에서 인증서 .crt
와 개인 키 .key
파일 을 추출 / 변환하는 올바른 방법 / 명령을 말해 줄 수 있습니까 .pem
? 나는 그것들이 상호 교환 가능하지만 어떻게 읽을 수는 없다는 것을 읽었습니다.
누구나 파일에서 인증서 .crt
와 개인 키 .key
파일 을 추출 / 변환하는 올바른 방법 / 명령을 말해 줄 수 있습니까 .pem
? 나는 그것들이 상호 교환 가능하지만 어떻게 읽을 수는 없다는 것을 읽었습니다.
답변:
이것을 사용하여 pem을 crt로 변환 할 수있었습니다.
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
openssl pkey -in mumble.pem -out mumble-key.pem
하십시오. OpenSSL 버전이 1.0.0보다 오래된 경우 키를 RSA 키로 추출하십시오.openssl rsa -in mumble.pem -out mumble-key.pem
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
오류를냅니다.
OpenSSL을 사용하여 변환
이 명령을 사용하면 인증서와 키를 다른 형식으로 변환하여 특정 유형의 서버 나 소프트웨어와 호환되도록 할 수 있습니다.
DER 파일 (.crt .cer .der)을 PEM으로 변환
openssl x509 -inform der -in certificate.cer -out certificate.pem
PEM 파일을 DER로 변환
openssl x509 -outform der -in certificate.pem -out certificate.der
개인 키와 인증서가 포함 된 PKCS # 12 파일 (.pfx .p12)을 PEM으로 변환
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
PEM 인증서 파일 및 개인 키를 PKCS # 12 (.pfx .p12)로 변환
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
PEM을 CRT (.CRT 파일)로 변환
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL Convert PEM
PEM을 DER로 변환
openssl x509 -outform der -in certificate.pem -out certificate.der
PEM에서 P7B로 변환
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
PEM을 PFX로 변환
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Convert DER
DER에서 PEM으로 변환
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B
P7B에서 PEM으로 변환
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
P7B를 PFX로 변환
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX
PFX에서 PEM으로 변환
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
OpenSSL로 rsa 키 생성
명령 행에서 공개 및 개인 키를 생성해야하는 명령 행에서 OpenSSL을 사용하는 경우 -passout 인수를 사용하여이 파일을 비밀번호로 보호해야합니다.이 인수가 취할 수있는 다양한 양식이 있으므로 OpenSSL 문서를 참조하십시오.
openssl genrsa -out private.pem 1024
1024 비트를 사용하는 private.pem이라는 키 파일을 만듭니다. 이 파일에는 실제로 개인 키와 공개 키가 모두 있으므로이 파일에서 공개 키를 추출해야합니다.
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
이제 공개 키만 포함 된 public.pem을 갖게되며이를 타사와 자유롭게 공유 할 수 있습니다. 공개 키를 사용하여 직접 무언가를 암호화 한 다음 개인 키를 사용하여 해독하면 모든 것을 테스트 할 수 있습니다. 먼저 암호화하려면 약간의 데이터가 필요합니다.
예제 파일 :
echo 'too many secrets' > file.txt
이제 file.txt에 일부 데이터가 있으며 OpenSSL 및 공개 키를 사용하여 암호화 할 수 있습니다.
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
이 파일은 file.ssl이라고하는 암호화 된 버전의 file.txt를 생성합니다.이 파일을 보면 파일이 바이너리 정크 일뿐입니다. 이제 개인 키를 사용하여 암호화를 해제 할 수 있습니다.
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
이제 decrypted.txt에 암호화되지 않은 파일이 있습니다.
cat decrypted.txt
|output -> too many secrets
OpenSSL의 RSA 도구 옵션
이름
rsa-RSA 키 처리 도구
개요
openssl rsa [-도움말] [-정보 PEM | NET | DER] [-결과 PEM | NET | DER] [-파일 이름] [-passin arg] [-out 파일 이름] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-엔진 ID]
기술
rsa 명령은 RSA 키를 처리합니다. 그것들은 다양한 형태와 그들의 구성 요소 사이에서 변환 될 수 있습니다. 이 명령은 개인 키 암호화에 기존 SSLeay 호환 형식을 사용합니다. 최신 응용 프로그램은 pkcs8 유틸리티를 사용하여보다 안전한 PKCS # 8 형식을 사용해야합니다.
명령 옵션
-help
사용법 메시지를 인쇄하십시오.
-inform DER|NET|PEM
입력 형식을 지정합니다. DER 옵션은 PKCS # 1 RSAPrivateKey 또는 SubjectPublicKeyInfo 형식과 호환되는 ASN1 DER 인코딩 형식을 사용합니다. PEM 형식은 기본 형식입니다. 추가 헤더 및 바닥 글 줄로 인코딩 된 DER 형식 base64로 구성됩니다. 입력 PKCS # 8 형식에서는 개인 키도 허용됩니다. NET 양식은 형식 섹션에 설명되어 있습니다.
-outform DER|NET|PEM
이것은 출력 형식을 지정하며 옵션은 -inform 옵션과 동일한 의미를 갖습니다.
-in filename
이 옵션이 지정되지 않은 경우 키 또는 표준 입력에서 읽을 파일 이름을 지정합니다. 키가 암호화되면 암호 문구를 입력하라는 메시지가 표시됩니다.
-passin arg
입력 파일 비밀번호 소스 arg 형식에 대한 자세한 내용은 openssl의 PASS PHRASE ARGUMENTS 섹션을 참조하십시오.
-out filename
이 옵션이 지정되지 않은 경우 키 또는 표준 출력에 쓸 출력 파일 이름을 지정합니다. 암호화 옵션이 설정되면 암호 문구가 표시됩니다. 출력 파일 이름은 입력 파일 이름과 같아서는 안됩니다.
-passout password
출력 파일 비밀번호 소스 arg 형식에 대한 자세한 내용은 openssl의 PASS PHRASE ARGUMENTS 섹션을 참조하십시오.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
이 옵션은 개인 키를 출력하기 전에 지정된 암호로 암호화합니다. 암호 문구가 프롬프트됩니다. 이러한 옵션을 지정하지 않으면 키가 일반 텍스트로 작성됩니다. 이는 rsa 유틸리티를 사용하여 암호화 옵션이없는 암호화 된 키를 읽음으로써 암호 문구를 키에서 제거하거나 암호 옵션을 설정하여 암호 문구를 추가하거나 변경하는 데 사용할 수 있음을 의미합니다. 이 옵션은 PEM 형식 출력 파일에만 사용할 수 있습니다.
-text
인코딩 된 버전 외에도 다양한 공개 또는 개인 키 구성 요소를 일반 텍스트로 인쇄합니다.
-noout
이 옵션은 인코딩 된 키 버전의 출력을 방지합니다.
-modulus
이 옵션은 키 모듈러스 값을 인쇄합니다.
-check
이 옵션은 RSA 개인 키의 일관성을 검사합니다.
-pubin
기본적으로 개인 키는 입력 파일에서 읽습니다.이 옵션을 사용하면 공개 키가 대신 읽 힙니다.
-pubout
기본적으로 개인 키가 출력됩니다.이 옵션을 사용하면 공개 키가 대신 출력됩니다. 이 옵션은 입력이 공개 키인 경우 자동으로 설정됩니다.
-RSAPublicKey_in, -RSAPublicKey_out
RSAPublicKey 형식을 제외하고 -pubin 및 -pubout과 같이 사용됩니다.
-engine id
고유 한 id 문자열로 엔진을 지정하면 rsa가 지정된 엔진에 대한 기능 참조를 얻으려고하므로 필요한 경우 초기화합니다. 그러면 엔진이 사용 가능한 모든 알고리즘의 기본값으로 설정됩니다.
노트
PEM 개인 키 형식은 머리글과 바닥 글 줄을 사용합니다.
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
PEM 공개 키 형식은 머리글과 바닥 글 줄을 사용합니다.
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
PEM RSAPublicKey 형식은 머리글과 바닥 글 줄을 사용합니다.
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
NET 양식은 이전 Netscape 서버 및 Microsoft IIS .key 파일과 호환되는 형식으로, 암호화에 무염 RC4를 사용합니다. 매우 안전하지 않으므로 필요할 때만 사용해야합니다.
일부 최신 버전의 IIS에는 내 보낸 .key 파일에 추가 데이터가 있습니다. 이들을 유틸리티와 함께 사용하려면 이진 편집기로 파일을보고 문자열 "private-key"를 찾은 다음 바이트 시퀀스 0x30, 0x82 (ASN1 SEQUENCE)로 다시 추적하십시오. 이 시점부터 모든 파일을 다른 파일로 복사하고이를 -inform NET 옵션과 함께 rsa 유틸리티의 입력으로 사용하십시오.
실시 예
RSA 개인 키에서 암호 문구를 제거하려면
openssl rsa -in key.pem -out keyout.pem
트리플 DES를 사용하여 개인 키를 암호화하려면
openssl rsa -in key.pem -des3 -out keyout.pem
개인 키를 PEM에서 DER 형식으로 변환하려면
openssl rsa -in key.pem -outform DER -out keyout.der
개인 키의 구성 요소를 표준 출력으로 인쇄하려면 다음을 수행하십시오.
openssl rsa -in key.pem -text -noout
개인 키의 공개 부분 만 출력하려면 다음을 수행하십시오.
openssl rsa -in key.pem -pubout -out pubkey.pem
개인 키의 공개 부분을 RSAPublicKey 형식으로 출력하십시오.
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
pem 파일에서 키와 인증서를 추출하려면 다음을 수행하십시오.
openssl pkey -in foo.pem -out foo.key
키를 추출하는 또 다른 방법 ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
.crt는 인증서를 pem 형식으로 저장합니다. 따라서 .pem은 csr (인증서 서명 요청), 개인 키, 공개 키 또는 다른 인증서와 같은 다른 인증서를 가질 수 있지만 인증서 만 저장하는 경우 .crt와 동일합니다.
pem은 각 섹션 사이에 머리글과 바닥 글이있는 기본 64 인코딩 파일입니다.
특정 섹션을 추출하려면 다음과 같은 perl 스크립트가 완전히 유효하지만 openssl 명령 중 일부를 자유롭게 사용할 수 있습니다.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
여기서 == 1은 필요한 섹션으로 변경할 수 있습니다. 분명히 필요한 머리글과 바닥 글을 정확히 알고 파일에 하나만 있으면 (일반적으로 인증서와 키만 보관하는 경우) 간단하게 만들 수 있습니다.
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem