API & SDK

링크 복사가맹점 연동 네트워크 요구사항

토스페이먼츠 API를 연동하는 가맹점 시스템이 갖춰야 할 네트워크/보안 구성을 정리했습니다.

토스페이먼츠는 여러 진입점으로 분산된 환경에서 서비스를 운영합니다. 같은 도메인이라도 조회 시점, 위치, 부하분산 비율에 따라 DNS 응답에 담기는 IP의 개수와 순서가 달라집니다. 아래 요구사항은 그 환경에서 결제가 실패하지 않으려면 지켜야 할 조건입니다.

표준 라이브러리와 기본 설정을 쓰고 있다면 대부분의 항목은 이미 충족돼 있습니다. 각 표의 비고 열에 조치가 필요한 경우와 그렇지 않은 경우를 적어 두었으니 그 부분만 확인해주세요.

이 조건은 API 연동만으로 충족되지 않습니다. 방화벽 허용 목록, DNS 캐시 설정, TLS 라이브러리와 인증서 신뢰 저장소는 대부분 가맹점의 인프라팀과 보안팀이 관리하는 영역입니다. 개발팀이 API를 연동해 응답을 정상으로 받았더라도 방화벽에 IP가 일부만 등록되어 있거나 DNS 캐시가 고정되어 있으면 평상시에는 문제없이 보이다가 진입점 전환 시점에 결제가 실패합니다. 실패가 특정 시점에만, 그것도 일부 요청에서만 나타나기 때문에 연동 테스트로는 걸러지지 않습니다. 연동 초기에 개발팀, 인프라팀, 보안팀이 함께 확인해주세요.

링크 복사요청 방향

이 문서는 가맹점과 토스페이먼츠 사이의 양방향 호출을 모두 다룹니다. 방향은 항상 아래와 같이 표기합니다.

표기의미예
가맹점 → 토스페이먼츠가맹점 서버가 토스페이먼츠 API를 호출합니다.결제 승인 요청
토스페이먼츠 → 가맹점토스페이먼츠가 가맹점 서버를 호출합니다.웹훅, 콜백, 노티

"인바운드"와 "아웃바운드"는 주체에 따라 뜻이 반대가 되므로 이 문서에서는 쓰지 않습니다.

링크 복사적용 대상 도메인

이 문서는 토스페이먼츠가 제공하는 대부분의 도메인에 적용됩니다.

링크 복사DNS

가맹점 → 토스페이먼츠 방향에 적용합니다.

번호내용비고
D1토스페이먼츠 API를 도메인으로 호출합니다. IP를 직접 지정해 호출하지 않습니다.설정 파일에 api.tosspayments.com을 적습니다. IP 주소를 적지 않습니다.
D2응답 TTL보다 길게 DNS 응답을 캐시하지 않습니다.런타임/OS/사내 resolver에 따라 다릅니다. 특히 Java 기본 설정은 TTL을 따르지 않으니 확인해주세요.
D3HTTP 커넥션을 오래 재사용하지 않습니다. 최대 수명을 5분 이내로 두고, keep-alive idle timeout을 DNS 응답 TTL 이하로 유지합니다.HTTP 클라이언트의 최대 수명 설정이 기본값으로 충족되지 않는 경우가 있으니 확인해주세요.
D4DNS 응답에 IP가 여러 개면 첫 IP 연결이 실패했을 때 다음 IP로 재시도합니다. 방화벽이 패킷을 버리면 IP마다 연결 타임아웃을 끝까지 기다리게 되므로 타임아웃을 짧게 설정해주세요.런타임에 따라 자동 재시도 지원 여부가 다릅니다. Java 기본 클라이언트와 Node.js 구버전은 확인해주세요.
D5DNS 조회가 실패했을 때에 한해 마지막으로 받은 정상 응답을 일정 시간 재사용합니다. 평상시에는 D2, D6과 어긋나지 않도록 TTL을 지켜주세요.자체 resolver를 운영하는 경우에만 해당합니다. 기본값으로 자동 동작하지 않을 수 있으니 확인해주세요.
D6응답 TTL을 변조하지 않는 resolver를 사용합니다. 자체 resolver에서 응답 TTL을 임의로 늘리지 않습니다.사내 표준 resolver가 TTL을 유지하면 충족됩니다. 자체 resolver를 운영하는 경우에만 해당합니다.

