Shadowrocket Trojan 설정 방법: 비밀번호, SNI, TLS 및 Allow Insecure

Trojan의 TLS 작동 방식과 Shadowrocket Add Server의 Address, Port, Password, SNI 입력 방법을 알아보고 자주 하는 설정 실수도 확인하세요.

이 글의 핵심

Trojan을 설정할 때는 먼저 Address, Port, Password를 확인한 다음 TLS의 Server Name(SNI)과 인증서 검증을 점검하세요. 서비스 제공업체와 연결 정보를 이미 보유하고 iPhone 또는 iPad에서 Shadowrocket을 설정하려는 사용자를 위한 안내입니다. 순서대로 확인하면 연결 시간 초과, 인증서 오류, 인증 실패, 규칙 미적용을 구분해 비밀번호만 문제로 단정하지 않을 수 있습니다.

Trojan 연결 순서: TLS 연결 후 인증

표준 Trojan은 TLS로 클라이언트와 서버 간 통신을 보호합니다. Shadowrocket은 지정한 주소와 포트에 연결한 뒤 TLS 핸드셰이크와 서버 인증을 진행하고, 암호화된 연결을 통해 Trojan 인증 정보와 대상 요청을 전송합니다. 따라서 포트에 연결된다고 비밀번호가 맞는 것은 아니며, TLS에 성공해도 서버가 인증을 승인했다는 뜻은 아닙니다.

Address는 서버를 찾는 데 사용하고, SNI는 TLS 핸드셰이크 중 접속하려는 서버 이름을 전달합니다. 정상적인 인증을 위해서는 예상한 이름에 맞는 인증서인지도 확인해야 합니다. 서로 관련된 값일 수 있지만 서로 대체할 수는 없습니다. 이 글의 도메인과 포트는 입력 항목을 설명하기 위한 예시일 뿐, 실제 연결 정보가 아닙니다. 실제 값은 서비스 제공업체에서 확인하세요.

443
TLS 서비스에 자주 쓰이는 포트일 뿐, 모든 Trojan 서버의 고정 포트는 아닙니다.
1–65535
서비스 제공업체가 안내한 정수 포트를 입력하세요. 유효한 포트 범위 내에서 설정해야 합니다.
3단계
연결 가능 여부, TLS 검증, Trojan 인증을 각각 확인하세요.

요약: 인증서 오류가 나면 먼저 이름을 확인하세요

인증서 검증 오류가 명확히 표시되면 비밀번호를 바꾸기 전에 SNI, 인증서에 포함된 도메인, 기기 시간을 확인하세요. 비밀번호를 바꿔도 TLS 서버 인증 실패는 해결되지 않습니다.

Add Server 항목별 입력 방법

Home 오른쪽 위의 “+”를 누르고 Add Server로 이동한 다음 Type을 Trojan으로 설정하세요. 그런 다음 각 항목을 입력합니다. 일부 TLS 옵션은 하위 설정에 있을 수 있으므로 현재 앱 화면에 표시되는 항목을 기준으로 확인하세요. 입력란을 모두 채우려고 제공되지 않은 값을 임의로 추가하지 마세요.

항목입력 기준자주 하는 실수
Type 서버 프로토콜과 동일하게 Trojan을 선택합니다. 다른 프로토콜의 주소와 인증 정보를 Trojan 입력란에 넣습니다.
Address 서버 도메인 또는 IP를 입력합니다. 예시 도메인은 edge.example.com입니다. https://, 경로 또는 쿼리 매개변수가 포함된 전체 URL을 붙여 넣습니다.
Port 안내받은 값을 입력합니다. 예시 포트는 443입니다. 443이 아닌 포트를 임의로 443으로 바꾸거나 포트 번호를 Address에 함께 입력합니다.
Password 해당 Trojan 서비스의 인증 비밀번호를 입력하고 대소문자와 특수 문자를 그대로 유지합니다. 서비스 제공업체 웹사이트의 로그인 비밀번호를 사용하거나 복사할 때 공백이나 줄 바꿈을 함께 포함합니다.
TLS 표준 Trojan은 TLS를 사용합니다. 안내받은 설정에 따라 관련 옵션을 확인하세요. TLS를 임의로 꺼도 되는 속도 향상 옵션으로 취급합니다.
SNI / Server Name 서비스 제공업체가 지정한 TLS 서버 이름을 호스트명만 입력합니다. 전체 URL, 접속 대상 웹사이트의 도메인 또는 인증서와 무관한 임의의 이름을 입력합니다.
Allow Insecure 일반적인 사용에서는 꺼 두고 서버 인증서 검증을 유지합니다. 연결에 실패할 때마다 켜서 인증서 문제를 가립니다.

Trojan 비밀번호는 다른 프로토콜의 UUID나 구독 링크에 포함된 token과 다릅니다. 링크로 가져오는 경우 앱이 전체 링크를 해석하도록 하세요. 직접 입력할 때는 해석된 원래 비밀번호를 사용하고, 링크의 퍼센트 인코딩 문자열을 비밀번호로 그대로 입력하지 마세요. 확실하지 않다면 서비스 제공업체에 항목을 확인하고 임의로 추측하지 마세요.

서버 추가부터 테스트까지: 한 번에 하나씩 변경

처음 테스트할 때는 모든 연결 정보가 확인된 설정 하나를 사용하는 것이 좋습니다. 저장하기 전에 항목을 하나씩 확인하고, 저장한 뒤에는 트래픽이 실제로 선택한 서버를 통과하는지 점검하세요. Home에서 연결 스위치가 켜져 있다는 사실만으로 특정 웹사이트 요청이 Trojan 서버를 통과했다고 단정할 수는 없습니다.

  1. 프로토콜 선택

    Home → 오른쪽 위 “+” → Add Server → Type → Trojan 순으로 선택하세요. 서버 이름만 보고 프로토콜을 판단하지 말고 설정 정보를 확인하세요.

  2. 인증 정보 입력

    양식으로 돌아가 Address, Port, Password를 입력하세요. 주소에는 프로토콜 접두사를 붙이지 말고, 포트는 별도로 입력하며 비밀번호 앞뒤의 공백에 주의하세요.

  3. TLS 확인

    TLS 관련 설정을 확인하고 안내받은 SNI / Server Name을 입력한 뒤 Allow Insecure는 꺼 두세요. 추가 전송 매개변수를 안내받지 않았다면 임의로 추가하지 마세요.

  4. 저장 후 서버 선택

    저장한 뒤 Home으로 돌아가 방금 추가한 서버를 선택하세요. 이미 연결되어 있었다면 설정을 변경한 후 다시 연결하세요. 그래야 새 설정을 기존 연결로 잘못 판단하지 않습니다.

  5. 규칙 변수 분리

    Home → Global Routing의 현재 설정을 기록한 다음, 잠시 Proxy로 전환하고 동일한 대상을 새로 요청하세요. 테스트가 끝나면 기존 라우팅 설정으로 복원합니다.

SNI, 인증서, Allow Insecure의 역할

Address와 SNI가 반드시 같을 필요는 없습니다. 예를 들어 Address에 서버 IP를 입력하고 SNI에는 인증서에 포함된 도메인을 입력할 수 있습니다. 단, 서버가 해당 이름으로 올바른 인증서를 제공하고 클라이언트가 이에 맞는 인증을 완료할 수 있어야 합니다. 반대로 어떤 도메인에서 웹페이지가 열린다는 이유만으로 그 도메인을 SNI에 입력해도 Trojan 연결이 성립하는 것은 아닙니다.

인증서 검증에는 일반적으로 신뢰할 수 있는 인증서 발급 체인, 유효 기간, 이름 일치 여부가 포함됩니다. 기기 날짜가 크게 틀려도 검증에 실패할 수 있습니다. SNI는 만료된 인증서를 자동으로 고치지 않으며 네트워크 연결 문제를 해결해 주지도 않습니다. SNI를 임의로 바꾸면 서버가 다른 인증서를 제공하거나 핸드셰이크를 거부할 수도 있습니다.

Allow Insecure 끔

권장

서버 인증서 검증을 유지합니다. 오류가 발생하면 이름, 기기 시간, 인증서 상태를 확인하고 서비스 제공업체에 인증서를 수정하거나 올바른 설정을 안내해 달라고 요청하세요.

권장 상황: 일상적인 연결 및 정식으로 저장할 설정

Allow Insecure 켬

인증서 검증을 완화하는 것이지 인증서를 수정하는 것은 아닙니다. TLS로 통신하더라도 상대 서버의 신원을 확인할 수 없으므로 장기적인 해결책으로 사용하지 마세요.

사용 상황: 위험을 이해한 상태에서 통제된 환경에서 잠시 인증서 검증 문제를 진단할 때

요약: 검증 가능한 설정을 유지하세요

Allow Insecure를 켜야만 연결된다면 인증서 관련 오류를 기록해 서비스 제공업체에 확인하세요. 이 상태를 설정 완료로 간주하지 마세요.

ALPN, 전송 방식 및 기타 고급 옵션도 서버 설정과 일치해야 합니다. 온라인에서 찾은 다른 설정의 h2, http/1.1 또는 WebSocket 매개변수를 그대로 가져오지 마세요. Trojan 인증, TLS, 전송 계층은 서로 다른 역할을 하므로 옵션을 추가한다고 호환성이 높아지는 것은 아닙니다.

자주 발생하는 문제: 증상별 다음 단계

아래 내용은 진단 방향이며 특정 오류가 특정 원인과 항상 일치하는 것은 아닙니다. “연결이 안 돼요”라고만 설명하기보다 전체 오류 문구와 테스트 조건을 기록하는 편이 유용합니다. 서비스 제공업체에 문의할 때는 Wi-Fi인지 셀룰러 네트워크인지, 어느 단계에서 실패했는지 알려 주세요. 비밀번호와 전체 구독 링크는 공개하지 마세요.

비밀번호를 그대로 입력했는데도 연결 시간이 초과되는 이유는 무엇인가요?

먼저 Home으로 돌아가 해당 서버를 편집하고 Address와 Port를 확인한 다음, Wi-Fi와 셀룰러 네트워크에서 같은 요청을 각각 반복하세요. 연결 시간 초과는 인증 전에 발생할 수 있습니다. 로컬 네트워크를 바꿨을 때 결과가 다르면 Password만 수정하지 말고 네트워크 연결 가능성을 점검하세요.

인증서 오류가 발생하면 SNI에 어떤 도메인을 입력해야 하나요?

서비스 제공업체가 안내한 TLS 서버 이름을 입력하세요. 접속 중인 웹사이트의 도메인이 아닙니다. 기기 날짜와 시간을 확인한 다음 이름의 철자를 점검하세요. 이름이 맞는데도 인증서 검증에 실패하면 서비스 제공업체에 인증서 유효 기간과 인증서 체인을 확인해 달라고 요청하세요.

지연 시간은 표시되는데 웹페이지가 열리지 않는 이유는 무엇인가요?

지연 시간 테스트 결과가 실제 서비스 요청 전체를 보장하지는 않습니다. Home에서 해당 서버를 선택했는지 확인한 뒤 Global Routing을 잠시 Proxy로 설정하고 새 요청을 보내세요. 계속 실패한다면 지연 시간만으로 설정이 올바르다고 판단하지 말고 TLS, 인증, 대상 서버 연결을 확인하세요.

Proxy에서는 접속되는데 Config로 바꾸면 실패할 때는 어떻게 하나요?

Config에서 현재 선택된 구성과 관련 규칙을 확인하고 요청이 예상한 정책에 배정되는지 살펴보세요. DOMAIN-SUFFIX, IP-CIDR, GEOIP, FINAL의 일치 조건과 순서를 확인하세요. DNS 문제도 점검하고 Trojan 비밀번호 오류라고 성급히 판단하지 마세요.

구독을 업데이트한 뒤 직접 수정한 SNI가 다시 바뀌었나요?

업데이트 후 서버 항목이 구독 내용으로 다시 생성되었는지 확인하세요. 비교할 수 있도록 수동 설정 하나를 유지하고, 구독으로 전달된 SNI와 포트를 서비스 제공업체에 확인하세요. 구독 링크는 서비스 제공업체에서 받으세요. 구독 항목을 수정하기 전에 기존 값을 기록해 업데이트와 수동 변경이 서로 덮어쓰지 않도록 하세요.

설정을 저장하기 전 최종 확인 목록

테스트를 마친 뒤에는 “연결 매개변수”와 “라우팅 설정”을 각각 확인해야 합니다. Global Routing의 Proxy, Direct, Config, Scene은 트래픽을 처리하는 방식이 서로 다릅니다. 이번에 Proxy를 잠시 사용한 것은 규칙 변수를 줄이기 위한 것이며, 일상적으로 해당 모드를 유지하라는 뜻은 아닙니다. 기존 설정으로 복원한 뒤 같은 요청을 다시 보내 결과가 예상대로인지 확인하세요.

Shadowrocket은 Apple 플랫폼용 폐쇄형 상용 앱으로, 주로 iPhone과 iPad에서 사용합니다. 유일한 다운로드 경로는 App Store이며 시스템 요구 사항과 호환성은 App Store 페이지의 안내를 기준으로 확인하세요. 앱을 한 번 구매했다고 연결 서비스 이용권이 포함되는 것은 아닙니다. 이 글은 사용자가 이미 서비스 제공업체와 설정 정보를 보유한 경우를 전제로 하며, 노드나 구독을 제공하거나 판매하거나 추천하지 않습니다.

App Store 정품 확인