PowerShell을 사용하여 사용자 VPN 연결에 대한 인증서 생성 및 내보내기
인증을 위해 인증서를 요구하도록 사용자 VPN(지점 및 사이트 간) 구성을 구성할 수 있습니다. 이 문서에서는 Windows 10 이상 또는 Windows Server 2016 이상에서 PowerShell을 사용하여 자체 서명된 루트 인증서를 만들고 클라이언트 인증서를 생성하는 방법을 보여 줍니다.
인증서를 생성하는 데 사용하는 PowerShell cmdlet은 운영 체제의 일부이며 다른 Windows 버전에서는 작동하지 않습니다. 호스트 운영 체제는 인증서를 생성하는 데만 사용됩니다. 인증서가 생성되면 지원되는 모든 클라이언트 운영 체제에 업로드하거나 설치할 수 있습니다.
운영 체제 요구 사항을 충족하는 컴퓨터가 없는 경우 MakeCert를 사용하여 인증서를 생성할 수 있습니다. 두 방법 중 하나를 사용하여 생성하는 인증서는 지원되는 모든 클라이언트 운영 체제에 설치할 수 있습니다.
자체 서명된 루트 인증서 만들기
New-SelfSignedCertificate cmdlet을 사용하여 자체 서명된 루트 인증서를 만듭니다. 추가 매개 변수 정보는 New-SelfSignedCertificate를 참조하세요.
Windows 10 이상 또는 Windows Server 2016을 실행하는 컴퓨터에서 상승된 권한으로 Windows PowerShell 콘솔을 엽니다.
자체 서명된 루트 인증서를 만듭니다. 다음 예제에서는 'Certificates-Current User\Personal\Certificates'에 자동으로 설치된 'P2SRootCert'라는 자체 서명된 루트 인증서를 만듭니다. certmgr.msc 또는 사용자 인증서 관리를 열어 인증서를 볼 수 있습니다.
이 샘플을 사용하기 전에 필요한 수정을 수행합니다. 'NotAfter' 매개 변수는 선택 사항입니다. 기본적으로 이 매개 변수가 없으면 인증서는 1년 후에 만료됩니다.
$params = @{ Type = 'Custom' Subject = 'CN=P2SRootCert' KeySpec = 'Signature' KeyExportPolicy = 'Exportable' KeyUsage = 'CertSign' KeyUsageProperty = 'Sign' KeyLength = 2048 HashAlgorithm = 'sha256' NotAfter = (Get-Date).AddMonths(24) CertStoreLocation = 'Cert:\CurrentUser\My' } $cert = New-SelfSignedCertificate @params
PowerShell 콘솔을 열어 두고 다음 단계를 진행하여 클라이언트 인증서를 생성합니다.
클라이언트 인증서 생성
지점 및 사이트 간을 사용하여 VNet에 연결하는 각 클라이언트 컴퓨터에 클라이언트 인증서가 설치되어 있어야 합니다. 자체 서명된 루트 인증서에서 클라이언트 인증서를 생성한 후 클라이언트 인증서를 내보내고 설치합니다. 클라이언트 인증서가 설치되어 있지 않으면 인증이 실패합니다.
다음 단계는 자체 서명된 루트 인증서에서 클라이언트 인증서를 생성하는 과정을 안내합니다. 동일한 루트 인증서에서 여러 클라이언트 인증서를 생성할 수 있습니다. 다음 단계를 사용하여 클라이언트 인증서를 생성하는 경우 클라이언트 인증서가 인증서를 생성하는 데 사용하는 컴퓨터에 자동으로 설치됩니다. 다른 클라이언트 컴퓨터에 클라이언트 인증서를 설치하려는 경우 인증서를 내보냅니다.
예제에서는 New-SelfSignedCertificate cmdlet을 사용하여 클라이언트 인증서를 생성합니다.
예제 1 - PowerShell 콘솔 세션이 여전히 열려 있습니다.
자체 서명된 루트 인증서를 만든 후에 PowerShell 콘솔을 닫지 않은 경우 이 예제를 사용합니다. 이 예제는 이전 섹션에서 계속되며 선언된 ‘$cert’ 변수를 사용합니다. 자체 서명된 루트 인증서를 만든 후 PowerShell 콘솔을 종료했거나 새 PowerShell 콘솔 세션에서 추가 클라이언트 인증서를 생성하려는 경우 예제 2의 단계를 사용합니다.
샘플을 수정 및 실행하여 클라이언트 인증서를 생성합니다. 다음 예제를 수정하지 않고 실행할 경우 결과적으로 'P2SChildCert'라는 클라이언트 인증서가 만들어집니다. 자식 인증서에 다른 이름을 지정하려는 경우 CN 값을 수정합니다. 이 예제를 실행하는 경우는 TextExtension을 변경하지 마세요. 생성하는 클라이언트 인증서는 컴퓨터의 'Certificates - Current User\Personal\Certificates'에 자동으로 설치됩니다.
$params = @{
Type = 'Custom'
Subject = 'CN=P2SChildCert'
DnsName = 'P2SChildCert'
KeySpec = 'Signature'
KeyExportPolicy = 'Exportable'
KeyLength = 2048
HashAlgorithm = 'sha256'
NotAfter = (Get-Date).AddMonths(18)
CertStoreLocation = 'Cert:\CurrentUser\My'
Signer = $cert
TextExtension = @(
'2.5.29.37={text}1.3.6.1.5.5.7.3.2')
}
New-SelfSignedCertificate @params
예 2 - 새 PowerShell 콘솔 세션
추가 클라이언트 인증서를 만들거나 자체 서명된 루트 인증서를 만드는 데 사용한 것과 동일한 PowerShell 세션을 사용하지 않을 경우 다음 단계를 사용합니다.
컴퓨터에 설치되어 있는 자체 서명된 루트 인증서를 식별합니다. 이 cmdlet은 컴퓨터에 설치된 인증서 목록을 반환합니다.
Get-ChildItem -Path "Cert:\CurrentUser\My"
반환된 목록에서 주체 이름을 찾은 다음 텍스트 파일에 옆에 있는 지문을 복사합니다. 다음 예제에는 두 개의 인증서가 있습니다. CN 이름은 자식 인증서를 생성하려는 자체 서명된 루트 인증서의 이름입니다. 이 경우에는 'P2SRootCert'입니다.
Thumbprint Subject ---------- ------- AED812AD883826FF76B4D1D5A77B3C08EFA79F3F CN=P2SChildCert4 7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655 CN=P2SRootCert
이전 단계의 지문을 사용하여 루트 인증서에 대한 변수를 선언합니다. THUMBPRINT을 자식 인증서를 생성하려는 루트 인증서의 지문으로 바꿉니다.
$cert = Get-ChildItem -Path "Cert:\CurrentUser\My\<THUMBPRINT>"
예를 들어 이전 단계의 P2SRootCert에 대한 지문을 사용할 경우 변수는 다음과 같습니다.
$cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
샘플을 수정 및 실행하여 클라이언트 인증서를 생성합니다. 다음 예제를 수정하지 않고 실행할 경우 결과적으로 'P2SChildCert'라는 클라이언트 인증서가 만들어집니다. 자식 인증서에 다른 이름을 지정하려는 경우 CN 값을 수정합니다. 이 예제를 실행하는 경우는 TextExtension을 변경하지 마세요. 생성하는 클라이언트 인증서는 컴퓨터의 'Certificates - Current User\Personal\Certificates'에 자동으로 설치됩니다.
$params = @{ Type = 'Custom' Subject = 'CN=P2SChildCert' DnsName = 'P2SChildCert1' KeySpec = 'Signature' KeyExportPolicy = 'Exportable' KeyLength = 2048 HashAlgorithm = 'sha256' NotAfter = (Get-Date).AddMonths(18) CertStoreLocation = 'Cert:\CurrentUser\My' Signer = $cert TextExtension = @( '2.5.29.37={text}1.3.6.1.5.5.7.3.2') } New-SelfSignedCertificate @params
루트 인증서 공개 키(.cer) 내보내기
자체 서명된 루트 인증서가 만들어지면 프라이빗 키가 아닌 루트 인증서 .cer 파일을 내보냅니다. 나중에 파일에 포함된 필요한 인증서 데이터를 Azure에 업로드합니다. 다음 단계는 자체 서명된 루트 인증서에 대한 .cer 파일을 내보내고 필요한 인증서 데이터를 검색하는 데 도움이 됩니다.
인증서 .cer 파일을 가져오려면 사용자 인증서 관리를 엽니다.
일반적으로 Certificates - Current User\Personal\Certificates에서 자체 서명된 루트 인증서를 찾아 마우스 오른쪽 단추로 클릭합니다. 모든 작업 - >내보내기를 선택합니다. 이렇게 하면 인증서 내보내기 마법사가 열립니다.
"Current User\Personal\Certificates"에서 인증서를 찾을 수 없는 경우 인증서 -현재 사용자 대신 실수로 인증서 - 로컬 컴퓨터를 열었을 수 있습니다.
마법사에서 다음을 선택합니다.
아니요, 프라이빗 키를 내보내지 않습니다를 선택한 후 다음을 선택합니다.
내보내기 파일 형식 페이지에서 Base-64로 인코딩된 X.509(.CER)를 선택한 후 다음을 선택합니다.
내보낼 파일에서 인증서를 내보내려는 위치를 찾습니다. 파일 이름에는 인증서 파일의 이름을 입력합니다. 그런 후에 다음을 선택합니다.
마침을 선택하여 인증서를 내보냅니다.
내보내기를 완료했습니다.라는 확인 메시지가 표시됩니다.
인증서를 내보낸 위치로 이동하여 메모장과 같은 텍스트 편집기를 사용하여 엽니다. 인증서를 필요한 Base-64로 인코딩된 X.509(.CER) 형식으로 내보낸 경우 다음 예제와 비슷한 텍스트가 표시됩니다. 파란색으로 강조 표시된 섹션에는 복사하여 Azure에 업로드하는 정보가 포함되어 있습니다.
파일이 예제와 비슷하지 않은 경우 일반적으로 파일을 Base-64로 인코딩된 X.509(.CER) 형식으로 내보내지 않았음을 의미합니다. 또한 메모장 이외의 다른 텍스트 편집기를 사용하는 경우 일부 편집기에서 의도하지 않은 형식을 백그라운드로 도입할 수 있습니다. 이 경우 인증서의 텍스트를 Azure로 업로드할 때 문제가 발생할 수 있습니다.
자체 서명된 루트 인증서 및 프라이빗 키를 내보내고 저장(선택 사항)
자체 서명된 루트 인증서를 내보내고 백업으로 안전하게 저장할 수 있습니다. 필요한 경우 나중에 다른 컴퓨터에 설치하고 더 많은 클라이언트 인증서를 생성할 수 있습니다. 자체 서명된 루트 인증서를 .pfx로 내보내려면 루트 인증서를 선택하고 클라이언트 인증서 내보내기에서 설명하는 것과 같은 단계를 사용합니다.
클라이언트 인증서 내보내기
클라이언트 인증서를 생성하는 경우 생성하는 데 사용한 컴퓨터에 자동으로 설치됩니다. 클라이언트 인증서를 다른 클라이언트 컴퓨터에 설치하려면 먼저 클라이언트 인증서를 내보내야 합니다.
클라이언트 인증서를 내보내려면 사용자 인증서 관리를 엽니다. 기본적으로 생성하는 클라이언트 인증서는 'Certificates - Current User\Personal\Certificates'에 있습니다. 내보낼 클라이언트 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업을 클릭한 다음 내보내기를 클릭하여 인증서 내보내기 마법사를 엽니다.
인증서 내보내기 마법사에서 다음을 클릭하여 계속합니다.
예, 프라이빗 키를 내보냅니다.를 선택한 후, 다음을 클릭합니다.
파일 내보내기 형식 페이지에서 선택된 기본값을 유지합니다. 가능하면 인증 경로에 있는 인증서 모두 포함을 선택했는지 확인합니다. 이 설정은 성공적인 클라이언트 인증에 필요한 루트 인증서 정보를 추가로 내보냅니다. 이를 사용하지 않으면 클라이언트에 신뢰할 수 있는 루트 인증서가 없어 클라이언트 인증에 실패합니다. 그런 후에 다음을 클릭합니다.
보안 페이지에서 프라이빗 키를 보호해야 합니다. 암호를 사용하도록 선택하는 경우 이 인증서에 대해 설정한 암호를 기록해두거나 기억합니다. 그런 후에 다음을 클릭합니다.
내보낼 파일에서 인증서를 내보낼 위치를 찾아보기합니다. 파일 이름에는 인증서 파일의 이름을 입력합니다. 그런 후에 다음을 클릭합니다.
마침 을 클릭하여 인증서를 내보냅니다.
Linux
Linux에서 실행하려면 자체 서명된 인증서 생성 - Linux - OpenSSL 또는 자체 서명된 인증서 생성 - Linux - strongSwan을 참조하세요.
내보낸 클라이언트 인증서 설치
P2S 연결을 통해 연결하는 각 클라이언트에서 클라이언트 인증서를 로컬로 설치해야 합니다. 인증서를 설치하는 단계는 클라이언트 인증서 설치를 참조하세요.
다음 단계
사용자 VPN 연결에 대한 Virtual WAN 단계로 계속 진행합니다.