Personal Electrum server with a private-CA/self-signed certificate no longer syncs over TLS: expose gdk's electrum_tls_validate_domain (or certificate pinning)
@ardier16 đang làm issue này rồi.
Từ ngày 19/10/2026.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 57/100
Hướng nghiên cứu
Start with core/gdk/models/ConnectionParams.swift and trace how Custom Server Settings passes network parameters, including the existing TLS toggle. The requested setting should control electrum_tls_validate_domain when TLS is enabled; done means a personal Electrum server with a private CA can sync, with the setting visible in Custom Server Settings. The issue names no test file, so find the relevant settings and connection parameter tests before changing behavior.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Since gdk started validating Electrum TLS certificates by default, the iOS app can no longer use a personal Electrum server whose certificate isn't signed by a public CA. That covers most self-hosted node platforms, which sign with their own local CA. gdk already has an opt-out, electrum_tls_validate_domain, but the iOS app doesn't pass it and has no setting for it. Please expose it.
What changed (gdk)
bdce1c3(2026-08-04) — "validate domain by default for TLS electrum connections": the default forElectrumUrl::Tlsmoved fromfalsetotrue.99e664d(2026-08-13) — Electrum moved from OpenSSL to rustls (electrum-client0.24.1,use-rustls-ring). Validation now uses the bundledwebpki_roots::TLS_SERVER_ROOTSonly, so a CA the user has installed on the iPhone is not trusted.f64fe2f(2026-08-18) — added theelectrum_tls_validate_domainnetwork parameter to turn validation off. It is inrelease_0.77.9andrelease_0.78.0.
What's missing (green_ios)
core/gdk/models/ConnectionParams.swift sends electrum_url, electrum_onion_url, electrum_tls and use_tor, but not electrum_tls_validate_domain. App Settings → Custom Server Settings has only "Enable TLS", so validation is always on. Checked against master at 131f820 (2026-09-22), which fetches gdk release_0.78.0.
What the user sees
With Personal Electrum Server + Enable TLS pointed at a self-hosted Fulcrum, the wallet still opens, but it stops syncing. It shows cached history only, from around the date the app updated. On the server side, every connection ends in a failed TLS handshake and is retried every couple of seconds. Nothing in the app showed that the server was being rejected for its certificate. The same server works with any client that trusts its CA.
Request
One of:
- Preferred: let the user pin the server's certificate or CA (a fingerprint or a pasted PEM) for the personal server. That keeps TLS authenticated. As far as I can see, gdk would need a parameter for this.
- A "Validate server certificate" toggle under Custom Server Settings, shown when TLS is on, that sets
electrum_tls_validate_domain: false. gdk already supports it. - At least a visible error when the personal server's TLS certificate is rejected, instead of silently showing stale history.
Workaround in use
Connect with Tor, TLS off, and a plain-TCP onion address for the same Fulcrum. It works because the onion address authenticates the server, but it is slower than a direct LAN connection.
- Ngôn ngữ chính
- Swift
- Star
- 163
- Fork
- 67
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Blockstream/green_ios
-
Support scanning SeedQR recovery phrasesCó thể làm lại được @ardier16 đã nhận 64 ngày trước và không có pull request nào đang mở. Đang mởfeature request
Blockstream/green_ios#98 · 1 bình luận · 1 người được giao ·
-
Remove "logging in" screenCó thể làm lại được @ardier16 đã nhận 86 ngày trước và không có pull request nào đang mở. Đang mởenhancement status: needs-triage
Blockstream/green_ios#94 · 1 bình luận · 2 reaction · 1 người được giao ·
-
Add change addresses to the list of addresses on the "List of Addresses" screenCó thể làm lại được @ardier16 đã nhận 86 ngày trước và không có pull request nào đang mở. Đang mởfeature request status: needs-triage
Blockstream/green_ios#83 · 2 bình luận · 1 người được giao ·
-
[Feature Request] Manual Fee Adjustment for On-Chain and Lightning PaymentsCó thể làm lại được @ardier16 đã nhận 86 ngày trước và không có pull request nào đang mở. Đang mởfeature request status: needs-triage
Blockstream/green_ios#81 · 1 bình luận · 1 người được giao ·
-
Support for Ledger Bitcoin current app in iOSCó thể làm lại được @ardier16 đã nhận 86 ngày trước và không có pull request nào đang mở. Đang mởfeature request status: needs-triage
Blockstream/green_ios#78 · 1 bình luận · 1 người được giao ·
Tất cả issue của Blockstream/green_ios
Issue tương tự
-
area: browser
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
manaflow-ai/cmux#27619 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
matteocrippa/awesome-swift#2028 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
KartikLabhshetwar/better-shot#193 ·
-
CTC keyword spotter hears silence: MelSpectrogram on the Neural Engine yields all-blank CTC framesĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
FluidInference/FluidAudio#1074 ·
Maintainer thường phản hồi trong vòng 1 ngày