MS 인증서 서비스가 OpenSSL로 생성 된 CA에 종속 될 수 있음


16

도메인에 대한 엔터프라이즈 인증 기관을 설정하고 싶습니다. 다양한 목적으로 인증서를 발급 할 수 있습니다. 오프라인 CA를 루트로 사용하는 모범 사례를 따르고 엔터프라이즈 CA를 하위 조직으로 설정하고 싶습니다. 그러나이 작업을 위해 전체 Windows 사본을 라이센스하는 것은 어리석은 것 같습니다.

내가 할 수있는 것은 USB 플래시 디스크에 라이브 배포를 설치 한 다음 openssl을 설치하고 플래시 드라이브에 CA를 설정하는 것입니다. 루트 키 / 인증서를 작성할 준비가되면 컴퓨터를 네트워크에서 분리 한 다음 네트워크에 연결된 컴퓨터에서 해당 USB 디스크를 다시 사용하지 않습니다.

Windows 엔터프라이즈 CA에 대한 하위 CA 인증서를 올바르게 서명하고 작성하여 사용할 수 있습니까? CA를 구축하고 하위 CA 인증서에 올바르게 서명하려면 OpenSSL에 어떤 옵션을 사용해야합니까?

웹 검색을 시도했는데 이것이 주제에서 찾을 수있는 유일한 것입니다. 그러나 그것은 2008 년 이전의 것이며, 그 사람이 모두 성공했는지는 확실하지 않습니다.


분명히하기 위해이 도구는 반드시 OpenSSL 일 필요는 없지만 EJBCA와 같은 거대한 CA를 실행하고 싶지 않습니다. livecd / liveusb 환경에서 실행할 수있는 매우 가벼운 CA를 찾고 있습니다.
Zoredache

답변:


14

네, 잘 작동합니다. Windows 인증 기관에는 Windows 이외의 루트에 종속 된 것으로 실행하는 데 대한 자격이 없습니다.

엔터프라이즈 모드에서 OpenSSL 루트 및 Windows 2008 R2 하위 항목으로 테스트되었습니다.


MS SSL이 OpenSSL 구성에서 기대하는 것과 잘 어울리는 몇 가지 사항은 다음과 같습니다.

  • 자체 서명 된 루트 x509_extensions에 대한 [req]섹션 의 속성으로 구성된 섹션에서 유효한 AIA 및 CDP 위치가 루트 인증서에 적용되어야 합니다. 이 라인을 따라 뭔가 :

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • 주어진 OpenSSL 설정은 기본적으로 하위 CA를 허용하지 않을 것입니다. 서명 된 요청의 경우이를 변경하십시오 (물론 CA가 아니어야하는 요청에 대해서는 해당 위치에 있지 않아야합니다). 이것은 섹션의 x509_extensions속성으로 구성된 [ca]섹션에 있습니다.

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

테스트를 위해 CA를 수행 할 것입니다.

당신의 뿌리를 만드십시오 :

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

구성을 확인하고 [ca]OpenSSL 구성 섹션 에서 필요한 파일 및 디렉토리를 작성하십시오 .

모든 것은 마이크로 소프트 측이 일을 시작하도록 설정했다. 수동 서명을 사용하여 Windows 하위 CA를 만듭니다.

인증서 요청을 OpenSSL 서버에 업로드하십시오. 이 과정에서 루트 인증서를 다운로드하십시오. 사용자가 아닌 컴퓨터의 신뢰할 수있는 루트 저장소로 가져옵니다!

하위 인증서를 발행하십시오.

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

그래도 작동하지 않으면 CA에 새 인증서 디렉토리, 색인 파일, 직렬 파일 등의 구성 관련 문제가있을 수 있습니다. 오류 메시지를 확인하십시오.

그것이 갔다면, 그게 다입니다. 아직 작성하지 않은 경우 CRL을 작성하여 위에서 구성한 CDP에 넣으십시오. 방금 Apache를 설치하고 webroot에 끼었습니다.

openssl ca -gencrl -out /var/www/root.crl

인증서가 AIA 위치에 없으면 다음과 같이하십시오.

cp /etc/ssl/certs/root.pem /var/www/root.pem

새로 발급 된 하위 인증서를 다운로드하여 인증 기관 MMC 스냅인을 사용하여 CA에 설치하십시오. 신뢰 나 검증과 관련된 모든 문제에 대해서는 다루지 만 도덕적으로 반대하는 것은 아닙니다.

최종 결과; Enterprise PKI 스냅인에서 불만을 제기하지 않고 작동하는 Windows CA OpenSSL Generated Certificate, 특성에 대한 설명

워킹 카


6

나는 당신이 무엇을 얻고 있는지 알지만 OpenSSL이 그 일을위한 도구라고 생각하지 않습니다. 당신은보고 할 수 있습니다 오픈 소스 인증 기관 프로젝트EJBCA 더 OpenSSL에 이상이 기능에 초점을 맞춘하고 사용할 수있는 특정 문서를 가지고있다.

하위 CA의 인증서에 서명하기 때문에 개념이 작동하지 않는 이유를 알 수 없습니다. 이를 위해 공공 CA에 비용을 지불했다면, 서버가 어떤 종류의 서버를 사용하는지 알 필요가 없습니다.

당신이 신경 써야 할 것은 :

  • 부하 직원이 생성 한 CSR에서 인증서에 서명 할 수 있습니다.
  • 결과는 부하 자체에 설치 될 수 있습니다
  • 대상이되는 모든 클라이언트에 신뢰할 수있는 것으로 설치할 수있는 루트 서명 인증서가 있습니다.
  • 어딘가에 제공되는 해지 목록을 생성 할 수 있습니다

이 작업을 수행했다고 말할 수는 없지만 Windows 상자에서 CSR을 생성하는 문서를 따른 다음 CA 문서를 따라 CSR에서 .p7k 인증서를 생성하면 확실합니다.

그건 그렇고-부트 디스크가 아닌 Hyper-V 또는 VMware와 같은 인기있는 하이퍼 바이저의 가상 머신으로 CA를 생성하는 것이 좋습니다. 후임자가 찾을 수있는 위치에 매우 안전하게 저장하고 스핀하십시오 정기적으로 오프라인으로 가동하여 실행하거나 새로운 미디어 / 기술로 전송하십시오. 루트 CA의 수명은 10 년 또는 20 년입니다.


+1 OpenSSL은 CA 생성을위한 최고의 도구는 아니지만 일반적으로 작동합니다. Windows Enterprise CA에 대해 하위 CA 인증서를 발행하지 않았지만 왜 작동하지 않을지 상상할 수 없습니다 (MS는 과거에 더 치열한 경쟁적 행위를 저지른 적이 있지만). VM으로서 CA의 경우 +1 루트 인증서의 두 번째 사본을 유지하는 것이 좋습니다 (종이의 Base64는 매우 내구성이 있고 안전 / 보증 상자 등으로 보관하기 쉽습니다)
Chris S

NIC없이 VM을 설정하고 가상 플로피 드라이브를 사용하여 CSR을 설정하고 서명 한 인증서를 해제 할 수 있다는 사실을 알게되어 매우 기뻤습니다. Sneakernet은 21 세기 가상의 빛으로 다시 태어났습니다!
dunxd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.