토스페이먼츠는 응답 IP의 개수, 순서, 고정성을 보장하지 않습니다. 다만 api.tosspayments.com처럼 허용 목록이 공개된 도메인에서는, 응답에 담기는 IP가 항상 그 목록에 있는 IP입니다.

안내된 IP가 [IP-1, IP-2, IP-3, IP-4]인 도메인에서 다음은 모두 정상 동작입니다.

상황DNS 응답가맹점 시스템의 동작
평상시IP-1, IP-2, IP-3, IP-4응답된 IP 중 하나로 통신합니다.
부하분산 / 점검IP-1, IP-3응답된 IP만 사용합니다. IP-2, IP-4로는 시도하지 않습니다.
전역 DNS 장애응답 없음마지막 정상 응답을 재사용합니다 (D5).

링크 복사TLS/인증서

가맹점 → 토스페이먼츠 방향에 적용합니다.

번호내용비고
T1대상 도메인과 진입점 IP의 모든 조합에서 TLS handshake와 체인/SAN 검증이 통과합니다.안내된 IP 각각에 대해 자가진단의 2), 3)을 실행해 모두 통과하는지 확인해주세요. T2부터 T8까지 지키면 자연히 충족됩니다.
T2TLS 1.2 이상으로 연결합니다. 1.2 미만으로는 연결하지 않습니다.최근 출시된 런타임은 기본으로 충족됩니다. TLS 1.0/1.1까지만 지원하는 라이브러리는 교체해주세요.
T3토스페이먼츠가 허용하는 cipher suite를 사용합니다.방화벽 및 보안 프로토콜의 목록을 따릅니다. 표준 TLS 라이브러리의 기본 설정으로 충족됩니다.
T4모든 요청에 접속 도메인을 SNI로 보냅니다. SNI 없이 요청하지 않습니다.표준 HTTPS 클라이언트는 SNI를 자동으로 보냅니다. 다만 IP 주소로 접속하면 SNI가 빠지므로(RFC 6066 §3) D1을 꼭 지켜주세요. 애플리케이션이 SNI를 실제로 보내는지는 패킷 캡처나 TLS 디버그 로그로 확인할 수 있습니다.
T5인증서 hostname 검증을 표준 TLS 스택에 맡깁니다. 자체 verifier를 만들지 않습니다.인증서 검증을 직접 구현했거나 우회한 코드가 있는 경우에만 확인해주세요.
T6와일드카드 인증서(*.tosspayments.com)를 표준 규칙대로 검증합니다.표준 TLS 스택이 처리합니다. T5를 지키면 함께 충족됩니다.
T7루트 인증서를 신뢰 저장소에 둡니다. 중간 인증서는 서버가 handshake에서 함께 보내므로 신뢰 저장소에 두지 않습니다.공인 CA 루트는 대부분의 신뢰 저장소에 이미 들어 있습니다. 토스페이먼츠가 사용하는 루트는 Sectigo의 USERTrust RSA Certification Authority, Amazon이 권장하는 Amazon Trust Services 루트 5종입니다.
T8certificate pinning을 쓰지 않습니다. 중간 인증서를 신뢰 저장소에 두는 것도 사실상 pinning이므로 피해주세요.중간 CA는 CA 사업자가 임의로 바꿀 수 있으므로, 서버/중간 인증서의 지문을 코드나 보안 장비에 고정하면 갱신 시 실패합니다.

T6의 근거는 RFC 9525 「Service Identity in TLS」 §6.3입니다. 와일드카드는 가장 왼쪽 레이블 전체로만 쓸 수 있어서 *.tosspayments.com은 유효하고 w*.tosspayments.com이나 *.*.tosspayments.com은 무효입니다.

에러가 발생하면 증상별로 확인할 지점을 먼저 좁혀주세요.

증상확인할 것
PKIX path building failed (Java), unable to get local issuer certificate (OpenSSL/curl/Node), x509: certificate signed by unknown authority (Go)신뢰 저장소에 루트 인증서가 들어 있는지 확인해주세요 (T7).
HTTPS hostname wrong: should be <host> (JDK), No subject alternative DNS name matching ... found (Java), hostname ... doesn't match (Apache HttpClient), altnames 불일치 (Node)클라이언트 라이브러리 버전과 자체 hostname verifier 사용 여부를 확인해주세요 (T5, T6).
SNI 없는 요청에서 인증서가 맞지 않음ClientHello에 SNI extension이 실려 나가는지 패킷 캡처로 확인해주세요 (T4). IP로 접속하지 않았는지도 함께 확인해주세요 (D1).
TLS handshake 자체가 실패TLS 버전과 cipher suite를 확인해주세요 (T2, T3).
인증서 교체 이후부터만 실패클라이언트 코드 또는 보안 장비의 pinning, 그리고 중간 인증서를 신뢰 저장소에 고정해 두지 않았는지 확인해주세요 (T7, T8).
간헐적으로 실패하고 재시도하면 성공방화벽에 등록된 IP가 안내된 목록과 일치하는지 확인해주세요 (F1, F3).

링크 복사방화벽/IP 허용

양방향 모두에 적용합니다.

번호내용비고
F1가맹점 → 토스페이먼츠 방향: 대상 도메인에 안내된 IP 전체를 방화벽 또는 Security Group에 등록합니다.이 문서에서 가맹점 조치가 가장 많이 필요한 항목입니다. 방화벽으로 가맹점 → 토스페이먼츠 방향을 제한하는 경우 반드시 확인해주세요. api.tosspayments.com의 IP 목록은 방화벽 및 보안 프로토콜에서 확인해주세요.
F2토스페이먼츠 → 가맹점 방향: 토스페이먼츠가 안내한 발신 IP 전체를 허용합니다.웹훅이나 노티를 수신하는 경우에만 해당합니다. IP 허용은 네트워크 접근 통제일 뿐 요청의 진위를 보장하지 않습니다. payout.changed, seller.changed 웹훅은 tosspayments-webhook-signature 서명을 검증해주세요. 가상계좌 입금(DEPOSIT_CALLBACK) 웹훅은 본문의 secret이 결제 승인 응답의 secret과 같은지 확인해주세요. 그 밖의 웹훅은 처리하기 전에 결제 조회 API로 교차 확인해주세요.
F3일부만 등록하지 않습니다.F1, F2를 마치면 함께 확인됩니다.
F4장기간 트래픽이 없는 IP를 임의로 지우지 않습니다. 신규 IP 공지는 기존 IP를 대체하지 않습니다. 삭제가 공지된 IP는 공지된 시점에 제거합니다.방화벽 정기 점검에서 "안 쓰는 IP"로 분류해 삭제하지 않도록 주의해주세요. 반대로 삭제가 공지된 IP를 남겨 두면, 그 IP가 다른 곳에 재할당됐을 때 위조 요청이 허용 목록을 통과할 수 있습니다.

F3이 위험한 이유는 실패가 확률로만 드러나기 때문입니다. DNS 응답 비율은 균등하지 않아서 빠진 IP의 가중치에 따라 실패율이 0%에 가깝거나 반대로 대부분이 될 수 있습니다. 특히 DNS가 IP를 하나만 응답하면 D4로 다음 IP를 시도할 여지도 없어, 방화벽에 빠진 IP가 응답되는 동안 요청이 전부 실패합니다. 이런 간헐적인 실패는 연동 테스트에서는 잘 드러나지 않고 실제 트래픽에서야 드러납니다.

특정 IP에 장기간 트래픽이 없더라도 그 IP가 폐기된 것은 아닙니다. 부하분산 비율에 따라 언제든 다시 사용됩니다(F4).

