openssl pkcs12 내보내기가 추가 루트 앵커 인증서를 추가하고 Mac OS X에서 서버 인증서를 복제하는 이유는 무엇입니까?

openssl pkcs12 내보내기가 추가 루트 앵커 인증서를 추가하고 Mac OS X에서 서버 인증서를 복제하는 이유는 무엇입니까?

[원래Slack Overflow에 게시됨, 그런데 댓글 스레드에서 장소가 부적절하다고 불평했습니다.]

우리는 StartCom SSL 인증서를 Let's Encrypt로 전환하고 macOS Server + Apache HTTPD와 자동으로 작동하도록 설정하는 작업을 진행 중입니다. 명령줄 도구( security import)에서 macOS Server는 일반 파일을 허용하지 않습니다 . 즉, Apache에서 구성할 파일을 추출하는 파일을 .pem제공해야 합니다 . 짜증나고 무의미하지만, 그것이 지금 우리가 살아가야 할 이유입니다..p12.pem

이 파일을 생성하려면 .p12다음 명령을 실행해야 합니다.

openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/chain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12

그리고 여기서 이상해집니다. 출력 example.com.p12파일에 example.com인증서 가 있습니다.두 배, Let's Encrypt 중간 CA 인증서, 불필요한 자체 서명 DST 루트 CA X3 앵커 인증서(기본적으로 모든 브라우저에 설치되어 있음), 마지막으로 개인 키가 옵니다. 결과적으로 Apache SSL 핸드셰이크에는 서버 인증서가 두 번, 중간 CA 인증서와 루트 인증서(전송해서는 안 됨)가 포함되어 Qualys SSL Labs 테스터에 경고가 표시됩니다.

내부를 살펴보니 cert.pem서버 인증서만(한 번만) 포함되어 있습니다. chain.pem중간 CA 인증서만 포함합니다(루트 앵커 또는 서버 인증서는 포함하지 않음). privkey.pem개인 키만 포함되어 있습니다. openssl pkcs12 -export서버 인증서를 복제한 다음 루트 앵커 인증서를 찾아 추가하는 추가 단계로 이동하는 것도 마찬가지입니다 .

openSUSE Linux에서 동일한 명령을 실행하면 출력 .p12파일에는 서버 인증서(1회), 중간 CA 인증서 및 개인 키만 포함됩니다. 루트 앵커가 없습니다.

다음 변형을 시도했지만 출력에는 차이가 없었습니다.

openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12

openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-certfile /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12

Linux 시스템에서 잘못된 이중 서버 인증서 동작을 복제할 수 있는 유일한 방법은 다음을 수행하는 것입니다(그러나 루트 앵커는 여전히 포함되지 않습니다).

openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12

fullchain.pem( 대신 ... chain.pem과 함께 사용 cert.pem하면 서버 인증서가 중복되는 이유가 완벽하게 이해되지만 이는 Mac OS X에서 사용하는 명령이 아닙니다.)

openssl pkcs12 -export여기서 올바른 일을 하는 방법을 아시나요 ?

관련 정보