전체 글 목록

BlueWallet을 내 Fulcrum 서버에 연결하는 방법|공개 접속과 SSL 주의사항

이번 글은 ‘NAS로 비트코인 풀노드 구축하기’ 시리즈의 4편입니다.

Synology NAS에서 Bitcoin Core와 Fulcrum을 운영한 뒤, iPhone의 BlueWallet을 내 서버에 연결해 사용하고 있습니다.

이 글에서는 BlueWallet 8.0.1에서 사용자 지정 Fulcrum 서버를 연결한 과정과 함께, 공개 인터넷 접속에서 알아야 할 DNS와 SSL의 한계를 정리합니다.

본문에 나오는 도메인, IP와 포트는 모두 문서용 예시이므로 자신의 환경에 맞는 값으로 바꿔야 합니다.

적용 환경과 연결 방식

  • BlueWallet 8.0.1
  • iOS 26.6.1
  • Synology NAS에서 Bitcoin Core와 Fulcrum 운영
  • 외부에서는 공개 인터넷으로 Fulcrum에 직접 접속
  • DNS 레코드는 DNS only 방식 사용
  • 예시 서버: electrum.example.com
  • 예시 포트: <TLS_PORT>

앱이나 운영체제 버전에 따라 메뉴 위치와 동작이 달라질 수 있습니다.

이 글은 제가 실제로 사용하는 공개 접속 방식을 설명합니다. 인터넷에 포트를 열고 서버를 운영하는 방식이므로, 처음 구축한다면 WireGuard 같은 VPN 내부 접속 방식도 함께 비교하는 편이 좋습니다.

Bitcoin Core·Fulcrum·BlueWallet의 역할

세 구성요소의 역할을 먼저 구분하면 연결 과정이 이해하기 쉽습니다.

  • Bitcoin Core: 블록과 거래를 검증하는 풀노드입니다.
  • Fulcrum: Bitcoin Core의 데이터를 색인하고 Electrum 프로토콜로 지갑의 조회 요청에 응답합니다.
  • BlueWallet: iPhone에서 주소와 거래 내역을 보여주고, 사용자가 지정한 Electrum 서버의 응답을 이용합니다.

BlueWallet이 Fulcrum에 연결됐다고 해서 iPhone이 모든 블록을 직접 검증하는 것은 아닙니다. 풀노드 검증은 Bitcoin Core가 담당하고, BlueWallet은 연결한 서버를 신뢰해 필요한 정보를 받는 구조입니다.

전체 연결 구조는 아래 그림처럼 볼 수 있습니다.

Bitcoin Core에서 Fulcrum을 거쳐 BlueWallet로 연결되는 구조

연결 전에 확인할 항목

내 Fulcrum 서버를 사용하는 이유

BlueWallet을 내 Fulcrum 서버에 연결하면 불특정 제3자의 Electrum 서버 대신 직접 운영하는 서버에서 주소와 거래 내역에 필요한 정보를 조회할 수 있습니다.

다만 이 연결만으로 BlueWallet이 풀노드처럼 모든 블록과 거래 규칙을 직접 검증하는 것은 아닙니다. 지갑이 어떤 서버에 조회를 요청하는지와 해당 서버를 어떻게 운영·보호하는지도 함께 살펴야 합니다.

Fulcrum이 정상 동작하는지 확인

먼저 Fulcrum이 Bitcoin Core와 연결되어 있고 색인이 완료됐는지 확인합니다. 서버가 아직 동기화 중이거나 Bitcoin Core RPC 연결에 문제가 있으면 BlueWallet에서 접속되더라도 잔액과 거래 내역이 정상적으로 갱신되지 않을 수 있습니다.

외부 접속 경로 확인

공개 인터넷에서 연결하려면 다음 경로가 이어져 있어야 합니다.

BlueWallet → 공개 DNS → 공유기 방화벽·포트포워딩 → Fulcrum TLS 수신 포트

공개 글에서는 실제 주소와 포트를 쓰지 않고 다음과 같이 표시합니다.

  • 서버: electrum.example.com
  • 포트: <TLS_PORT>
  • SSL: 켬

예시값을 그대로 입력하지 말고 자신이 운영하는 서버 값으로 바꿔야 합니다.

DNS only가 의미하는 것

Cloudflare의 DNS-only A 또는 AAAA 레코드는 조회자에게 원본 IP를 반환합니다. 따라서 비HTTP TCP 서비스에 DNS only를 사용하면 실제 원본 IP가 공개된다는 점을 전제로 운영해야 합니다.

