|
| 1 | +# Alibaba Cloud (Aliyun) CDN domain-fronting provider. |
| 2 | +# |
| 3 | +# Built & verified 2026-06-23 (US vantage point). Aliyun CDN edges route by the |
| 4 | +# HTTP Host header and ignore the TLS SNI for origin selection, so a censor doing |
| 5 | +# SNI filtering sees only the innocent front domain (img.alicdn.com) while the |
| 6 | +# request reaches the real target. Confirmed cross-organization: a TLS session |
| 7 | +# bearing Alibaba's *.tbcdn.cn cert (SNI img.alicdn.com) reached Bilibili |
| 8 | +# (s1.hdslb.com) and Momo (img.momocdn.com) origins purely via the Host header. |
| 9 | +# |
| 10 | +# Two operational constraints discovered: |
| 11 | +# 1. TLS layer — the edge node must hold a cert valid for the SNI you present. |
| 12 | +# img.alicdn.com is ideal: Alibaba's own *.tbcdn.cn cert (SAN *.alicdn.com, |
| 13 | +# *.taobao.com, ...) is provisioned on ~every Aliyun node. |
| 14 | +# 2. The target Host must be an onboarded Aliyun CDN customer. A non-customer |
| 15 | +# Host (e.g. www.example.com) makes the edge silently drop the connection. |
| 16 | +# => Lantern must onboard its own distribution to Aliyun CDN; the |
| 17 | +# hostaliases + testurl below are PLACEHOLDERS until that exists. |
| 18 | +# |
| 19 | +# This file is a complete, standalone Config (parseable via ParseConfigYAML) so |
| 20 | +# it can be loaded directly for testing. The `aliyun:` block under `providers:` |
| 21 | +# is what gets merged into the upstream getlantern/fronted pipeline output. |
| 22 | + |
| 23 | +trustedcas: |
| 24 | + # Anchor for the Alibaba leaf cert chain: |
| 25 | + # *.tbcdn.cn -> GlobalSign GCC R3 OV TLS CA 2024 -> GlobalSign Root CA - R3 |
| 26 | + - commonname: GlobalSign Root CA - R3 |
| 27 | + cert: | |
| 28 | + -----BEGIN CERTIFICATE----- |
| 29 | + MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G |
| 30 | + A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp |
| 31 | + Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 |
| 32 | + MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG |
| 33 | + A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI |
| 34 | + hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 |
| 35 | + RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT |
| 36 | + gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm |
| 37 | + KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd |
| 38 | + QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ |
| 39 | + XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw |
| 40 | + DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o |
| 41 | + LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU |
| 42 | + RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp |
| 43 | + jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK |
| 44 | + 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX |
| 45 | + mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs |
| 46 | + Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH |
| 47 | + WD9f |
| 48 | + -----END CERTIFICATE----- |
| 49 | +
|
| 50 | +providers: |
| 51 | + aliyun: |
| 52 | + # ---------------------------------------------------------------------- |
| 53 | + # PLACEHOLDER — replace with real Lantern origins mapped to the Aliyun CDN |
| 54 | + # distribution domains (the CNAME targets, typically *.w.kunlunaq.com or a |
| 55 | + # custom CNAME) you create when onboarding each origin to Aliyun CDN. |
| 56 | + # ---------------------------------------------------------------------- |
| 57 | + hostaliases: |
| 58 | + config.getiantem.org: REPLACE-ME.w.kunlunaq.com |
| 59 | + api.getiantem.org: REPLACE-ME.w.kunlunaq.com |
| 60 | + # testurl must resolve to an Aliyun-onboarded host that returns HTTP 202 |
| 61 | + # on POST (see verifyWithPost). Point this at your distribution's /ping. |
| 62 | + testurl: https://REPLACE-ME.w.kunlunaq.com/ping |
| 63 | + # frontingsnis drives the wire SNI. ExpandedProvider regenerates each |
| 64 | + # masquerade's SNI from this list (deterministic by IP hash), so the |
| 65 | + # per-masquerade `sni:` values below are placeholders and get overwritten. |
| 66 | + # NOTE: a non-empty country code MUST be passed (WithCountryCode) for SNI |
| 67 | + # to be emitted; otherwise the no-SNI fallback verifies the cert against |
| 68 | + # the masquerade Domain (img.alicdn.com), which also works here. |
| 69 | + frontingsnis: |
| 70 | + default: |
| 71 | + usearbitrarysnis: true |
| 72 | + arbitrarysnis: |
| 73 | + - img.alicdn.com |
| 74 | + - gw.alicdn.com |
| 75 | + - a.alicdn.com |
| 76 | + # Masquerades: Aliyun edge IPs verified 2026-06-23 to present the Alibaba |
| 77 | + # *.tbcdn.cn cert. The upstream pipeline should harvest a much larger pool |
| 78 | + # from in-region vantage points; this is a seed set across 3 /24 blocks. |
| 79 | + masquerades: |
| 80 | + - domain: img.alicdn.com |
| 81 | + ipaddress: 155.102.54.137 |
| 82 | + sni: "" |
| 83 | + verifyhostname: null |
| 84 | + - domain: img.alicdn.com |
| 85 | + ipaddress: 155.102.54.138 |
| 86 | + sni: "" |
| 87 | + verifyhostname: null |
| 88 | + - domain: img.alicdn.com |
| 89 | + ipaddress: 163.181.66.200 |
| 90 | + sni: "" |
| 91 | + verifyhostname: null |
| 92 | + - domain: img.alicdn.com |
| 93 | + ipaddress: 163.181.66.201 |
| 94 | + sni: "" |
| 95 | + verifyhostname: null |
| 96 | + - domain: img.alicdn.com |
| 97 | + ipaddress: 8.25.82.183 |
| 98 | + sni: "" |
| 99 | + verifyhostname: null |
| 100 | + - domain: img.alicdn.com |
| 101 | + ipaddress: 8.25.82.184 |
| 102 | + sni: "" |
| 103 | + verifyhostname: null |
0 commit comments