최근 기업 차원에서 엔드포인트 통제를 목적으로 ZScaler (https://www.zscaler.com/) 도입을 하는 고객들이 많은데, 이들 고객의 경우 Windows Sandbox 내부로는 ZScaler 루트 인증서 전파가 자동으로 이루어지는 것은 아니어서 Windows Sandbox 내부의 인터넷 연결이 차단되는 문제가 발생함.
이 문제를 해결하기 위해서는 호스트에서 사용 중인 ZScaler 루트 인증서를 찾아 Windows Sandbox 내부로 전파하는 과정이 필요하며, 다음의 스크립트를 통하여 ZScaler를 켠 상태에서 샌드박스 내 인터넷 연결이 복원되는 것을 확인함. (호스트에 C:\SandboxSetup 디렉터리를 만든 상태에서 진행)
extract.ps1
$certs = Get-ChildItem Cert:\LocalMachine\Root |
Where-Object { $_.Subject -like "*Zscaler*" }
$pem = foreach ($c in $certs) {
"-----BEGIN CERTIFICATE-----"
[Convert]::ToBase64String($c.RawData, 'InsertLineBreaks')
"-----END CERTIFICATE-----"
}
$pem | Set-Content -Path C:\SandboxSetup\zscaler.pem -Encoding ascii
sandbox.wsb
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\SandboxSetup</HostFolder>
<SandboxFolder>C:\Setup</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>powershell -ExecutionPolicy Bypass -File C:\Setup\setup.ps1</Command>
</LogonCommand>
</Configuration>
setup.ps1
# 1) 현재 사용자 신뢰 루트에 임포트 (상승 불필요, SChannel/브라우저 대응)
Import-Certificate -FilePath C:\Setup\zscaler.pem -CertStoreLocation Cert:\CurrentUser\Root
# 2) Node.js: 저장소 무관, PEM 직접 지정 (User 스코프)
[Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\Setup\zscaler.pem", "User")
$env:NODE_EXTRA_CA_CERTS = "C:\Setup\zscaler.pem" # 현재 세션에도 즉시 반영
# 3) git을 SChannel로 (선택)
git config --global http.sslBackend schannel
이러한 우회책 적용을 식탁보 신규 옵션으로 도입하는 것을 검토할 필요가 있음. 또한 이 기능은 무설치 식탁보에서는 지원되는 옵션이 아님을 명시하여 한계점을 구분지어야 함.
최근 기업 차원에서 엔드포인트 통제를 목적으로 ZScaler (https://www.zscaler.com/) 도입을 하는 고객들이 많은데, 이들 고객의 경우 Windows Sandbox 내부로는 ZScaler 루트 인증서 전파가 자동으로 이루어지는 것은 아니어서 Windows Sandbox 내부의 인터넷 연결이 차단되는 문제가 발생함.
이 문제를 해결하기 위해서는 호스트에서 사용 중인 ZScaler 루트 인증서를 찾아 Windows Sandbox 내부로 전파하는 과정이 필요하며, 다음의 스크립트를 통하여 ZScaler를 켠 상태에서 샌드박스 내 인터넷 연결이 복원되는 것을 확인함. (호스트에
C:\SandboxSetup디렉터리를 만든 상태에서 진행)extract.ps1
sandbox.wsb
setup.ps1
이러한 우회책 적용을 식탁보 신규 옵션으로 도입하는 것을 검토할 필요가 있음. 또한 이 기능은 무설치 식탁보에서는 지원되는 옵션이 아님을 명시하여 한계점을 구분지어야 함.