programing

SSL을 사용하는 Apache-CER를 CRT 인증서로 변환하는 방법은 무엇입니까?

nasanasas 2020. 8. 17. 09:07
반응형

SSL을 사용하는 Apache-CER를 CRT 인증서로 변환하는 방법은 무엇입니까?


SSL로 Apache 2 서버를 설정해야합니다.

* .key 파일이 있지만 인증서 발급자가 * .cer 파일을 제공했습니다.

인터넷에 대한 모든 문서에서 * .crt 인증서 용입니다.

* .cer는 * .crt와 동일합니다.

그렇지 않은 경우 CER을 CRT 형식으로 어떻게 변환 할 수 있습니까?


암호화 인증서의 파일 확장자는 예상 한 것만 큼 표준화되지 않았습니다. Windows는 기본적으로 .crt파일을 두 번 클릭하는 것을 Windows 루트 인증서 저장소로 인증서를 가져 오는 요청으로 처리하지만 .cer파일을 인증서를보기위한 요청으로 처리합니다 . 따라서 적어도 Windows는 각 파일 유형을 두 번 클릭 할 때 발생하는 일에 대해 고유 한 다른 의미를 가지고 있다는 점에서 다릅니다.

그러나 두 번 클릭 할 때 Windows에서 처리하는 방식은 둘 사이의 유일한 차이점입니다. 두 확장 모두 공용 인증서가 포함되어 있음을 나타냅니다. 파일 이름을 바꾸거나 내가 본 모든 시스템 또는 구성 파일에서 다른 파일 대신 하나를 사용할 수 있습니다. 그리고 Windows가 아닌 플랫폼 (및 Windows에서도)에서 사람들은 사용하는 확장자에 대해 특별히주의하지 않고 파일 내용이 정확하면 둘 사이에 차이가 없기 때문에 두 가지를 서로 바꿔 사용할 수 있습니다.

좀 더 혼란스럽게 만드는 것은 인증서 데이터를 파일에 저장하는 두 가지 표준 방법이 있다는 것입니다. 하나는 "이진"X.509 인코딩이고 다른 하나는 일반적으로 " -----BEGIN CERTIFICATE-----"로 시작하는 "텍스트"base64 인코딩입니다 . 이들은 동일한 데이터를 다른 방식으로 인코딩합니다. 대부분의 시스템은 두 형식을 모두 허용하지만 필요한 경우 openssl 또는 다른 도구를 통해 하나를 다른 형식으로 변환 할 수 있습니다. 그러나 인증서 파일 내의 인코딩은 누군가가 파일에 부여한 확장자와는 무관합니다.

특정 프로그램에서 특정 유형의 파일을 사용하는 데 어려움이 있다는 구체적인 질문이있는 경우 보유하고있는 파일의 종류와 애플리케이션에서 예상하는 내용을 설명하는 별도의 질문을 게시하는 것이 가장 좋습니다.


문서 mod_ssl 에 따르면 :

SSLCertificateFile: 
   Name: SSLCertificateFile
   Description: Server PEM-encoded X.509 certificate file

인증서 파일은 PEM 인코딩 된 X.509 인증서 파일이어야합니다.

openssl x509 -inform DER -in certificate.cer -out certificate.pem

기본적으로 DER 및 Base64의 두 가지 CER 인증서 인코딩 유형이 있습니다. 유형 DER가 오류로드 인증서 (asn1 인코딩 루틴)를 반환 할 때 PEM을 시도하면 작동합니다.

openssl x509 -inform DER -in certificate.cer -out certificate.crt

openssl x509 -inform PEM -in certificate.cer -out certificate.crt


CER 는 바이너리 형식의 X.509 인증서이며 DER로 인코딩됩니다.
CRT 는 텍스트 ( base-64 ) 인코딩으로 캡슐화 된 이진 X.509 인증서 입니다.

동일한 인코딩이 아닙니다.


PKCS # 7로 인코딩 된 인증서 데이터가 포함 된 .cer 파일이 있고이를 PEM으로 인코딩 된 인증서 데이터 (일반적으로 .crt 또는 .pem 파일)로 변환하려고한다고 가정합니다. 예를 들어 PKCS # 7로 인코딩 된 데이터가 포함 된 .cer 파일은 다음과 같습니다.

----- PKCS7 시작 -----
MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH
...
POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G
+ bKhADEA
----- PKCS7 종료 -----

PEM 인증서 데이터는 다음과 같습니다.

----- 인증 시작 -----
MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm
...
nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY =
----- 인증서 종료 -----

.cer 파일 (PKCS # 7 데이터 포함)을 예상 할 수있는 PEM 데이터 ( BEGIN CERTIFICATE위 예의 블록 )로 변환하는 OpenSSL 명령이 있습니다 . certfile.cer라는 파일에서이 명령을 사용하여 PKCS # 7 데이터를 PEM 형식으로 강제 변환 할 수 있습니다.

openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem

.cer 또는 .pem 파일에는 하나 이상의 인증서 (아마도 전체 인증서 체인)가 포함될 수 있습니다.


.cer 파일을 .crt 파일로 변환하는 방법에 대한 질문에 대한 대답은 다음과 같습니다.

openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt

나는 명령을 사용합니다.

openssl x509 -inform PEM -in certificate.cer -out certificate.crt

But CER is an X.509 certificate in binary form, DER encoded. CRT is a binary X.509 certificate, encapsulated in text (base-64) encoding.

Because of that, you maybe should use:

openssl x509 -inform DER -in certificate.cer -out certificate.crt

And then to import your certificate:

Copy your CA to dir:

/usr/local/share/ca-certificates/

Use command:

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Update the CA store:

sudo update-ca-certificates


If your cer file has binary format you must convert it by

openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt

The .cer and .crt file should be interchangable as far as importing them into a keystore.

Take a look at the contents of the .cer file. Erase anything before the -----BEGIN CERTIFICATE----- line and after the -----END CERTIFICATE----- line. You'll be left with the BEGIN/END lines with a bunch of Base64-encoded stuff between them.

-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----

Then just import it into your keyfile using keytool.

keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer

Just do

openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt

참고URL : https://stackoverflow.com/questions/642284/apache-with-ssl-how-to-convert-cer-to-crt-certificates

반응형