IP 목록의 공식 기준은 방화벽 및 보안 프로토콜 페이지 하나입니다. 신규 IP를 추가할 때는 공식 페이지가 먼저 갱신되고, 그 뒤에 가맹점 이메일로 사전 안내합니다. 이메일/전화/메신저로 전달된 "신규 IP 추가 안내"에 적힌 IP가 이 페이지와 다르면 등록하지 마세요. 토스페이먼츠를 사칭한 피싱일 수 있습니다. 특히 F2(토스페이먼츠 → 가맹점 방향)에 공격자 IP가 등록되면 위조 웹훅을 받을 수 있습니다.

링크 복사구성 권장 사항

아래 왼쪽 구성은 여러 진입점으로 분산된 환경에서 결제 실패를 일으킵니다. 이런 구성 때문에 발생한 결제 실패는 토스페이먼츠가 정상 동작을 보장하기 어렵습니다.

권장하지 않는 구성문제권장하는 구성
DNS 응답 IP를 추출해 허용 목록과 비교DNS 응답이 바뀌므로 시점에 따라 비교 결과가 달라집니다.안내된 IP 목록 전체를 그대로 등록해 두고, 통신은 매 요청 시 DNS가 응답한 IP로 합니다.
애플리케이션 서버와 방화벽이 각각 DNS를 조회한 뒤 IP 일치 여부로 차단을 판단두 시스템의 DNS 캐시 상태가 다르면 같은 요청이 차단됩니다.안내된 IP 전체를 허용 목록에 등록(F1)하는 것을 기본으로 합니다. 도메인 단위 제어가 추가로 필요하면 SNI를 IP 허용과 함께 조건으로 사용합니다. SNI만으로 판별하지 않습니다.
안내된 IP를 /etc/hosts 등에 정적 등록해 고정 사용허용 목록이 바뀌어도 따라가지 못해, 신규 IP 투입이나 기존 IP 교체 시점에 실패합니다.DNS 조회 결과를 그대로 사용합니다.
응답 IP의 개수와 구성을 고정값으로 가정한 코드 또는 설정진입점 전환 또는 신규 IP 투입 시점에 실패합니다.응답 IP 개수를 가정하지 않고 순회하며 재시도합니다 (D4).
일부 IP만 등록하고 나머지를 차단등록되지 않은 IP로 응답된 요청이 전부 실패합니다.안내된 IP를 전부 등록합니다 (F1, F2).
자체 hostname verifier 구현와일드카드 인증서 검증에 실패할 수 있습니다.표준 TLS 스택의 검증을 그대로 사용합니다 (T5).
certificate pinning (중간 인증서를 신뢰 저장소에 두는 방식 포함)인증서 교체, 진입점 전환, 중간 CA 변경 시 전면 실패합니다.루트 인증서를 신뢰 저장소에 두고 체인 검증만 합니다 (T7, T8).

방화벽 제품이 DNS 기반 FQDN 객체만 지원해서 위 두 번째 행의 구성을 피할 수 없다면 애플리케이션 서버와 방화벽이 같은 resolver와 같은 TTL 정책을 쓰도록 맞춰주세요. 그래도 진입점 전환 중에는 두 시스템의 캐시가 어긋날 수 있으므로 안내된 IP 전체를 함께 등록해 두시는 편이 안전합니다(F1).

SNI는 클라이언트가 임의로 지정하는 값입니다. 방화벽이 SNI만 보고 외부로 나가는 연결을 허용하면, 내부의 악성 프로세스가 SNI를 api.tosspayments.com으로 설정한 채 다른 서버로 연결해 데이터를 반출할 수 있습니다(SNI spoofing). 그렇다고 HTTP Host 헤더를 기준으로 삼을 수도 없습니다. Host 헤더는 TLS로 암호화되어 있어 방화벽이 복호화하지 않고는 볼 수 없기 때문입니다. 그래서 IP 허용을 기본으로 하고, SNI는 보조 조건으로만 사용해주세요.