Fulcrum과 WordPress가 같은 공인 IP를 공유한다면 Fulcrum용 DNS 레코드를 통해 WordPress 원본 IP도 유추할 수 있습니다. WordPress 원본 웹서버가 Cloudflare를 거치지 않은 직접 요청을 받지 않도록 별도의 원본 보호가 적용됐는지도 확인해야 합니다.

Cloudflare의 일반 웹 프록시를 켜는 것만으로 임의의 Electrum TCP 서비스가 보호되는 것은 아닙니다. TCP 프록시가 필요하다면 별도 제품의 지원 범위를 확인해야 합니다.

Cloudflare의 DNS-only 레코드 설정 화면은 다음과 같습니다.

Cloudflare DNS에 electrum A 레코드를 DNS only로 추가한 화면
  • Type: A
  • Name: electrum
  • IPv4 address: 현재 집 공인 IP
  • Proxy status: DNS only
  • TTL: Auto

DNS 적용 상태 확인

DNS 레코드를 추가하거나 변경한 뒤에는 입력한 호스트 이름이 현재 서버의 공인 IP를 반환하는지 확인합니다. DNS 캐시와 TTL 때문에 변경 내용이 바로 반영되지 않을 수도 있습니다.

Mac 터미널에서는 다음과 같이 확인할 수 있습니다.

dig +short electrum.example.com

Windows에서는 다음 명령을 사용할 수 있습니다.

nslookup electrum.example.com

electrum.example.com은 문서용 예시이므로 실제 확인할 때는 자신이 설정한 호스트 이름으로 바꿔야 합니다. 응답이 없거나 이전 IP가 표시된다면 DNS 레코드, 입력한 이름과 캐시 상태를 다시 확인합니다.

DSM 인증서와 Fulcrum 인증서 구분하기

공개 인터넷에서 TLS로 연결하려면 서버에서 사용할 인증서와 개인키가 준비되어 있어야 합니다. DSM의 인증서 화면에서는 다음 항목을 확인합니다.

  • 인증서에 연결용 호스트 이름이 포함되어 있는지
  • 인증서가 현재 유효한 상태인지
  • 만료일이 지나지 않았는지
  • 갱신 후 새 인증서가 정상적으로 표시되는지

다만 DSM에 인증서가 등록됐다는 사실만으로 Fulcrum 컨테이너가 그 인증서를 자동으로 사용하는 것은 아닙니다. Fulcrum이 실제로 읽는 인증서와 개인키 파일의 위치 및 권한을 별도로 확인해야 합니다.

아래 이미지의 호스트 이름은 가렸으며, 표시된 만료일은 촬영 당시 정보입니다.

Synology DSM에서 Electrum 서버용 SSL 인증서 정보를 확인하는 화면

Fulcrum이 실제로 사용하는 인증서 경로 확인

Fulcrum 컨테이너의 환경변수에서는 TLS 인증서와 개인키 파일을 어느 위치에서 읽도록 설정했는지 확인합니다. DSM에서 인증서를 발급했더라도 이 경로에 필요한 파일이 연결되지 않았다면 Fulcrum은 해당 인증서를 사용할 수 없습니다.

다음 항목을 확인합니다.

  • 인증서 파일과 개인키 파일의 환경변수가 설정되어 있는지
  • 컨테이너 내부에서 지정한 위치에 파일이 존재하는지
  • Fulcrum 프로세스에 파일을 읽을 권한이 있는지
  • 인증서와 개인키가 서로 맞는 쌍인지
  • 인증서 갱신 후 Fulcrum이 새 파일을 읽도록 재시작 또는 재로딩이 필요한지

실제 인증서와 개인키의 내용은 화면이나 글에 공개하지 않습니다. 아래 화면의 파일 위치는 이 환경에서 사용한 컨테이너 내부 설정 예시이며, NAS의 볼륨 구성과 컨테이너 이미지에 따라 달라질 수 있습니다.

Fulcrum 컨테이너에서 SSL 인증서와 개인키 파일 경로를 설정한 화면
  • SSL_CERTFILE = /data/fulcrum.crt
  • SSL_KEYFILE = /data/fulcrum.key

BlueWallet에 Fulcrum 서버 연결하기

