이 문서에서는 Windows 호스트 컴퓨터에서 실행되는 엔터프라이즈 및 교육용 Microsoft Connected Cache 노드에서 HTTPS 지원을 사용하도록 설정하기 위한 지침을 제공합니다.
설치 프로세스를 수행하려면 호스트 컴퓨터에서 CSR(인증서 서명 요청)을 생성하고 엔터프라이즈 또는 공용 PKI를 사용하여 CSR에 서명한 다음 호스트 컴퓨터로 다시 가져와야 합니다.
필수 구성 요소
HTTPS 기능을 설정하기 전에 다음 요구 사항이 충족되는지 확인합니다.
캐시 노드가 GA 소프트웨어 버전에 있습니다.
- Azure Portal 열고 캐시 노드가 있는 엔터프라이즈용 연결된 캐시 리소스로 이동합니다.
- 캐시 노드 관리에서 HTTPS를 사용하도록 설정할 캐시 노드를 찾습니다.
- 노드가 GA 버전에 있는지 확인합니다. 마이그레이션된 열에 "예" 또는 "N/A"가 표시되어야 합니다.
- GA 버전( 마이그레이션된 열의 "아니요")이 아닌 경우 캐시 노드를 선택하고 배포 탭으로 이동한 다음 지침에 따라 연결된 캐시를 다시 배포합니다.
CA(인증 기관)에 대한 액세스
엔터프라이즈 PKI 또는 공용 CA에 액세스해야 합니다. 엔터프라이즈 PKI를 사용하는 경우 CSR을 CA에 제출하기 위한 organization 요구 사항을 검사.
문서 클라이언트 연결 방법
클라이언트가 연결된 캐시 서버에 연결하는 데 사용하는 IP 주소 또는 FQDN(호스트 이름)을 확인합니다. 이 값은 CSR을 생성하는 동안 SAN(주체 대체 이름) 입력으로 사용됩니다.
포트 443 가용성 확인
연결된 캐시와 HTTPS 연결을 설정하려면 호스트 컴퓨터에서 포트 443을 사용할 수 있어야 합니다. 다음 명령을 실행하여 검사.
netstat -an | findstr :443출력 예제 의미 TCP 0.0.0.0:443 0.0.0.0:0 수신 대기 포트 443이 열려 있고 들어오는 연결을 수신 대기합니다. HTTPS 설정을 진행합니다. 출력 없음 포트 443이 사용 중이거나 수신 대기하지 않습니다. HTTPS 설정을 진행합니다. TCP [사용자의 IP]:443 [원격 IP]:[포트] ESTABLISHED 포트 443은 연결에서 적극적으로 사용되고 있습니다. 연결된 캐시가 포트 443을 사용하기 전에 충돌하는 서비스를 중지해야 합니다. 회사 프록시 구성 확인
방화벽 또는 회사 프록시가 연결된 캐시 서버(예: TLS 검사를 통해)로 HTTPS 트래픽을 가로채는 경우 인증서 구성에 관계없이 인증서 유효성 검사가 항상 실패합니다.
필수 구성 요소에 대한 자세한 내용은 Windows의 HTTPS 참조 페이지를 참조하세요.
CSR(인증서 서명 요청) 생성
중요
각 캐시 노드에는 자체 CSR/인증서가 필요합니다(공유할 수 없음).
- 일관된 이름 지정 사용: mcc-node1.company.com, mcc-node2.company.com 등
- 노드에 속하는 인증서 문서화
- 와일드카드 인증서가 작동하지 않습니다. 연결된 캐시에 대한 HTTPS 연결에 사용되는 CSR/인증서는 보안을 위해 각 캐시 노드에 고유하게 연결됩니다.
관리자 권한으로 PowerShell을 열고 PowerShell 스크립트가 포함된 연결된 캐시 폴더로 이동합니다.
다음 명령을 실행하여 이 연결된 캐시 스크립트 폴더로 이동합니다.
cd (deliveryoptimization-cli mcc-get-scripts-path)에 대한 매개 변수를
generateCsr.ps1구성하고 지정된 값을 사용하여 스크립트를 실행합니다.기본 구문
.\generateCsr.ps1 [Required Parameters] [Subject Parameters] [SAN Parameters]필수 매개 변수
매개 변수 설명 -algo인증서 알고리즘: RSA,EC,ED25519또는ED448-keySizeOrCurveRSA의 경우: 키 크기( 2048, ,30724096). EC: 곡선 이름(prime256v1,secp384r1). ED25519 및 ED448의 경우: 키 크기가 필요하지 않습니다.-csrNameCSR 파일에 원하는 이름 -RunTimeAccountName연결된 캐시 소프트웨어를 실행하는 계정입니다. 연결된 캐시 런타임 계정으로 지정하려는 계정의 사용자 이름을 포함하는 PowerShell 변수여야 합니다. 예를 들어 $User = "LocalMachineName\Username"로컬 사용자 계정의 경우입니다. gMSA(그룹 관리 서비스 계정)를 사용하는 경우 형식을 로"Domain\Username$"지정해야 합니다.-mccLocalAccountCredential연결된 캐시 런타임 계정에 대한 PowerShell 자격 증명 개체입니다. 로컬 사용자 계정, 도메인 사용자 계정 또는 서비스 계정을 사용하는 경우에만 필요합니다. 명령을 $myLocalAccountCredential = Get-Credential사용하여 자격 증명 검색 GUI를 큐에 추가할 수 있습니다.참고
gMSA 런타임 계정을 사용하는 경우 대신 매개 변수
-RunTimeAccount를-RunTimeAccountName사용합니다.이 불일치는 Windows 설치 관리자의 다음 릴리스에서 해결됩니다.
주체 매개 변수
매개 변수 필수 설명 예제 -subjectCommonName예 인증서의 일반 이름 "localhost","example.com"-subjectCountry아니오 두 글자 국가 코드 "US","CA","GB"-subjectState아니오 시/도 "WA","TX","Ontario"-subjectOrg아니오 조직 이름 "MyCompany","ACME Corp"Warning
SAN 구성은 인증서 유효성 검사에 중요합니다. 인증서는 클라이언트가 연결된 캐시에 연결하는 방법과 정확히 일치해야 합니다. 그렇지 않으면 클라이언트가 캐시 노드를 우회합니다.
예를 들어 클라이언트가 IP 주소를
192.168.1.100통해 연결하지만 인증서에만 이-sanDns "server.local"있는 경우 인증서 유효성 검사가 실패합니다.주체 대체 이름(하나 이상 필요)
매개 변수 설명 예제 -sanDnsDNS 이름(쉼표로 구분) "localhost,example.com,api.example.com"-sanIpIP 주소(쉼표로 구분) "127.0.0.1,192.168.1.100"-sanUriURI(쉼표로 구분) "https://example.com,http://localhost"-sanEmailEmail 주소(쉼표로 구분) "admin@example.com,user@domain.com"-sanRid등록된 ID(쉼표로 구분) -sanDirName디렉터리 이름(쉼표로 구분) -sanOtherName기타 이름(쉼표로 구분) CSR 스크립트 매개 변수에 대한 자세한 내용 및 시나리오 기반 예제는 Windows의 HTTPS 참조를 참조하세요.
CSR 생성 프로세스가 성공적으로 완료되었는지 확인합니다.
오류가 발생하면 스크립트 출력에 지정된 폴더에서 타임스탬프
GenerateCsr.log가 있는 파일을 찾습니다. "자세한 오류 정보는 로그 확인:"으로 시작하는 출력 줄을 찾습니다. 디렉터리가 (...\Certificates\logs)로 끝납니다.- 파일 형식: GenerateCsr_YYYYMMDD-HHMMSS.log
- 본보기: GenerateCsr_20251201_143022.log 2025년 12월 1일 오후 2:30:22에 만든 파일입니다.
호스트 컴퓨터의 Certificates 폴더 에서 생성된 CSR 파일을 찾아 필요한 경우 전송합니다.
인증서 폴더의 위치는 스크립트 출력에서 "에서 만든 CSR 파일: ..."부터 지정됩니다. 디렉터리가 (...\Certificates\certs)로 끝납니다.
CSR 서명
CSR에 서명할 공용 또는 CA(엔터프라이즈 인증 기관)를 선택합니다.
중요
CA 서명은 클라이언트의 신뢰할 수 있는 루트 저장소에 있는 루트 인증서와 일치해야 합니다.
대부분의 고객은 CSR에 서명하기 위해 엔터프라이즈 PKI 인프라를 활용합니다. 공용 CA를 사용해야 하는 경우 다음 리소스를 고려합니다.
- DigiCert 인증서 유틸리티
- CSR 프로세스 암호화
- Intune 이미 Intune - 활용하는 엔터프라이즈 시나리오에 대한 사용이 포함된 클라우드 PKI입니다.
선택한 CA에 CSR을 제출하고 서명된 인증서를 저장합니다.
서명된 인증서는 X.509 인코딩을 사용하여 .crt 형식이어야 합니다. CA가 다른 형식을 제공하는 경우 .crt 형식으로 변환하는 방법에 대한 Windows의 HTTPS 참조를 검사.
참고
연결된 캐시는 현재 암호로 보호되는 형식 (.pfx, .p12, .p7b)을 지원하지 않습니다. 이에 대한 지원은 인증서 자동화 로드맵의 일부로 곧 추가될 예정입니다.
서명된 인증서가 올바른 형식인지 확인합니다.
PEM 인코딩 확인:
Get-Content "xxxx.crt" | Select-String "BEGIN CERTIFICATE"예상된 성공적인 출력:
-----BEGIN CERTIFICATE-----서명된 인증서를 Windows 호스트 컴퓨터의 인증서 폴더 로 이동합니다.
CSR이 생성된 후 처음 CSR을 찾은 폴더(...\Certificates\certs)와 동일한 폴더입니다.
주의
프라이빗 키를 공유하지 마세요. 연결된 캐시에는 서명된 인증서만 필요합니다.
서명된 TLS 인증서 가져오기
참고
스크립트는 importCert 현재 다음을 지원하지 않습니다 .
- gMSA 런타임 계정으로 Windows Server 2022 또는 Windows Server 2025에서 실행되는 노드를 캐시합니다.
- 지원되는 Windows 버전에서 gMSA를 사용할 때 매개 변수
-RunTimeAccountName입니다(대신 사용-RunTimeAccount).
두 문제는 Windows 설치 관리자의 다음 릴리스에서 해결됩니다.
관리자 권한으로 PowerShell을 열고 PowerShell 스크립트가 포함된 연결된 캐시 폴더로 이동합니다.
에 대한 매개 변수를
importCert.ps1구성하고 지정된 값을 사용하여 스크립트를 실행합니다.기본 구문
.\importCert.ps1 [Required Parameters]필수 매개 변수
매개 변수 설명 -certName서명된 TLS 인증서의 파일 이름 완료(.crt 확장명 사용 여부) -RunTimeAccountName연결된 캐시 소프트웨어를 실행하는 계정입니다. 연결된 캐시 런타임 계정으로 지정하려는 계정의 사용자 이름을 포함하는 PowerShell 변수여야 합니다. 예를 들어 $User = "LocalMachineName\Username"로컬 사용자 계정의 경우입니다. gMSA(그룹 관리 서비스 계정)를 사용하는 경우 형식을 로"Domain\Username$"지정해야 합니다.-mccLocalAccountCredential연결된 캐시 런타임 계정에 대한 PowerShell 자격 증명 개체입니다. 로컬 사용자 계정, 도메인 사용자 계정 또는 서비스 계정을 사용하는 경우에만 필요합니다. 예를 들면 $myLocalAccountCredential = Get-Credential입니다.본보기
.\importCert.ps1 ` -RunTimeAccountName $myLocalAccountCredential.Username ` -LocalAccountCredential $myLocalAccountCredential ` -certName "myTlsCert.crt"가져오기 프로세스가 성공적으로 완료되었는지 확인합니다.
오류가 발생하면 스크립트 출력에 지정된 폴더에서 타임스탬프
ImportCert.log가 있는 파일을 찾습니다. "여기에서 로그를 찾을 수 있습니다. ..." 로 시작하는 출력 줄을 찾습니다.- 파일 형식: ImportCert_YYYYMMDD-HHMMSS.log
- 본보기: ImportCert_20251201_143022.log 2025년 12월 1일 오후 2:30:22에 만든 파일입니다.
포트 443을 통해 외부 클라이언트가 연결된 캐시에 액세스할 수 있는지 확인합니다.
참고
포트 전달을 구성하기 전에 포트 443을 사용할 수 있는지 다시 확인합니다.
netstat -an | findstr :443포트 443 트래픽 전달
다음 명령을 사용하여 Windows 호스트 컴퓨터의 트래픽을 연결된 캐시 컨테이너로 연결합니다.
$ipFilePath = Join-Path ([System.Environment]::GetEnvironmentVariable("MCC_INSTALLATION_FOLDER", "Machine")) "wslIp.txt" $ipAddress = (Get-Content $ipFilePath | Select-Object -First 1).Trim() netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=$ipAddress이렇게 하면 포트 443의 들어오는 트래픽이 컨테이너의 내부 IP로 리디렉션되도록 포트 프록시가 설정됩니다.
방화벽에서 포트 443 열기
포트 전달이 있는 경우에도 Windows 방화벽은 포트 443에서 들어오거나 나가는 트래픽을 차단할 수 있습니다. 다음 명령을 사용하여 HTTPS 트래픽이 연결된 캐시와 자유롭게 흐를 수 있는지 확인합니다.
[void](New-NetFirewallRule -DisplayName "WSL2 Port Bridge (HTTPS)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort "443") [void](New-NetFirewallRule -DisplayName "WSL2 Port Bridge (HTTPS)" -Direction Outbound -Action Allow -Protocol TCP -LocalPort "443")
인증서 가져오기의 유효성을 추가로 검사하는 방법에 대한 지침은 Windows의 HTTPS 유효성 검사 페이지를 참조하세요.
HTTPS 지원 사용 안 함
연결된 캐시를 HTTP 전용 통신에 되돌리기 경우 다음 단계를 수행합니다. 이 프로세스는 CSR 파일, 인증서 및 로그를 포함하여 인증서 폴더에서 아무것도 삭제하지 않습니다.
관리자 권한으로 PowerShell을 열고 PowerShell 스크립트 폴더로 이동합니다.
에 대한 매개 변수를
disableTls.ps1구성하고 spcified 값을 사용하여 스크립트를 실행합니다.기본 구문
.\disableTls.ps1 [Required Parameters]필수 매개 변수
매개 변수 설명 -RunTimeAccountName연결된 캐시 소프트웨어를 실행하는 계정입니다. 연결된 캐시 런타임 계정으로 지정하려는 계정의 사용자 이름을 포함하는 PowerShell 변수여야 합니다. 예를 들어 $User = "LocalMachineName\Username"로컬 사용자 계정의 경우입니다. gMSA(그룹 관리 서비스 계정)를 사용하는 경우 형식을 로"Domain\Username$"지정해야 합니다.-mccLocalAccountCredential연결된 캐시 런타임 계정에 대한 PowerShell 자격 증명 개체입니다. 로컬 사용자 계정, 도메인 사용자 계정 또는 서비스 계정을 사용하는 경우에만 필요합니다. 예를 들면 $myLocalAccountCredential = Get-Credential입니다.참고
gMSA를 사용하는 경우 대신 매개 변수
-RunTimeAccount를-RunTimeAccountName사용합니다. 이 불일치는 곧 스크립트에서 수정될 예정입니다.본보기
.\disableTls.ps1 ` -RunTimeAccountName $myLocalAccountCredential.Username ` -LocalAccountCredential $myLocalAccountCredential `사용 안 함 프로세스가 성공적으로 완료되었는지 확인합니다.
HTTPS를 사용하지 않도록 설정한 후에는 HTTPS 요청이 실패하는 동안 HTTP 요청이 작동해야 합니다. 이 테스트 방법에 대한 지침은 Windows의 HTTPS 유효성 검사 페이지를 참조하세요.