개인 키 없이 P12에서 인증서 내보내기
PKCS12 번들은 키와 인증서를 함께 보관합니다. 먼저 구조를 읽고, 보호를 제거하는 대신 -nokeys로 인증서를 선택하십시오.
지원 티켓은 VPN 번들 안에 어떤 인증서가 있는지 묻고, 첫 충동은 모든 것을 내보내 첨부하는 것입니다. P12 파일은 인증서와 개인 키 자료를 하나의 컨테이너에 담습니다. 그래서 모든 것을 내보내는 것은 바로 보내지 말아야 할 것입니다. 질문에 답하는 명령은 변환 문제가 아니라 선택 문제입니다. 네 개의 플래그가 컨테이너의 어느 절반을 얻을지 결정하며, 그중 두 개는 실제보다 더 안전하게 들립니다.
컨테이너를 비우는 대신 읽는 것으로 시작하십시오.
PKCS12 파일이 실제로 담는 것
PKCS12 컨테이너는 하나 이상의 인증서, 경우에 따라 개인 키, 그리고 내용에 대한 message authentication code를 담습니다. 인증서에는 클라이언트 ID의 리프 인증서와 그것을 CA에 연결하는 중간 인증서가 포함될 수 있습니다. 키가 있을 때 그 파일을 문서가 아니라 비밀로 만드는 것은 키입니다.
이 구분이 -nokeys이 존재하는 이유이며 이 작업에 필요한 플래그가 그것인 이유입니다.
키를 쓰지 않고 번들 읽기
검사 형식은 구조와 알고리즘 세부 정보를 출력하고 아무것도 쓰지 않습니다: openssl pkcs12 -in client.p12 -info -noout. 가져오기 암호를 묻는데, 그것이 이 값에 맞는 자리입니다. 파일에 키가 있는지도 알려 줍니다. 암호를 입력할 수 없을 때는 -passin env:PKCS12_PASS를 사용하십시오. 셸 명령 안의 암호는 프로세스 목록 안의 암호이기 때문입니다. 이 단계는 아무것도 내보내지 않으며, 바로 그 점이 핵심입니다.
출력에서 세 가지를 읽으십시오. 인증서가 몇 개인지, 키가 있는지, 어떤 알고리즘이 그것을 보호하는지입니다.
-nokeys를 사용하고 -nocerts와 혼동하지 마십시오
-nokeys는 개인 키를 제외하고 인증서를 남깁니다. -clcerts는 그것을 클라이언트 인증서로 좁히고, -cacerts는 CA 인증서로 좁힙니다. 이 둘은 대안이 아니라 필터입니다. -nocerts은 같은 아이디어의 안전한 표기처럼 읽히지만 의미는 반대입니다. 인증서가 없어지고 키만 남습니다. 이것을 인증서 내보내기에 섞으면 개인 키가 디스크에 남습니다.
인증서 파일과 CA 파일만 생성하는 두 줄 형식은 다음과 같습니다:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pem오래된 번들은 OpenSSL 3에서 -legacy이 있어야 오래된 암호화를 읽을 수 있습니다. 이 플래그는 파서가 무엇을 받아들이는지를 바꾸고, 무엇을 내보내는지는 바꾸지 않습니다. 구문 분석이 지원되지 않는 알고리즘 오류로 실패하면 -legacy를 추가하는 것이 올바른 첫 조치이며, MAC 검사를 건너뛰는 것은 아닙니다.
종료 코드가 아니라 출력을 확인하십시오
종료 상태가 영이라는 것은 명령이 실행되었다는 뜻이지, 파일이 기대한 내용을 담고 있다는 뜻이 아닙니다. 출력에서 인증서를 세고 subject와 날짜를 읽으십시오: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. 지문을 지원 팀이 기대하는 값과 비교하십시오. 클라이언트 인증서 두 개가 든 번들은 두 블록짜리 파일을 만들고 대부분의 도구는 첫 번째만 읽습니다. 용도, 신뢰, 키 일치는 다시 별개의 검사입니다.
구문 분석되는 인증서는 구문 분석되는 인증서입니다. VPN이 받아들이는 인증서는 아닙니다.
파일이 정말 필요한지 결정하십시오
받는 쪽 클라이언트가 PKCS12를 직접 가져오면, 원본 번들을 승인된 경로로 보내고 암호를 따로 보관하는 것이 더 간단하며 보호도 유지됩니다. 추출은 검사, PEM이 필요한 클라이언트, 또는 특정 산출물을 요청한 지원 사례를 위한 것입니다. 추출은 매번 계층을 하나 제거하므로 이유가 있어야 합니다.
공개 인증서에는 개인 키가 없지만 이름과 조직 정보는 있습니다. 파일 자체가 요청되지 않았다면 파일 대신 티켓이 요청한 필드를 공유하십시오.