BlueWallet 8.0.1의 한국어 화면에서는 설정 → 네트워크 → 일렉트럼 서버로 이동합니다. 선호 서버 영역에 사용자 지정 서버 정보를 입력합니다. 이후 버전에서는 메뉴 이름이나 위치가 달라질 수 있습니다.

  1. 서버 주소에는 자신이 관리하는 호스트 이름을 입력합니다.
  2. 포트에는 Fulcrum에서 TLS용으로 열어 둔 포트를 입력합니다.
  3. SSL 사용을 켭니다.
  4. 저장을 누릅니다.
  5. 상태 영역에 연결됨이 표시되는지 확인합니다.

예시 형식은 다음과 같습니다.

서버: electrum.example.com
포트: <TLS_PORT>
SSL: 켬

예시 서버와 포트는 자신의 환경에 맞는 값으로 바꿔야 합니다.

저는 인증서 파일을 바로 교체하기보다 기존 Fulcrum TLS 설정을 유지한 상태에서 BlueWallet 연결을 먼저 시험했습니다. 연결됨이 표시되면 앱이 Electrum 프로토콜 응답을 받은 것이지만, 서버 신원 확인까지 끝났다는 의미는 아닙니다.

BlueWallet의 연결 상태 화면은 다음과 같습니다. 서버 주소와 포트는 가렸습니다.

BlueWallet에서 Fulcrum 기반 Electrum 서버 연결 상태를 확인한 화면

Connected와 SSL ON이 보장하는 범위

BlueWallet에서 Connected가 표시되면 입력한 주소에서 Electrum 프로토콜 응답을 받았다고 볼 수 있습니다. 그러나 이 표시만으로 접속한 서버가 내가 기대한 서버와 동일하다는 것까지 보장되지는 않습니다.

제가 실제 연결 과정에서 확인한 범위는 다음과 같습니다.

  • 별도 DNS 조회에서 설정한 호스트 이름이 의도한 공인 IP를 반환했습니다.
  • 외부 네트워크에서 설정한 TLS 포트까지 연결됐습니다.
  • Fulcrum이 Electrum 프로토콜 요청에 응답했습니다.
  • BlueWallet에서 SSL 사용을 켠 상태로 Connected가 표시됐습니다.

이 결과는 DNS부터 Fulcrum까지의 연결 경로가 동작했다는 의미입니다. 하지만 서버 신원과 인증서가 공인 인증기관 및 호스트 이름을 기준으로 검증됐다는 의미는 아닙니다.

확인 기준일인 2026년 8월 23일, BlueWallet 8.0.1이 사용하는 Electrum 클라이언트의 TLS 연결 코드에는 인증서 검증을 비활성화하는 설정이 적용되어 있습니다. 따라서 이 버전의 SSL 사용은 전송 구간을 암호화한다는 의미는 있지만, 공인 인증기관과 호스트 이름을 이용해 서버 신원까지 확인했다는 의미는 아닙니다.

쉽게 구분하면 다음과 같습니다.

  • TLS 암호화: 통신 내용을 평문으로 보내지 않도록 보호합니다.
  • 인증서 검증: 연결한 상대가 기대한 서버인지 확인합니다.
  • Connected: 앱이 서버와 통신에 성공했다는 상태입니다.

세 항목은 같은 뜻이 아닙니다. 자체 서명 인증서로 연결됐다는 사실만으로 중간자 공격까지 방지된다고 단정해서는 안 됩니다.

이 동작은 이후 BlueWallet 버전에서 바뀔 수 있으므로 큰 버전 업데이트 뒤에는 공식 소스와 연결 동작을 다시 확인하는 편이 좋습니다.

연결되지 않을 때 확인할 순서

여러 설정을 한꺼번에 바꾸면 어느 단계에서 문제가 생겼는지 알기 어렵습니다. DNS, 외부 포트, TLS와 Fulcrum 순서로 하나씩 확인합니다.

1. 주소·DNS·포트 확인

  • 호스트 이름의 철자가 맞는지 확인합니다.
  • DNS가 현재 서버의 공인 IP를 반환하는지 확인합니다.
  • Cloudflare 레코드가 Electrum TCP 연결에 맞게 DNS only로 설정됐는지 확인합니다.
  • BlueWallet에 일반 포트가 아닌 Fulcrum의 TLS 수신 포트를 입력했는지 확인합니다.
  • 문서의 예시 주소와 <TLS_PORT>를 실제 값처럼 입력하지 않았는지 확인합니다.
  • 같은 내부 네트워크가 아니라 모바일 데이터 등 외부 네트워크에서도 연결되는지 확인합니다.

