카드 결재 오류 발생으로 인한 문의
안녕하세요 TO21 정현도입니다.
카드 결재 후 오류가 발생되서 문의드립니다.
처음에는 첨부한 이미지로 오류가 발생되서 질문지를 참고해서 JDK버전 문제로 인해서 URL이 변경되었다고해서 아래와 같이 변경하였습니다.
이전 : https://api.tosspayments.com/v1/settlements
변경 : https://api-old-and-unsafe.tosspayments.com/v1/settlements
이전 : https://api.tosspayments.com/v1/payments/confirm
변경 : https://api-old-and-unsafe.tosspayments.com/v1/payments/confirm
그 후에는 socketTimeoutexception 에러가 발생했습니다.
변경된 url로 접근을 못하는거 같은데, 혹시 무슨 문제때인 궁금해서 문의드립니다.
빠른 답변 부탁드립니다.

72 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
https://api-old-and-unsafe.tosspayments.com/v1/payments/confirm 이렇게 변경하신후 socketTimeoutexception 이 발생하신거라면
혹시 방화벽에서 차단된건 아닌지 확인부탁드립니다.
저희 서버에서 해당 URL이 방화벽이 막혀있을 수 있다는거죠??
네 맞습니다.
네 확인해보겠습니다.
URL이 변경되면서 IP도 변경되었을까요?
IP와 PORT정보를 알아야 방화벽 해제를 할 수 있을거 같아요.
URL 이 변경되었으므로 IP 도 바뀝니다.
103.182.250.253, 103.182.251.253
이렇게 열어주시고 port는 443 열어 주시면 됩니다.
네 감사합니다.
그리고 궁금한게 있는데요 jdk1.7을 사용하게 되면 앞으로도 이렇게 수정사항들이 발생 할 수 있나요?
이 수정사항에 대해서 미리 메일로 받아볼 수는 없나요?
보안관련 내용들은 계속 업데이트가 될거라 가능하면 jdk 도 버전을 올려주셔야 할겁니다. 해당 변경은 계속 메일로 안내 드렸을거에요.
예전분들의 메일이 기록되어있을거 같은데 제 메일을 추가적으로 추가 요청 할 수 있나요?
상점관리자 상에 기술 담당자로 등록된 이메일로 공지 드리고 있습니다.
상점관리자에 담당자를 변경해 주세요.
상점관리자상에 기술 담당자로 등록된 메일은 어떻게 확인 할 수 있을까요?
저희 상점관리자에 접속가능하신분이 접속해서 확인해 주시면 됩니다.
메뉴 위치를 말씀하시는 걸까요?
그럼 상점관리자는 계약하신분이 알고 계시겠네요?
네 계약 담당하신 분께 문의해 보심 될거 같아요.
MID가 어떻게 되시나요?
mid는 어떤건가요?
상점ID를 말하는데요..혹시 사업자명이나 사업자번호는 어떻게 되시나요?
계약하신 담당자는 유선으로 확인하고 있습니다.
네 유지보수담당분이시면..관리하시는 사이트 주소라도 알수 없을까요?
네 msds.kosha.or.kr 입니다.
저희가 보안취약 cipher suite 사용업체 (특히 jdk 1.7 이하업체) 에 대해 두달전부터 차단공지를 지속적으로 해왔었습니다. 공지를 받으신 업체에 포함된 것인지 궁금하여 문의드렸습니다
네 확인부탁드립니다.
예 산업안전보건연구원이시군요
넵
MID : komsdsmemx 이고, 차단대상이 맞습니다.
관련한 공지는 sh**@kosha.or.kr lhl3***@kosha.or.kr 이분들께 전달드렸습니다
일단..내용을 좀 정리해드릴께요
1) 위 사이트에서 이용하는 모든 API의 주소를 아래와 같이 수정해주십시요
이전: https://api.tosspayments.com
변경: https://api-old-and-unsafe.tosspayments.com
ex) https://api.tosspayments.com/v1/confirm 은 https://api-old-and-unsafe.tosspayments.com/v1/confirm 으로 변경
이렇게 변경하시면 일단 8.31까지는 쓰실수 있습니다.
만일 별도 방화벽 허용이 필요할경우, 아래 IP 두개를 열어주시면 됩니다.
api-old-and-unsafe.tosspayments.com
103.182.250.253, 103.182.251.253
2) 지금 문제가 되는곳은 대부분 jdk 1.7 버전에서 보안에 취약한 cipher suite를 이용하여 요청했기 때문에 차단되었습니다. 아래 링크를 참고하시어 웹서버의 cipher suite 를 보안이 강한것으로 업데이트 해주셔야 합니다. (8.31 전까지)
https://tosspublic.notion.site/JAVA-Cipher-1f2714bbfde780fa912dd4acaf2cdd28
3) cipher suite 변경후, 저희쪽으로 정상적용된것인지 한번 확인요청을 해주세요. 적용이 완료되면 다시 url을 원상복구 하면 완료됩니다.
이전: https://api-old-and-unsafe.tosspayments.com
변경: https://api.tosspayments.com
저희는 제우스 사용하는데 제우스도 톰켓처럼 똑같이 설정내용을 추가하면 되나요?
제우스면 webtob 를 쓰실거같습니다
위 링크에 있는 webtob설정을 참고하시면 됩니다
tomcat은 server.xml에서 설정하면 되는데 제우스는 파일이 따로 있을까요?
http.m만 설정하는거는 아닐거 같아서요
제우스는 webtob의 http.m만 설정 추가하면 되나보네요>
?
네 기본은 웹서버만 설정하면 되고, 동일환경을 쓰는 타사는 webtob 설정만 변경 / 재시작후 조치되었습니다.
톰캣을 안쓰시면, 톰캣쪽 설정은 무시하셔도 됩니다.
공통적으로 JVM에 아래 설정은 되어 있어야 합니다.
-Dhttps.protocols=TLSv1.2
-Djdk.tls.client.protocols=TLSv1.2
지금 쓰시는 jdk 가 Java/1.7.0_80 이신것 같은데요..이 버전이면
TLS_RSA_WITH_AES_128_GCM_SHA256 가 지원되기 때문에, 이것으로 요청이 될것 같습니다.
TLS_RSA_WITH_AES_128_GCM_SHA256 가 지원되기 때문에, 이것으로 요청이 될것 같습니다.
네 예전에 비슷한 문제가 있어서 JVM은 자바에서 System.setProperty("https.protocols", "TLSv1, TLSv1.1, TLSv1.2")로 변경을 했어서 jvm은 따로 변경 안해도 되지 않나요?
타 인증기관등의 가이드를 보면 jvm에도 설정을 하도록 되어 있어서 저희도 확답을 드리기는 어려울듯 합니다.
동일환경을 쓰는 타 공공기관은 저 두 부분
jvm 수정
-Dhttps.protocols=TLSv1.2
-Djdk.tls.client.protocols=TLSv1.2
webTob http.m 변경 두가지를 변경후 업데이트 적용이 완료되었습니다.
그렇다면 일단 http.m 만 수정해보시고 이후 추가적으로 jvm도 수정해보시는것은 어떨까 싶습니다.
17:12 분부로 api-old-and-unsafe.tosspayments.com 로 요청되어 정상승인되는 것 확인되었습니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
안녕하세요.
오래된 채팅으로 얘기해서 당황스러울수도 있지만, 과거이력이 있으면 얘기하기가 편할거 같아서 그렇습니다.
http.m을 수정하려고 하는데, 저희 시스템에는 was, web 서버가 구분되어 있다보니 두 곳에 파일이 있습니다. 이럴 경우 두 곳에 파일을 수정하면 될까요?
두군데 수정해야 할 거 같았지만, 그래도 확인해보는게 좋을거 같아서 문의드렸습니다. 많은 도움 감사합니다.
저희쪽과 connection을 맺는 장비쪽만 적용하시면 됩니다. 대부분은 web서버쪽 구성을 따라갑니다 (그래서 java의 경우webtoB 나 tomcat쪽 설정을 바꿔야함)
물론 가능하다면 Ayaan님 답변처럼 두군데 다 수정하시는 것을 권장드립니다. 버전관리의 문제도 있기 때문입니다.
안녕하세요. was는 jvm, http.m을 운영서버에 반영했는데, web은 http.m을 수정하고 컴파일 하는데 오류가 발생해서 web은 하지 못했습니다.
그래서 일단 was는 적용된 상태이기때문에 정상적으로 적용이 잘되었는지 확인 해주실 수 있을까요?
결제 주문번호를 전달주시면 확인해보겠습니다.
URL 적용하고 결재가 진행된 뒤에 확인 할 수 있나보네요?
URL 적용하기 전에 확인 할 수 있는지 알았어요.
url을 안바꾸더라도, 일단 주문건이 저희쪽으로 넘어오면
TLS 버전 , cipher suite 확인은 가능합니다.
url 변경과 상관없이, was 쪽 설정을 변경하셨다면 변경이후 발생한 주문건 주문번호를 회신주시면 됩니다.
cipher suite 변경 후 결재성공여부를 확인해보니 정상적으로 잘 작동하네요.
감사합니다.
많은 도움 감사합니다.
안녕하세요. 정상적으로 되었다고 생각했는데 보니까 http.m을 컴파일해야 되더라고요.
그래서 http.m을 컴파일 하다가 오류가 발생했는데 무슨 문제인지 아실까해서 조언을 구해봅니다.
왼쪽은 제가 http.m에 설정한 부분이고 오른쪽은 에러가 난 부분입니다.


추가한 컴파일 옵션을 webTob에서 지원하지 않는것 같습니다..이건 티맥스소프트 쪽에 공식 가이드를 받아서 넣는것이 좋으실것 같아요
티맥스쪽에, TLS1.2 와 cipher suite 를 적용하는 http.m 컴파일 옵션을 가이드해달라고 하시고, 그쪽 가이드를 받으신다음에 진행하시는게 좋겠습니다.
일단 api-old-and-unsafe.tosspayments.com 는, 당분간 계속 지속해서 제공할 예정이니, 해결되기 전까지는 이 url 로 서비스를 유지하시기 바랍니다.
네 감사합니다. api-old-and-unsafe.tosspayments.com 해당 url이 언제까지 서비스가 되는지 알 수 있을까요?
일단 9월까지는 지속할 예정입니다.
네 감사합니다.
안녕하세요. jdk1.7로 인한 tls1.2를 적용하고 원래 url : https://tosspayments.com을 적용했는데, 연결이 되는지 안되는지 확인을 해보는데 socket에러 및 timeout 에러가 발생되는거 같아서 방화벽 차단 해제 요청도 해서 방화벽 차단 해제도 되었는데 같은 오류가 발생이 되더라고요. 혹시 어떤 문제인지 알 수 있을까요?? 오류는 아래 이미지를 첨부했습니다.
그리고 추가로 저희는 도메인으로 토스페이먼츠에게 호출을 하는데, 도메인이 차단되서 그런건 아닌가 싶어서, ip 및 port로 호출 요청을 해도 되나요??

