Skip to content

[검토] ZScaler 환경에서의 Windows Sandbox 네트워킹 이슈 해결책 적용 #292

Description

@rkttu

최근 기업 차원에서 엔드포인트 통제를 목적으로 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

이러한 우회책 적용을 식탁보 신규 옵션으로 도입하는 것을 검토할 필요가 있음. 또한 이 기능은 무설치 식탁보에서는 지원되는 옵션이 아님을 명시하여 한계점을 구분지어야 함.

Metadata

Metadata

Assignees

Labels

개선새로운 기능 요청이나 개선 건의 사항입니다.

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions