3RD
TECH / BIKE / PHOTO / BOOKS / MOBILE
VAULT .NET

Sony a7c2에서 ftp 루트 인증서 문제 해결하기

소니 a7c2는 촬영 데이터의 무선 전송을 위한 방법 중 하나로 FTP 기능을 지원한다. FTP 서버도 구축해야하고, 이것저것 손이 많이 가지만, 한번만 만들어두면 WIFI 환경 안에서 촬영한 사진이 알아서 서버로 업로드되는 편리한 방법이다. 그러나 보안이 강화된 FTPS(FTP over SSL/TLS)를 사용하는 과정에서 시놀로지(Synology) NAS 및 클라우드플레어(Cloudflare) 환경과 충돌하는 사례가 빈번히 발생한다. 이는 하드웨어 기기의 보수적인 인증서 검증 체계와 웹 기반 프록시 환경의 특성 차이에서 기인한다. 이번 글에서는 클라우드플레어 프록시의 구조적 특성을 분석하고, 본인이 발견한 해결 방법을 소개 한다.

a7c2, ftp
이 자그마한 바디에 플래그쉽 부럽지 않은 기능들이 …


* 위에서 언급했지만 본인의 서버 도메인이 클라우드플레어일때를 기준으로 한다.

클라우드플레어 프록시(Proxy)의 메커니즘과 한계

클라우드플레어의 프록시 서비스, 이른바 ‘주황색 구름’ 설정은 사용자(Client)와 원본 서버(Origin Server) 사이에서 중계자 역할을 수행한다. 이 구조에서 사용자는 서버의 실제 IP 주소를 알 수 없으며, 모든 트래픽은 클라우드플레어의 엣지(Edge) 서버를 거친다. 프록시 활성화 시 발생하는 주요 변화는 다음과 같다. 첫째, IP 은닉 및 보안 강화다. 서버의 실제 IP가 노출되지 않아 디도스(DDoS) 공격으로부터 자유롭다. 둘째, SSL/TLS 종단 처리다. 브라우저와 클라우드플레어 구간, 그리고 클라우드플레어와 원본 서버 구간의 인증서를 분리하여 관리한다. 그냥 듣기만해도 꼭 사용하는게 좋을것 같은 기능들이다. 고작 카메라의 ftp 업로드 때문에 꺼버리기에는 정말 아까운 기능이다.

문제는 이 구조가 철저히 HTTP/HTTPS 프로토콜에 최적화되어 있다는 점이다. FTPS와 같은 비웹 프로토콜은 프록시 환경에서 정상적으로 작동하지 않거나, 클라우드플레어가 발행한 인증서와 서버의 실제 인증서 간의 차이로 인해 기기 측에서 ‘신뢰할 수 없는 연결’로 간주하여 차단하는 사태가 벌어진다. 쉽게 말하면, 서버에서 a 라는 SSL 인증서를 사용하고 있는데 클라우드플레어의 프록시를 거치면 반대쪽에서 b 라는 클라우드플레어에서 발급한 인증서가 튀어나온다. 그래서 a7c2의 ftp 세팅에서 인증서 오류가 뜨게 된다.

이 사실을 발견하는 것만해도 꽤나 험난한 과정을 거쳤다. 분명히 모든 세팅이 맞는데도 도저히 카메라에서 ftp 전송이 안되는 상황에서 많이 당황했었다. 이 글을 보시는 분들은 아래 내용을 참고해서 한번에 해결 하시길 바란다.

솔루션 : 도메인 분리와 직접 연결

A7C2의 엄격한? 아니, 유도리 없는 인증서 검증을 통과하기 위해서는 웹 트래픽과 FTP 트래픽을 분리하는 방법이 제일 편리하다. 그러니까 시놀로지 나스로 접속하는 IP는 클라우드플레어의 프록시 기능을 그대로 사용하고, 별도의 서브 도메인을 카메라 전용으로 만들고 그 도메인만 프록시를 끄는거다. 적어도 내가 알아낸 바로는 이 방법이 가장 간편하고 안전하다. 프록시 기능을 포기하기에는 아깝기 때문에 이런식으로 구분하는게 낫다고 판단했다.

Step 1: DNS 설정 및 도메인 이원화

주황색 토글 버튼을 눌러서 회색 구름으로 만들어야한다. 잊지 말자.

메인 도메인은 프록시를 유지하여 웹 보안을 챙기되, 카메라 전용 서브 도메인을 신설한다. 클라우드플레어의 DNS 메뉴에서 A 레코드 타입으로 해서 원하는 서브 도메인명을 입력하면 서브 도메인이 생성된다. 해당 레코드는 클라우드플레어 설정에서 ‘DNS 전용(DNS Only, 회색 구름)’으로 지정한다. 이를 통해 카메라는 클라우드플레어를 거치지 않고 시놀로지 서버와 직접 통신하게 되며, 서버가 보유한 실제 SSL 인증서를 온전히 수신할 수 있게 된다. 순서는 아래와 같다.

  1. 레코드 생성: 클라우드플레어 DNS 설정 메뉴에서 Add Record를 클릭.
  2. 타입 설정: A 레코드를 선택하고, Name에 원하는 서브 도메인명(예: cam)을 입력.
  3. IP 입력: 서버의 실제 공인 IP 주소를 입력.
  4. 프록시 비활성화: Proxy status를 클릭하여 주황색 구름을 회색 구름(DNS Only) 상태로 변경..

Step 2. 시놀로지: 전용 인증서 발급 및 서비스 할당

새 인증서를 추가하고 방금 생성한 서브 도메인을 입력한다.

시놀로지 제어판의 인증서 메뉴에서 새 서브 도메인에 대한 Let’s Encrypt 인증서를 별도로 발급 받는다. 발급된 인증서는 제어판의 ‘구성’ 설정을 통해 FTP 서비스 및 관련 역방향 프록시 항목에 정확히 할당되어야 한다. 인증서에 명시된 이름과 접속 주소가 일치하지 않을 경우 카메라는 즉각 연결을 거부하므로 주의가 필요하다.

  1. 인증서 발급: 시놀로지 제어판 > 보안 > 인증서 메뉴에서 추가를 클릭.
  2. Let’s Encrypt 활용: ‘새 인증서 추가’ -> ‘Let’s Encrypt에서 인증서 받기’를 선택하고, 앞서 만든 서브 도메인(예: cam.3rdvault.net) 정보를 입력하여 발급받는다.
  3. 서비스 구성 할당: 인증서 목록에서 설정(또는 구성) 버튼을 누른다.
  4. 매칭 작업: 시스템 서비스 중 FTP와 관련 역방향 프록시 항목의 인증서를 방금 발급받은 ‘서브 도메인용 인증서’로 변경하고 확인을 누른다.

Step 3: 루트 인증서 주입 및 파일명 변경

가장 핵심적인 단계는 카메라가 서버를 신뢰할 수 있도록 루트 인증서를 물리적으로 주입하는 과정이다. 위 과정에서 발급받은 서브 도메인의 인증서를 내보내기 하면 압축파일이 하나 생기는데, 열어보면 root.pem 파일이 있다. 이 파일을 카메라로 이식해야하는데 그대로 넣으면 a7c2가 인식하지 못한다. 소니 카메라의 시스템 규격에 맞춰 파일명을 cacert.pem으로 변경한 후, SD 카드의 루트 경로에 저장한다. 카메라 메뉴의 ‘루트 인증서 가져오기’ 기능을 통해 해당 파일을 업데이트하면 된다. 이때 잠시 와이파이를 꺼야 루트인증서 갱신이 가능하니 참고하자.

  1. 파일 추출: 시놀로지 인증서 목록에서 해당 서브 도메인 인증서를 선택하고 인증서 내보내기를 실행.
  2. 루트 파일 확인: 다운로드된 압축 파일의 해제 후, 여러 파일 중 root.pem 파일만 따로 챙긴다.
  3. 파일명 변경: 소니의 인식 규격에 맞게 파일명을 반드시 cacert.pem으로 변경. (확장자 주의)
  4. SD 카드 복사: 변경된 파일을 SD 카드의 최상위 경로(Root)에 바로 저장.
  5. 카메라 주입:
    • 사전 조치: 카메라의 Wi-Fi 기능을 잠시 끕니다. (켜져 있으면 인증서 갱신 메뉴 작동 안함)
    • 메뉴 이동: 카메라 메뉴에서 네트워크 > Wi-Fi > 루트 인증서 가져오기를 실행.
    • 업데이트: SD 카드에 담긴 파일을 불러와 업데이트를 완료.



위 작업을 거친 뒤 카메라에서 ftp 전송 기능을 켜보면 아무런 에러 없이 잘 작동할 것이다. 이제 메인 도메인은 클라우드플레어의 강력한 프록시 서비스를 받으면서 카메라 전용 서브 도메인만 논 프록시로 작동해 카메라 전송이 문제없이 돌아갈 것이다.

맺음말

데이터 전송의 편의성과 서버의 보안은 양립하기 어려운 과제다. 그러나 클라우드플레어의 프록시 특성을 명확히 이해하고, 서브 도메인을 통한 직접 연결과 수동 인증서 주입 방식을 병행함으로써 보안과 기능이라는 두 마리 토끼를 잡을 수 있다. 사실 귀찮으면 카메라 설정에서 “루트 인증서 무시” 항목을 고르면 일단 작동은 하지만, 계속해서 에러 메시지를 봐야하고 공공장소의 와이파이같은 곳에서 보안에 취약해질 수 있다. 카메라에서 셔터만 눌러도 촬영된 사진이 알아서 내 서버에 올라가 있는 편리함을 위해서 조금의 불편함은 감수해야 하지 않을까.. 라는 말로 이번 글을 맺음한다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다