정확히 어떤 URL 로 호출하시는지 공유드릴께요.
https://tosspayments.com 해당 url을 호출하는데 오류가 발생되더라고요.
토스페이먼츠
토스페이먼츠
PG 도입 고민하고 있다면? 쉽고 빠르게 연동할 수 있는 토스페이먼츠를 선택하세요. 카드, 계좌이체, 빌링, 간편결제 등 온라인 사업에 필요한 모든 전자결제수단을 바로 이용할 수 있습니다.
그리고 토스페이먼츠 방화벽 해제된 ip는 210.98.141.21, 210.98.141.22 / 103.182.250.2, 103.182.251.2 4개를 해제했는데, timeconnection 에러가 발생되더라고요.
지금 결제요청을 하려는 API endpoint가 정확히
api-old-and-unsafe.tosspayments.com 인가요
api.tosspayments.com 인가요?
api.tosspayments.com
"103.182.251.2:443 103.182.250.2:443 210.98.141.21:443 210.98.141.22:443" api-old-and-unsafe.tosspayments.com "103.182.250.253:443 103.182.251.253:443" 입니다.
"103.182.251.2:443 103.182.250.2:443 210.98.141.21:443 210.98.141.22:443" api-old-and-unsafe.tosspayments.com "103.182.250.253:443 103.182.251.253:443" 입니다.
결재 요청하려는 url은 api.tosspayments.com 이걸로 하려고 해요.
근데 이 url이 오류가 나서 현재는 이걸 쓰고 있어요. -> api-old-and-unsafe.tosspayments.com
api.tosspayments.com 로 connection timeout 발생하신다면 박의원님이 알려주신 IP 를 열어주셔야 합니다.
네 그래서 그 ip들에 대해서 방화벽 차단을 해제 했는데도 오류가 발생이 되네요
이미지상에 보이는 오류는 접근이 안될 때 발생되는 오류 같은데, 방화벽 해제가 됬는데도, 접근이 안된다고 하니 이유를 잘 모르겠네요
실제로 해제 된게 맞는지 443번 포트가 해제된건지 다시 방화벽 담당자와 확인해 주시기 바랍니다.
그리고 혹시 모르니 요청하시는 서버가 public 망에 나올때 사용하는 IP 도 확인부탁드릴께요.
해당 url 로 나오는 값이 정확하다는게 무슨 말일까요?? 이해가 잘 안되서요.
위 url로 curl을 보내면
{"ip":"8.8.8.8"}
이런식으로 값이 나오거든요.
이 응답값을 알려달라는 의미입니다.
네 알겠습니다. 감사합니다.
url을 실행해보니 {"ip":"117.111.19.61"} 이 값이 나왔습니다.
public 망으로 나올 때 ip는 담당자에게 오후에 문의해보도록 하겠습니다.
ㅅㅓ버에서 실행하신거죠?
그러면 public 망으로 나올 때의 ip가 117.111.19.61 일겁니다.
서버는 맞는데 서버에 있는 자바스크립트로 실행했습니다.
방화벽 담당자에게 연락해봤습니다.
103.182.250.2, 103.182.251.2는 정상적으로 열려있는데, 210.98.141.21, 210.98.141.22는 열려있다가 막혔다가를 하다보니 혹시, 토스페이먼츠사 쪽에서 msds시스템을 차단하고 있는건 아닌지 하더라고요.
public 망에 대한 의견은 103.182.250.2, 103.182.251.2 이 두 ip가 잘 열리기 때문에 public 망으로 인한 문제는 아니라고 하네요.
기본적으로 저희쪽은 막으면 다 막고 풀면 다 푸는 형태라서 열려있다가 막혔다가를 하는 구조가 아니긴 한데요. 그러면 api.tosspayments.com 으로 요청하신게 되는경우가 있고 안되는 경우가 있으신가요?
아니요 그런경우는 없습니다. 무조건 connection timeout 에러가 발생되더라고요.
그렇다보니 저희쪽에서는 차단되있는게 없다고 하고 tosspayments에서는 다 열어서 접근된다고 하는데 접근이 안된다는 오류가 발생되니 원인을 정확히 잘 모르겠네요..
210.98.141.21, 210.98.141.22는 열려있다가 막혔다가를 하다보니라고 하셨는데요. 이게 아니라 무조건 에러가 발생하시는 건가요?
일단 그렇다면 귀사 서버내 hosts 설정에 도메인과 IP를 직접 설정해보시고 테스트 결과를 회신해주시기 바랍니다.
리눅스/유닉스 계열이라면 /etc/hosts 에
103.182.250.2 api.tosspayments.com 설정
윈도우 서버라면 c:/windows/system32/drivers/etc/hosts 파일에 설정해보시기 바랍니다.
제가 테스트를 위해서 url을 입력했는데 오타로 입력해서 timeout connection 에러가 났던 거더라고요. 죄송합니다. 그리고 url을 제대로 입력하고 했는데 다른 에러가 발생되더라고요. 그리고 연결이 잘되는지 테스트를 위해 결재를 진행한건 아니고 확인을 위해 200 코드가 리턴되면 성공으로 처리했는데 200이 안나오고 Received close_notify during handshake 오류가 발생되더라고요. 통신 중에 오류가 발생되는거 같은데 해당 오류는 어떤 오류일 때 발생이 되나요. 오류 로그는 이미지로 첨부합니다.
이미지 첨부 부탁드립니다. Received close_notify during handshake 이 에러는 보통 TLS 버전이 문제가 있을때 발생합니다. TLS 1.2 이상으로통신하고 계신지 확인부탁드립니다.
이미지 첨부하고 메시지 보내야하나봐요

자바에서 tls 1.1로 되어있는 부분도 빼고 점심에 확인해보려고요
감사합니다.
api.tosspayments.com 로 요청시 에러난것인가요?
그럼 TLS 1.2 미지원 에러가 맞습니다.
자바에서 TLS1.2 외에는 다 제외해도 에러가 똑같이 발생이되네요. 그래서 인터넷 검색을 해보니까 SSLContext.getInstance("SSL") -> SSLContext.getInstance("TLSv1.2")로 변경되야 한다고 하네요.
이렇게 변경하는게 맞을까요??
웹서버 설정은 가맹점마다 환경이 다 다르기 때문에, 저희가 "이렇게 하면 된다" 라고 개런티를 드릴수가 없습니다. 이점 양해부탁드립니다
넵 sslcontext를 tlsv1.2로 바꾸니까 정상적으로 되네요, 그동안 많은 도움 감사드립니다.
네 감사합니다.