2. 공유기와 방화벽 확인

  • 포트포워딩 대상과 Fulcrum의 TLS 수신 포트가 일치하는지 확인합니다.
  • 필요한 Fulcrum 서비스 포트만 외부에 열려 있는지 확인합니다.
  • DSM 관리 화면, SSH와 Bitcoin Core RPC 같은 관리용 기능이 함께 공개되지 않았는지 확인합니다.
  • 공인 IP가 변경됐다면 DNS 레코드도 현재 값으로 갱신됐는지 확인합니다.

3. Fulcrum과 Bitcoin Core 확인

  • Fulcrum 프로세스가 실행 중이고 TLS 포트에서 요청을 받는지 확인합니다.
  • 인증서와 개인키 파일의 위치 및 읽기 권한에 오류가 없는지 확인합니다.
  • 인증서가 만료되지 않았고 인증서와 개인키가 서로 맞는지 확인합니다.
  • Fulcrum 로그에 TLS, 수신 포트 또는 Bitcoin Core RPC 오류가 없는지 확인합니다.
  • Bitcoin Core가 동기화됐고 Fulcrum의 색인이 완료됐는지 확인합니다.

4. 확인 결과로 범위 좁히기

  • DNS는 정상이지만 외부 포트에 연결되지 않으면 공유기, 방화벽과 Fulcrum 수신 상태를 확인합니다.
  • 포트에는 연결되지만 Electrum 응답이 없으면 TLS 인증서와 Fulcrum 설정을 확인합니다.
  • BlueWallet에 Connected가 표시되지만 지갑 정보가 갱신되지 않으면 Fulcrum 색인과 Bitcoin Core 연결 상태를 확인합니다.

공개 인터넷으로 운영할 때의 보안 점검

공개 접속을 유지한다면 서버 주소를 글에서 가리는 것과 별개로 실제 네트워크와 서버를 안전하게 관리해야 합니다.

  • 필요한 Fulcrum 서비스 포트만 외부에 공개합니다.
  • DSM 관리 화면, SSH, Bitcoin Core RPC와 인증정보는 직접 공개하지 않습니다.
  • NAS, 컨테이너, Fulcrum과 관련 패키지를 최신 상태로 관리합니다.
  • 반복되는 접속 실패와 비정상 요청이 없는지 로그를 확인합니다.
  • 같은 NAS에서 여러 공개 서비스를 운영한다면 서비스별 인증과 접근 범위를 나눠 점검합니다.
  • WordPress 원본 웹서버가 Cloudflare를 우회한 직접 요청을 받는지 확인합니다.
  • 네트워크나 인증서 설정을 변경하기 전에는 현재 구성과 되돌리는 방법을 기록합니다.

BlueWallet을 Electrum 서버에 연결하는 과정에는 시드 문구나 개인키 입력이 필요하지 않습니다.
연결 문제를 해결한다는 이유로 이런 정보를 서버, 웹사이트나 메신저에 입력하거나 전달하지 마세요.

마무리

BlueWallet을 내 Fulcrum 서버에 연결하면 불특정 제3자의 Electrum 서버 대신 직접 운영하는 서버에서 지갑 정보를 조회할 수 있습니다. 다만 BlueWallet이 서버를 신뢰하는 구조와 TLS 암호화·인증서 검증·연결 성공이 서로 다른 의미라는 점을 함께 이해해야 합니다.

저는 공개 인터넷 직접 접속 방식을 사용하고 있지만, 공개 DNS와 포트포워딩을 유지하면 서버 자체의 노출은 계속됩니다. 방화벽, 업데이트, 로그와 WordPress 원본 보호를 별도로 관리해야 합니다.

공개 포트를 줄이고 싶다면 ipTIME WireGuard VPN으로 외부 PC에서 집 NAS 접속하기도 대안으로 참고할 수 있습니다.

이번 4편까지 Bitcoin Core의 역할, Fulcrum 설치와 색인, BlueWallet 연결 흐름을 하나의 시리즈로 정리했습니다. 아래 목록에서 앞선 과정을 순서대로 확인할 수 있습니다.

NAS로 비트코인 풀노드 구축하기 시리즈

참고한 공식 자료

자료 확인일: 2026년 8월 23일

댓글 남기기