튜토리얼의 설치 한 줄 명령을 붙여 넣고 Enter를 누르면 curl: (77) 가 표시됩니다. 메시지에 인증서 확인 위치가 나오므로 VPN 제공업체의 인증서가 깨졌다고 단정하고 확인을 건너뛰는 플래그를 찾고 싶어집니다. 그 해석은 틀렸고, 그에 따라 행동하면 로컬 파일 문제가 보안 결정으로 바뀝니다. 처음부터 다시 짚어 봅시다.

1단계: 이 숫자가 무엇을 뜻하는지 읽기

오류 77은 로컬 CA 입력에 관한 것입니다. curl이 신뢰하라고 지시받은 인증서 자료를 읽거나 불러오지 못했습니다. 오류 60은 상대방에 관한 것으로, 서버 체인이 검증되지 않을 때 나옵니다. 튜토리얼에서는 나란히 등장하지만 의미는 정반대입니다.

출력이 77이라면 서버는 애초에 문제가 아니었습니다. 클라이언트가 검사에 쓰려던 파일을 열지 못한 것이고, 이는 사용자의 컴퓨터에서 경로, 권한 또는 패키징 문제입니다.

2단계: 복사한 명령 읽기

복사한 명령은 문자를 숨깁니다. 소문자 -l 는 --list-only 이며 프로토콜 목록 표시에 쓰입니다. 대문자 -L 는 --location 이며 HTTP 리디렉션을 따라갑니다. 둘은 다른 표기가 아니며, 하나를 쓰면서 다른 하나를 설명하는 튜토리얼은 의도한 적 없는 리디렉션 경로로 사람들을 보냅니다.

리디렉션을 따라가는 것은 신뢰 저장소 경로를 고치지 않으며, 최종 호스트가 의도한 발행자인지 증명하지도 않습니다. 명령이 포럼 게시물에서 왔다면 붙여 넣은 내용을 믿지 말고 프로젝트 자체 지침에서 다시 입력하세요.

3단계: 그 빌드가 어떤 CA 입력을 쓰는지 확인하기

바이너리를 식별하는 것부터 시작하세요. 답은 어떻게 컴파일되었는지에 달려 있습니다:

curl --version

버전과 TLS 백엔드를 기록하세요. 네이티브 신뢰 저장소를 쓰는 빌드는 TLS 라이브러리를 통해 시스템 저장소를 읽고, 번들을 가리키는 빌드는 파일을 읽습니다. 명시적인 --cacert, CURL_CA_BUNDLE 설정 또는 shell 래퍼가 둘 중 어느 것이든 덮어쓸 수 있으므로, 패키지 설치가 실제로 실패하는 파일을 건드리지 않을 수 있습니다.

파일 기반 저장소라면 세 가지를 차례로 확인하세요. 경로가 있는지, 명령을 호출하는 계정이 읽을 수 있는지, 기대하는 CA 자료가 들어 있는지. 권한이 잘못된 번들은 없는 번들과 똑같이 실패하며, 둘 다 서버에 관한 어떤 네트워크 대화보다 먼저 실패합니다.

4단계: 검증이 아니라 입력을 고치기

지원되는 신뢰 구성을 그것을 소유한 쪽을 통해 복원하세요. 배포판 패키지, 구성 관리, 또는 문서화된 환경 변수입니다. 목표는 그 바이너리에 대해 읽을 수 있고 올바른 CA 입력입니다.

URL을 HTTP로 바꾸지 말고, --insecure 를 추가하지 말고, 설명 없는 다운로드에서 복사한 인증서를 믿지 마세요. 그 변경은 각각 curl이 읽지 못한 것을 고치는 대신 무엇을 받아들일지를 바꾸며, 그 변경은 대개 사건보다 오래 남습니다.

숫자에 대한 참고 자료는 curl 오류 목록 이며, 한 번 제대로 읽기에 충분히 짧습니다.

5단계: 내려받고, 살펴본 뒤 실행하기

설치 프로그램을 같은 명령에서 shell로 파이프하지 말고 파일로 받으세요. 그 한 가지 변경이 검사할 수 있는 전송과 사용자의 권한으로 실행되는 코드를 분리합니다.

curl -fL -o vpn-installer.sh https://example.invalid/install.sh
file vpn-installer.sh
head -n 40 vpn-installer.sh

응답이 기대한 스크립트인지, HTML 오류 페이지, 리디렉션 안내, 빈 파일이 아닌지 확인하세요. 발행자가 체크섬이나 서명을 제공한다면 같은 포럼 스레드에 적힌 값이 아니라 문서화된 릴리스 절차를 통해 검증하세요.

HTTPS가 한 일과 하지 않은 일을 기억하세요. 연결한 호스트까지의 전송을 인증했을 뿐, 스크립트 내용을 검토하지 않았고 발행자를 믿을 수 있는지 알려주지도 않습니다.

6단계: 설치 단계를 분리해 두기

파일 내려받기, 클라이언트 설치, 터널 구성, 경로 검증은 각기 다른 실패 방식을 가진 네 가지 작업입니다. 하나씩 하면 절차 후반의 오류는 네 후보가 아니라 한 가지 분명한 원인을 갖게 됩니다.

설치가 성공하고 터널이 올라오면 티켓을 닫기 전에 경로와 실제 목적지 하나를 검증하세요. curl 오류는 단순한 curl -I https://example.invalid 가 다시 동작할 때 고쳐진 것이지, 설치 프로그램이 불평을 멈출 때 고쳐진 것이 아닙니다.

관련 글