VPN 게이트웨이와 클라이언트 역할을 위한 AD CS 템플릿 설계
하나의 템플릿이 여러 ID를 발급하려면 상대 역할과 일치해야 합니다. 역할별로 용도와 이름 원본을 정하고 CA에 게시한 뒤 파일럿 하나를 등록하세요.
엔터프라이즈 CA는 스스로 게이트웨이가 되지 않고도 VPN에 필요한 모든 인증서를 발급할 수 있습니다. 설계 작업은 각 상대가 무엇을 증명해야 하는지, 그리고 어떤 템플릿이 바로 그것을 증명하는 자격 증명을 발급할 수 있는지 결정하는 것입니다. 저는 역할 표부터 시작하고, 기존 템플릿을 그 자리에서 편집하는 대신 복제하며, 역할별로 주체 원본을 고정하고, 결과를 발급 CA에 게시하며, 누군가 자동화하기 전에 파일럿 하나를 등록합니다. 아래의 각 단계는 정상 동작하는 CA가 여전히 VPN이 거부할 인증서를 만들어 내는 지점입니다.
템플릿 콘솔을 열기 전에 역할 표를 작성하세요
두 역할, 두 용도. 게이트웨이는 서비스 ID를 증명하므로 인증서에 Server Authentication (1.3.6.1.5.5.7.3.1), 디지털 서명과 키 암호화의 키 사용, 그리고 클라이언트가 접속하는 호스트 이름이 주체 대체 이름에 필요합니다. 인증서로 인증하는 클라이언트에는 Client Authentication (1.3.6.1.5.5.7.3.2)와 게이트웨이가 상대 확인에서 기대하는 ID와 일치하는 ID가 필요합니다. 사용자 인증서와 컴퓨터 인증서는 서로 바꿀 수 없습니다. 서로 다른 저장소에 있고 서로 다른 프로세스가 사용하기 때문입니다.
역할마다 네 개의 열을 적으세요. 나타나야 하는 ID, 용도, 키 소비자, 그리고 키가 머신을 떠날 수 있는지입니다. 이 표가 나중에 모든 확인란을 결정하며, 검토자에게 건네는 것도 이 표입니다. 암호 기반 클라이언트 인증은 별도 분기입니다. 게이트웨이가 자격 증명으로 사용자를 인증한다면 클라이언트 인증서 배포는 증명을 더하지 않고 작업만 더합니다.
공유 템플릿을 편집하지 말고 복제하세요
용도가 대략 맞는 템플릿에서 시작하세요. 예를 들어 게이트웨이에는 RAS and IAS Server, 도메인 가입 장치에는 Computer를 쓰고, 복제한 뒤 복사본에 용도를 알려 주는 이름을 붙입니다. 다른 서비스가 이미 사용하는 템플릿을 넓히는 것이 바로 여섯 주 뒤에 무관한 무언가를 깨뜨리는 변경입니다. 복사본에서 응용 프로그램 정책을 역할 표의 용도에 맞추고, 키 사용을 그와 일관되게 유지하고, 게이트웨이가 받아들이는 키 알고리즘과 길이를 고르고, 어플라이언스가 옮기기 위해 내보내야 하는 경우가 아니면 개인 키를 내보낼 수 없음으로 표시하세요.
유효 기간과 갱신도 템플릿에 속합니다. 짧은 수명은 폐기가 쉽고 운영이 어렵습니다. 긴 수명은 등록 작업을 줄이는 대신 유출된 키의 노출을 길게 만듭니다. 방어할 수 있는 숫자를 고르고, CA 자체의 유효 기간과 템플릿의 갱신 기간이 결과를 단축할 수 있음을 기억하세요.
주체가 어디서 오는지 결정하세요
도메인 컴퓨터나 사용자라면 요청자가 이름을 입력할 수 없도록 디렉터리 정보에서 주체를 구성합니다. 도메인에 가입되지 않은 게이트웨이나 AD 밖에서 ID가 할당되는 장치라면 템플릿에 통제된 요청 경로가 필요합니다. 요청자가 제공하는 주체와 대체 이름을 허용하는 것은 실제 결정입니다. 모든 등록자가 아무 이름이나 주장할 수 있는 라이선스가 아니며, CA 측 정책은 누가 요청할 수 있고 어떤 증거가 필요한지 여전히 정해야 합니다.
Windows IKEv2는 여기서 엄격합니다. 게이트웨이 인증서는 클라이언트가 구성한 이름과 대조되므로, DNS 이름은 클라이언트가 찾는 위치, 보통 주체 대체 이름의 dNSName 항목에 있어야 합니다. 일치하지 않는 인증서를 작동시키려고 이름 확인이나 용도 확인을 끄면 운영에서 불일치를 잡았을 검사를 제거하는 셈입니다.
템플릿을 게시한 다음 권한을 좁히세요
AD DS에서 템플릿 개체를 만드는 것과 발급 CA에 게시하는 것은 서로 다른 콘솔에서 하는 별개의 작업입니다. Certification Authority 콘솔의 Certificate Templates에서 복사본을 게시한 뒤 명령줄에서 CA가 이제 그것을 제공하는지 확인하세요.
certutil -CATemplates
certutil -TCAInfo
다음은 권한입니다. 요청해야 하는 그룹에 Read와 Enroll만 주고 그 이상은 주지 말고, CA 자체의 읽기 권한은 그대로 두며, Autoenroll은 자동 등록이 의도되고 그것을 작동시키는 배포 정책이 뒷받침되는 곳에만 부여하세요. 템플릿의 확인란은 그 자체로 아무것도 등록하지 않으며, 등록 권한 없이 게시된 템플릿은 인증서를 나열한 뒤 요청을 거부하는 포털을 만듭니다.
실제 소비자에서 파일럿 하나를 등록하세요
인증서를 그것을 사용할 컨텍스트에서 요청하고, 파일 이름을 믿는 대신 돌아온 내용을 검사하세요. 사용자 인증서는 현재 사용자 저장소에, 컴퓨터 인증서는 로컬 컴퓨터 저장소에 들어가며 MMC는 둘 다 보여 줍니다. 그래서 “성공한” 등록이 VPN 서비스에는 보이지 않을 수 있습니다.
certlm.msc
certutil -dump vpn-gateway.cer
덤프에서 주체, 대체 이름, 확장 키 사용, 체인을 읽으세요. Windows가 아닌 게이트웨이라면 도메인 자동 등록이 거기에 도달한다고 가정하지 말고 지원되는 워크플로로 요청을 제출하며, 내보낸 형식이 소비자가 해당 개인 키와 함께 가져오는 형식인지 확인하세요. 마지막으로 신뢰와 권한 부여를 분리하세요. VPN은 어떤 사용자나 장치가 어떤 리소스에 도달하는지 여전히 결정해야 하며, 폐기는 게이트웨이가 폐기를 실제로 확인할 때만 접근을 제거합니다. 인증서 템플릿 관리에 관한 Microsoft 가이드는 템플릿 콘솔, 권한, 별도의 게시 단계를 다룹니다.