윈도우 서버 2016을 (좀 오래되었지만) ISO/DVD로 처음 설치한 상태에서 NuGet 패키지 관리자를 설치하려면 오류가 발생하는데, 결론부터 말하자면 TLS 1.2 이상으로 연결을 해줘야 하기 때문이다.

이 문제를 겪게 된 상황은 아래와 같다.

 

일단 윈도우 서버 2016을 설치했고, 윈도우 업데이트 관리를 위해 PSWindowsUpdate 모듈을 설치하려 하였다.

 

Install-Module -Name PSWindowsUpdate

그랬더니 아래와 같이 빨간 글씨의 에러가 발생하였다.

 

일단 에러가 발생하는 사유는 NuGet 패키지 관리자가 없기 때문이었다. 따라서 NuGet을 먼저 설치하려 해 보았다. (사실 위 화면에 이미 자동 시도되어 있다)

 

Install-PackageProvider -Name NuGet -Force

위 화면과 동일하게 빨간색 에러가 뜬다.

 

언뜻 보면 인터넷 연결이 안되어 있는 것으로 보이지만, 인터넷 연결은 잘 되어 있다. 이게 바로 TLS 1.2 이상 사용을 안 해서 발생하는 오류인데, 문구만 봐서는 확인이 힘들다.

 

TLS 1.2 이상을 기본 사용하게 하는 방법은 아래와 같다.

 

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name SystemDefaultTlsVersions -Type Dword -Value 1 -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name SchUseStrongCrypto -Type Dword -Value 1 -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name SystemDefaultTlsVersions -Type Dword -Value 1 -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name SchUseStrongCrypto -Type Dword -Value 1 -Force

 

docs.microsoft.com/ko-kr/mem/configmgr/core/plan-design/security/enable-tls-1-2-client

 

클라이언트에서의 TLS(전송 계층 보안) 1.2 사용 설정 방법 - Configuration Manager

Configuration Manager 클라이언트에 대해 TLS 1.2를 사용하도록 설정하는 방법에 대한 정보입니다.

docs.microsoft.com

이렇게 레지스트리를 설정하고 나면 NuGet 패키지 관리자가 잘 설치된다.

 

물론 따라서 PSWindowsUpdate 모듈도 잘 설치되었다.

 

 

참고로 레지스트리로 .NET 설정을 변경하지 않고 일회성으로 파워쉘 세션에만 적용하려면 아래와 같이 처리하면 된다.

 

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12