링크 복사변경 공지 정책

변경 종류사전 공지
IP 허용 목록 추가 / 삭제 (양방향)공지합니다. 삭제는 가맹점이 IP를 제거할 시점을 함께 안내합니다.
루트 또는 CA 사업자 변경공지합니다.
도메인 전환공지합니다.
DNS 응답의 부하분산 비율 또는 응답 IP 순서 변경공지하지 않습니다. 운영상 수시로 변동합니다.
중간 CA 또는 서버 인증서 교체공지하지 않습니다. 자동 갱신될 수 있습니다. T7, T8을 지키면 영향이 없습니다.

링크 복사자가진단

아래 세 가지를 확인해주세요. {IP} 자리에는 api.tosspayments.com에 안내된 진입점 IP를 하나씩 넣어주세요.

자가진단은 반드시 결제를 호출하는 운영 서버에서 실행해주세요. curl, openssl이 쓰는 TLS 라이브러리와 CA 번들은 런타임의 TLS 설정(예: Java cacerts, Node 번들 CA, OS 신뢰 저장소)과 다를 수 있습니다. 다른 환경에서 돌리면 결과가 통과해도 운영 환경에서는 PKIX 실패가 날 수 있습니다. 특히 F1(가맹점 → 토스페이먼츠 방향의 방화벽) 판정은 실행 위치가 운영 서버가 아니면 의미가 없습니다.

토스페이먼츠 진입점은 여러 개로 분산돼 있고, 진입점에 따라 발급 CA가 달라 인증서 issuer와 subject의 DN 표기가 서로 다릅니다. 어느 진입점으로 들어가도 체인 검증과 SAN 매치는 동일하게 통과하도록 *.tosspayments.com 와일드카드 인증서로 서비스됩니다. 판정은 체인 검증(공인 루트까지 통과)과 SAN 매치로만 하고, issuer는 "사내 CA처럼 공인이 아닌 이름이 보이면 TLS 검사 장비(SSL inspection)를 의심한다" 수준의 단서로만 사용해주세요. 중간 CA 이름(CN)이나 발급 조직(O=)을 "정상 목록"으로 고정하지 않도록 해주세요. CA 사업자는 중간 CA를 수시로 바꾸며, 조직 이름도 사설 CA가 그대로 흉내낼 수 있어 신뢰 근거가 되지 않습니다.

링크 복사1) DNS 응답이 조회마다 달라질 수 있음을 확인합니다

응답 IP의 개수와 순서는 전체 허용 IP 목록을 뜻하지 않습니다. 먼저 운영 서버가 실제로 쓰는 resolver로 조회하고, 외부 resolver를 쓸 수 있는 환경이라면 다른 resolver로도 반복 조회해 응답을 비교해주세요.

결과 예시

가맹점에서 확인할 것

  • status: NOERROR: DNS 응답이 정상으로 돌아왔다는 뜻입니다.
  • ANSWER SECTION의 TTL(예: 60): 이 값을 넘겨 캐시하지 않아야 합니다(D2). 무한 캐시하는 설정이 있는지 확인해주세요. TTL은 "최대"이므로 TTL보다 짧게 캐시하거나 아예 캐시하지 않는 것은 문제가 아닙니다(RFC 2181 §8). 공용 resolver에 물으면 남은 TTL이 보이므로 숫자 자체는 조회 시점에 따라 달라집니다.
  • 응답에 담긴 IP가 전체 허용 IP 목록이 아닙니다. 조회 시점이나 resolver에 따라 다른 IP가 돌아올 수 있습니다. 방화벽에는 응답된 IP만이 아니라 방화벽 및 보안 프로토콜에 안내된 IP 전체가 등록돼 있어야 합니다(F1, F3).

링크 복사2) 특정 진입점 IP에 SNI를 명시해 인증서를 확인합니다

