
p12 인증서 저장소가 있고 여러 다른 사이트와 관련된 인증서가 많기 때문에 한 사이트에 대한 인증서도 많습니다. 이름에는 개인 데이터를 통해 인증서 사용자를 식별하는 중요한 정보가 있으므로 이름을 보존할 수 있는 방법으로 추출하려고 합니다. 하지만 지금까지 나는 이것을 시도했습니다.
pkcs12 -in myDatabaseCerts.p12 -clcerts -nokeys -out publictheCerts.pem
이렇게 하면 모든 인증서를 하나의 파일에 넣을 수 있습니다.
그리고
openssl pkcs12 -in myDatabaseCerts.p12 -nocerts -out keys.pem
crt
이 모든 데이터를 별도의 파일 과 키로 추출하고 자동으로 이름을 보존하는 방법이 있습니까 ? 그래서 나는 다음과 같은 목록으로 끝납니다.
John_Williams_ID_18321239.crt
그리고John_Williams_ID_18321239.privatekey(or .pem)
나중에 각 쌍을 별도의 p12 파일로 모아야 하기 때문에 p12를 이와 같은 파일로 분할하고 싶습니다. 따라서 기본적으로 전체 p12
저장소를 하나의 쌍만 포함하는 여러 별도의 파일로 변환합니다 key : certificate
. openssl로 이 작업을 수행할 수 있는 방법이 있나요? 아니면 키와 인증서가 포함된 별도의 파일을 생성하고 작성된 스크립트를 사용하여 구문 분석하는 것이 유일한 방법입니까?
답변1
짐작할 수 있듯이 쉽게 할 수 있습니다.출력 구문 분석openssl pkcs12
다음과 같은 경우 조각을 분리 합니다 .그리고 만약에원하는 식별자는 친숙한 이름 및/또는 로컬 키 ID입니다. 이는 일반적으로 제공되는 유일한 두 가지 메타데이터이기 때문입니다. 예를 들어 개인 키의 경우 더 쉽고 일반적으로 충분하므로 FriendlyName을 사용하면 됩니다.
openssl pkcs12 -in combined -nocerts | awk '/friendlyName:/{n=$2} \
/^-----BEGIN.*PRIVATE/,/^-----END.*PRIVATE/{print >n".key"}'
이를 위해서는 입력 p12에 대한 비밀번호를 입력하고 각 출력 키에 대해 비밀번호를 두 번 입력해야 합니다. 이를 방지하려면 -passin
매뉴얼 페이지에 따라 및 옵션을 추가할 수 있습니다(모든 출력 키에 동일한 비밀번호를 사용할 수 있다고 가정). -passout
또는 개인 키를 암호화되지 않은 상태로 둘 수 있는 경우 -nodes
--를 추가하세요.시기 적절한이를 새(암호화된) p12 파일에 다시 넣고, 안전해야 하는 암호화되지 않은 파일을 안전하게 삭제(예: shred
)하십시오. 그렇지 않으면 권한이 없는 사람이 암호화되지 않은 개인 키 사본을 보거나 얻을 수 없도록 매우 주의해야 합니다.
인증서를 사용하여 동일한 작업을 수행할 수 있지만 아마도 그럴 필요는 없습니다. 만약에오직원하는 것은 설명대로 별도의 p12 파일을 만드는 것입니다.그리고개인 키는 모두 다르며 각 개인 키에서 작업할 수 있습니다.
cat $one.key allcerts | openssl pkcs12 -export (other options) >$one.p12
각 출력 p12에 넣습니다.증명서allcerts
입력에서성냥열쇠.
openssl
또는 미리 작성된 명령줄 대신 openssl을 사용하여 프로그램을 작성할 수 있습니다.도서관원하는 모든 작업을 수행할 수 있습니다. 각 패키지 및 하위 패키지 내에서(암호 해독 후) 원하는 데이터를 꺼내고 수정합니다(특수 문자 번역 등). 하지만 이것은 더 큰 일입니다.