포스트

Cloudflared tunnel 이틀 걸려서 알아낸 주의점.

매번 하던데로 터널을 등록해서 사용하는데 계속 연결이 안되었습니다.

  • schannel: disabled automatic use of client certificate
  • ALPN: curl offers http/1.1
  • schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.
  • closing connection #0 curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.

저는 보통 다음과 같이 스크립트를 등록해서 씁니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# ================================================
# 📌 Cloudflare Tunnel + DNS 등록 자동 스크립트
# - 터널이 없으면 생성
# - 등록할 도메인을 모두 tunnel route dns로 연결
# ================================================

# 설정값
$tunnelName = "my-tunnel"
$dnsList = @(
  "api.mydomain.com"
)

# 터널 존재 확인
$tunnelId = & cloudflared tunnel list --output json | `
  ConvertFrom-Json | Where-Object { $_.name -eq $tunnelName } | Select-Object -ExpandProperty id

if (-not $tunnelId) {
  Write-Host "📭 터널 '$tunnelName'이 존재하지 않습니다. 새로 생성합니다..."
  & cloudflared tunnel create $tunnelName

  # 생성 직후 터널 ID 재조회
  $tunnelId = & cloudflared tunnel list --output json | `
    ConvertFrom-Json | Where-Object { $_.name -eq $tunnelName } | Select-Object -ExpandProperty id

  if (-not $tunnelId) {
    Write-Host "❌ 터널 생성에 실패했습니다."
    exit 1
  }

  Write-Host "✅ 터널 생성 완료: ID = $tunnelId"
} else {
  Write-Host "✅ 터널 '$tunnelName'이 이미 존재합니다. ID = $tunnelId"
}

# 도메인 목록 DNS 등록
foreach ($domain in $dnsList) {
  Write-Host "🔗 도메인 연결 중: $domain → $tunnelId"
  & cloudflared tunnel route dns $tunnelId $domain
}

Write-Host "`n🎉 모든 도메인 DNS 연결 완료!"

도저히 에러를 어떻게 해결할 지 몰라서 너무너무 헤매다가 혹시나 해서 저기 dns 설정에서 보여주는 경고문을 따라보기로 했습니다.

제가 원하던 것은 subdomain1.subdomain2.domain.com 으로 터널을 연결하는 것이었습니다. 그런데 계속 ssl 관련 에러가 나서,

subdomain을 깊게 안 넣고 1개만 두기로 바꿨습니다. -> subdomain1.domain.com

그랬더니 dns 경고도 사라지고 연결이 성공했습니다!

분명 지난 번 다른 서비스에서는 터널을 잘 사용했는데 이번엔 잘 안되서 너무 고생하다가 이틀 걸려서 알아낸 팁입니다. ㅎㅎ

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.