--resolve 옵션으로 특정 IP를 강제 지정하고 도메인의 인증서와 TLS handshake가 정상인지 확인해주세요. IP 목록은 api.tosspayments.com용이므로 이 명령도 api.tosspayments.com을 호출해야 트래픽이 실제 진입점에 닿습니다. 또한 HTTPS_PROXY가 설정된 서버에서 curl은 프록시에 CONNECT를 보내고 이름 해석도 프록시가 하므로 --resolve가 무시됩니다. 그래서 아래 명령은 --proxy ""로 프록시를 거치지 않습니다. 운영 트래픽이 프록시를 거쳐 나가는 환경이라면 이 결과는 실제 경로를 반영하지 않고, 프록시를 우회하는 연결이 사내 보안 정책에 걸릴 수 있습니다. 이때는 보안팀과 협의해 프록시 장비에서 같은 항목을 확인해주세요.

결과 예시

진입점에 따라 발급 CA와 subject/issuer의 표기는 달라질 수 있습니다.

가맹점에서 확인할 것

  • Connected to ... (IP) port 443: TCP 연결에 성공했습니다. 가맹점 방화벽이 이 IP로 나가는 연결을 허용했다는 뜻입니다(F1).
  • subjectAltName: host "api.tosspayments.com" matched cert's "*.tosspayments.com": SAN 매치에 성공했습니다. 모든 진입점 IP에서 이 라인이 나와야 합니다(T5, T6).
  • SSL certificate verify ok.: 클라이언트 신뢰 저장소에서 공인 루트까지 체인 검증을 통과했습니다(T7). 모든 IP에서 이 라인이 나와야 합니다.

응답 코드는 무시해도 됩니다. 이 진단은 TLS handshake와 인증서 검증만 확인하므로 뒤따르는 HTTP 응답(예: HTTP/2 404)과 server: 헤더는 판정 대상이 아닙니다.

실패 시 확인 지점

  • Failed to connect to api.tosspayments.com port 443 → 가맹점 방화벽에 이 IP가 등록되지 않았습니다(F1, F3).
  • SSL certificate problem: unable to get local issuer certificate → 신뢰 저장소에 루트 인증서가 없습니다(T7). Sectigo, Amazon 양쪽 루트가 모두 필요하고, 중간 인증서를 신뢰 저장소에 두는 방식은 피해주세요(T8).
  • SSL: no alternative certificate subject name matches → --resolve에 넣은 IP가 엉뚱한 서버로 가고 있거나, 중간에 인증서를 바꿔치는 장비가 있는 경우입니다. curl은 URL이 호스트명이면 항상 SNI를 보내므로 SNI 미전송이 원인이 아닙니다.
  • issuer에 공인 CA가 아닌 이름(사내 CA 등)이 보이면 가맹점 네트워크의 SSL inspection 장비가 TLS를 가로채고 있을 가능성이 큽니다. 가맹점 보안팀에 먼저 문의해주세요. 결제 API 요청에는 시크릿 키가 담긴 Authorization 헤더와 결제 정보가 들어 있으므로, 토스페이먼츠 API 트래픽은 SSL inspection 대상에서 제외하는 것을 권장합니다.

링크 복사3) 인증서 체인과 SAN을 확인합니다

openssl s_client로 체인 검증과 hostname 검증을 함께 통과시키려면 아래 옵션을 모두 넣어주세요. -verify_hostname 없이는 hostname/SAN이 검사되지 않고, -verify_return_error 없이는 검증에 실패해도 handshake가 이어지며 verify return:1과 Verification: OK가 그대로 찍힙니다. 기준 버전은 OpenSSL 3.x이며, macOS 기본은 LibreSSL이라 옵션과 출력이 다를 수 있습니다.

결과 예시 (인증서 본문은 생략)

진입점에 따라 서버가 보내는 체인의 장수와 최상위 루트가 다를 수 있습니다.

