openssl을 사용하여 인증서를 생성하고 서명하기 위한 인증서 확장

openssl을 사용하여 인증서를 생성하고 서명하기 위한 인증서 확장

인용하다:

  1. 중간 인증서에 대한 SSL 구성
  2. 내가 만든 인증 기관을 시스템의 신뢰할 수 있는 저장소에 어떻게 추가하나요?

openssl 확장의 유형을 알려주는 페이지를 찾을 수 없는 이유는 무엇입니까? !

상호 인증을 하고 있는데 그 과정에서 중간 인증서를 넣으려고 하면 생성되고 서명된 중간 인증서가 CA옵션 때문에 자체 서명된 것으로 확인됩니다 -sign-key.

매뉴얼 페이지를 읽고 관련 내용을 찾았습니다.

기본 제약. 이는 인증서가 CA 인증서인지 여부를 나타내는 다중 값 확장입니다. 예를 들어:

    basicConstraints=CA:TRUE
    basicConstraints=CA:FALSE

주요 사용법: 키 사용은 허용된 키 사용에 대한 이름 목록으로 구성된 다중 값 확장입니다. 지원되는 이름은 다음과 같습니다.

   digitalSignature, nonRepudiation, keyEncipherment, 
   dataEncipherment, keyAgreement, keyCertSign, cRLSign, 
   encipherOnly and decipherOnly.

예:

    keyUsage=digitalSignature, nonRepudiation
    keyUsage=critical, keyCertSign

critical브라우저 인증서 보기에 중요하지 않은 항목이 표시됩니다. 내 인증서에는 이러한 필드가 없습니다. 또한 확장자가 없으면 인증서가 루트 인증서 및 자체 서명 인증서로 처리된다는 의미도 읽었습니다.

네 가지 유형의 인증서를 만들고 싶습니다.

rootca > serverca > 서버 ca가 서명한 서버 crt && 서버 ca가 서명한 클라이언트 crt

문서에서 나는 다음을 발견했습니다.

v3_ca, v3_사용자, v3_ca

이것이 내 질문에 대한 답변입니까?

내가 생성하고 싶은 명령중간 칼슘그리고 키로 서명하는 것은 다음과 rootca같습니다.

openssl genrsa -out $keyfile $keysize;

openssl req -new -key $keyfile -out $reqfile -passin pass:$pw \
-subj "/C=$country/ST=$state/L=$location/O=$org/CN=$name" 2>&1;

openssl x509 -req -days $days -in $reqfile -out $certfile \
-signkey $cakeyfile 2>&1;

첨부된:

저는 이 모든 것을 bash 스크립트에서 실행하기 때문에 구성 파일을 사용하지 않습니다.

누군가 나에게 확장 기능을 설명할 수 있는지, 그리고 bash에서 가져오는 대신 매개 변수로 전달할 수 있는지 궁금합니다(bash 스크립트를 열고 bash를 호출할 때마다 편집해야 하기 때문입니다).

답변1

간단히 말해서: basicConstraints=CA:TRUE/FALSE

인증서가 CA 인증서인지 여부를 나타냅니다. 오직 당국만이 인증서를 발급할 수 있습니다.

keyUsage 속성은 인증서에 허용되는 작업을 나타냅니다. 예를 들어 이메일 서명용으로만 인증서를 발급할 수 있습니다. 웹 서버에서 그러한 인증서를 사용하는 경우(클라이언트에 서버를 식별하기 위해) 결과적으로 인증서는 유효한 것으로 간주되지 않습니다. 의도된 용도는 이메일 서명용이지 웹사이트 식별용이 아니기 때문입니다. (물론 다른 CN이 있을 것이지만, 그렇지 않은 경우에는 제가 설명한 대로 작동할 것입니다).

문제를 해결하려면:

rootca - 일부 자체 서명된 인증서

serverca - rootca가 서명한 CA 인증서(basicConstraints=CA:TRUE)

servercrt,clientcrt - serverca가 서명한 일반 CSR

인증 기관으로 일부 인증서에 서명할 때 다음을 사용해야 합니다. , , ,... openssl ca -CA authority.crt -CAkey authority.key ... 와 같은 다른 옵션-config-set_serial-days

실제로 구성 파일 없이 CA를 사용한 적이 없으므로 다른 사람의 질문에 대한 답변이 될 수 있습니다. 명령줄에 모든 매개변수를 입력하는 것이 가능해야 한다고 생각합니다.

그러나 더 많은 프로필(권한당 하나씩)을 만들고 이를 매개변수에 제공할 수 있습니다 -config. 이 방법의 장점은 발행된 모든 crt의 아카이브를 얻을 수 있고 일련 번호가 자동으로 증가한다는 것입니다.

관련 정보