openssl을 사용하여 자체 서명 된 인증서를 생성 할 때 확장 키 사용 문자열을 추가하는 방법


10

Mac OS X 10.9에서 openssl을 사용하여 Windows Server 원격 데스크톱 서비스에 대한 자체 서명 된 인증서를 생성하고 있습니다.

아래 명령을 사용하여 인증서를 생성 할 수 있습니다.

   openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

그러나 확장 키 사용 문자열 서버 인증 (1.3.6.1.5.5.7.3.1) 을 추가해야하며 위 명령에서이를 수행하는 방법을 알 수 없습니다.

이것을 포함하는 파일과 함께 openssl 옵션 -extfile 을 사용해 보았습니다 .

[= default ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

그러나 "-extfile 옵션을 찾을 수 없습니다"라는 오류가 발생합니다.


1
(CLI) openssl 구성 파일은 내가 원하는 인증서를 생성하는 코드를 작성하는 것이 더 쉽다고 확신했습니다. golang을 사용했지만 openssl clib을 사용할 수 있다고 생각합니다.
리듬 피스트 맨

답변:


9

하지만 openssl x509용도 -extfile, 사용하는 명령은 openssl req필요로 -config구성 파일을 지정합니다.

따라서 다음과 같은 명령을 사용할 수 있습니다.

openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
            -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

고유 이름 비트에 대한 일반적인 프롬프트는 기본 구성 파일 (아마도 /System/Library/OpenSSL/openssl.cnfOS X에 있음)에 정의되어 있지만이 파일은을 사용할 때 처리되지 않으므로 -config구성 파일에도 일부 DN 비트가 포함되어야합니다. 따라서 위에서 언급 한 내용 cert_config은 다음과 같습니다.

[ req ]
prompt             = no
distinguished_name = my dn

[ my dn ]
# The bare minimum is probably a commonName
            commonName = secure.example.com
           countryName = XX
          localityName = Fun Land
      organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
   stateOrProvinceName = YY
          emailAddress = ssl-admin@example.com
                  name = John Doe
               surname = Doe
             givenName = John
              initials = JXD
           dnQualifier = some

[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth

# see x509v3_config for other extensions

주석에 표시된대로 대부분의 DN 필드를 생략 할 수 있습니다. HTTPS 사용의 경우 호스트 이름과 일치하는 CN 만 있으면됩니다.


req (1)식별 이름 및 속성 섹션 형식 섹션 은 여러 개의 유사한 인증서 / 요청을 생성하려는 경우 위의 구성을 수정하여 값을 프롬프트하고 기본값을 제공하는 방법을 보여줍니다.

다른 인증서 확장이 필요한 경우 x509v3_config (5) 에서 확장 섹션에서 지정할 수있는 다른 비트를 확인하십시오 .


1
이 명령 줄을 사용하여 CSR을 생성하는 경우 -reqexts 'my server exts'를 사용하여 CA가 나중에 서버 인증 강화 키 사용으로 인증서를 생성하도록 요청하십시오.
memetech
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.