가맹점에서 확인할 것

  • Verification: OK 또는 Verify return code: 0 (ok): -verify_hostname과 -verify_return_error를 함께 넣었을 때 이 한 줄이 체인 검증과 hostname 검증을 모두 통과했다는 뜻입니다. 두 옵션을 넣지 않았다면 체인과 hostname 어느 쪽도 보장되지 않으므로 이 라인만 보고 통과로 판단하지 않도록 주의해주세요.
  • depth= 줄은 서버가 보낸 장수가 아니라 가맹점 신뢰 저장소를 기준으로 재구성한 경로입니다. 신뢰 저장소에 어떤 루트/중간 인증서가 있는지에 따라 depth 수가 달라지므로 "0~2 모두 나와야 한다"는 식의 기준으로 삼지 않도록 해주세요.
  • NotBefore / NotAfter: 인증서 유효 기간입니다. 만료일이 지나지 않았는지 확인해주세요.

링크 복사IP별 결과 비교

진입점에 따라 발급 CA가 다르므로 모든 IP 사이에서 issuer/subject가 같은지는 대조하지 않아도 됩니다. 대신 같은 IP에 대해 실행한 2)와 3)의 결과가 서로 일치하는지, 그리고 모든 IP에서 아래 공통 항목이 성공했는지를 각각 확인합니다.

확인 항목어떻게 확인
SAN 매치2)의 matched cert's "*.tosspayments.com" 라인
hostname 검증 통과3)의 -verify_hostname api.tosspayments.com -verify_return_error 옵션과 Verify return code: 0 (ok)
체인 검증 통과2)의 SSL certificate verify ok., 3)의 Verification: OK
유효 기간3)의 NotBefore / NotAfter

인증서 본문(PEM), serial number, 공개키 지문, subject의 세부 DN 표기, issuer의 중간 CA 이름, 체인의 최상위 루트는 진입점별로 달라도 정상입니다. 다만 위 공통 항목 중 하나라도 IP별로 실패하거나, 같은 IP의 2)와 3) 결과가 서로 어긋나거나, issuer에 사내 CA 등 공인 CA가 아닌 이름이 보인다면 아래 중 하나일 수 있습니다.

  • 가맹점 네트워크의 SSL inspection 프록시가 TLS를 가로채고 있는 경우: 가맹점 보안팀에 먼저 문의해주세요.
  • 방화벽 또는 TLS 설정이 안내된 요건(F1, T1)을 위반한 경우
  • (드물게) 중간자 공격인 경우: 토스페이먼츠에 문의해주세요.

링크 복사현재 도메인 특성 (참고)

항목상태
IPv4 (A 레코드)제공
IPv6 (AAAA 레코드)미제공
응답 TTL60초~300초 (도메인별 상이)
  • IPv6를 도입할 때는 사전에 공지합니다. 가맹점 방화벽에 신규 IPv6 주소가 없으면 그 시점부터 실패할 수 있으니, 공지 시점에 함께 등록해주세요.
  • DNSSEC을 도입할 때는 사전에 공지합니다.

링크 복사진입 흐름

토스페이먼츠는 같은 도메인을 여러 진입점으로 분산 운영합니다. 어느 진입점으로 들어가도 똑같이 통과하도록 DNS/TLS/방화벽 요건을 맞춰 두어야 결제가 실패하지 않습니다.

  • DNS 부하분산(GSLB): 같은 도메인이라도 조회 시점, 위치, 부하분산 비율에 따라 응답 IP의 개수와 순서가 달라집니다.
  • 다수 진입점 IP: 가맹점 방화벽에는 방화벽 및 보안 프로토콜에 안내된 IP 전체가 등록돼 있어야 합니다. 응답에 담긴 일부 IP만 등록하거나 "안 쓰는 IP"라고 삭제하면 부하분산 비율이 바뀌는 시점에 결제가 실패합니다.
  • 동일한 통과 조건: 어느 진입점 IP로 들어가든 동일한 TLS 정책과 인증서 규칙을 통과해야 합니다. 진입점별로 발급 CA는 다르지만 표준 신뢰 저장소로 모두 검증됩니다. SNI 미전송이나 자체 hostname verifier가 있으면 특정 진입점으로 응답이 몰리는 시점에 실패합니다.