카드 결제 TLS 1.2 이상 오류 발생
asp 로 WinServer 2008 R2 에서 서비스를 하고 있는 서버 입니다.
TLS 1.2 통신 설정은 되어 있습니다.
결제가 잘 되다가 최근에 다음과 같은 오류가 발생합니다.
{"code":"UNSUPPORTED_TLS_VERSION","message":"TLS 버전 1.2 이상을 사용해 주세요 1.2 미만은... 생략
결제 연동 소스는 아래와 같습니다. TLS 1.2 로 적용하기 위해서 어느 부분을 수정해야 할까요?
서버는 TLS 1.2 통신이 가능하도록 레지스트리 활성화 하였고
https://www.ssllabs.com/ssltest/analyze.html?d=forbit.co.kr URL 로 TLS 1.2 통신 가능한 것을 확인하였습니다. <% payment_id = trim(request("orderId")) paymentKey= trim(request("paymentKey")) payment_amount = trim(request("amount")) secret_key = "live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:" url = "https://api.tosspayments.com/v1/payments/" & paymentKey data = "{""orderId"" : """ & payment_id & """, ""amount"" : """ & payment_amount & """}" authorization = "Basic " & base64Encode(secret_key) set req = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") req.open "POST", url, false req.setRequestHeader "Authorization", authorization req.setRequestHeader "Content-Type", "application/json;charset=UTF-8" req.send data %>
https://www.ssllabs.com/ssltest/analyze.html?d=forbit.co.kr URL 로 TLS 1.2 통신 가능한 것을 확인하였습니다. <% payment_id = trim(request("orderId")) paymentKey= trim(request("paymentKey")) payment_amount = trim(request("amount")) secret_key = "live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:" url = "https://api.tosspayments.com/v1/payments/" & paymentKey data = "{""orderId"" : """ & payment_id & """, ""amount"" : """ & payment_amount & """}" authorization = "Basic " & base64Encode(secret_key) set req = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") req.open "POST", url, false req.setRequestHeader "Authorization", authorization req.setRequestHeader "Content-Type", "application/json;charset=UTF-8" req.send data %>
84 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
작업하셔야 하는 것은 가맹점 서버 - 토스페이먼츠 서버 사이의 보안 통신 부분이고,
전달하신 사이트에서 조회한 것과는 상관이 없습니다.
운영하는 서버에서 TLS 1.2 이상의 보안 통신이 진행되어야 하는 부분 입니다.
https://docs.tosspayments.com/blog/how-to-raise-tls-version
위 링크에 명시된 모든 작업은 다 완료 하셨을까요?
TLS 1.2로 업그레이드하는 방법 | 토스페이먼츠 개발자센터
토스페이먼츠는 안전하지 않은 TLS 1.0, TLS 1.1 보안 채널에 대한 지원을 종료하기로 결정했습니다.
서버는 TLS 1.2 통신이 가능한 상태이며
변경된 것은 만료된 인증서 변경 작업 말고는 없습니다. 얼마 전까지만 해도 카드 결제에 문제가 없었습니다. 해당 TLS 1.2 미만 오류는 저 부분에서 발생합니다.
classic asp 이고 windows server 2008 r2 이기 때문에 ASP 항목에서 2번, 4번만 예전에 작업해 놓았습니다.
TLS 1.2 미만 지원 종료는 언제 부터였을까요?
사용하시는 MID 를 알수 있을까요?
최근에 추가된 MID 만 TLS 1.2 를 강제하고 있습니다.
MID 가 뭘까요? 최근에 작업한 인증서를 말씀하시는걸까요?
아뇨 저희 와 계약할때 받으신 상점 ID 입니다.
네 알겠습니다. 확인하고 보내드리겠습니다. 잠시만요
그리고 Windows Sever 2008에 KB4019276 업데이트 패키지 설치 이건 설치 되어 있으신건가요?
forbit_eb 입니다.
KB4019276 설치를 안했네요;;; 일단 해보겠습니다.
windows server 2008 만 해당되는 거라고 생각하고 설치 안했습니다. 2008 R2 도 설치해야 할까요?
KB4019276 를 제공해 주실수 있나요? 가이드대로 찾아봤는데 support.microsoft.com 에 해당 페이지가 없습니다.
Microsoft Update 카탈로그에서 찾았습니다. 제가 이걸 설치안한 이유가 2008 에만 해당되고 2008 R2 는 레지스트리에서 활성화 하면 되는줄 알았었어요 일단 설치 하겠습니다.
네 설치하고 다시 시도 부탁드립니다.
아마 최근에 결제를 하지 않으셔서 예외처리가 되지 않았던게 아닐까 싶습니다.
설치할 수 없습니다. 해당 업데이트는 2008 까지만 해당되는 것으로 보여집니다.
아 그렇군요.
네 카드 결제가 자주 일어나는건 아닙니다.
작업하고 서버 리부트는 하신거죠?
그럼 처리를 해주시면 안될까요?
어떤 작업을 말씀하실까요? 서버에 레지스트리 TLS 1.2 활성화 말씀일까요?
저희가 처리 하더라도 올해 까지만 제공이 가능합니다.
네 맞습니다.
그건 이미 되어 있었습니다.
활성화 -> 재부팅은 하신거죠?
네.. 이미 여러번 했습니다. 작년에 이미 TLS 1.2 로 레지스트리는 변경해 놓은 상태 입니다.
혹시 모르니 레지스트리 다시 설정하고 리부팅 저녁에 해보고 말씀드리겠습니다.
혹시 https://support.microsoft.com/en-us/topic/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-winhttp-in-windows-c4bd73d2-31d7-761e-0178-11268bb10392 이부분도 한번 확인해 보실수 있을까요?
Update to enable TLS 1.1 and TLS 1.2 as default secure protocols in...
Describes an update that adds TLS 1.1 and TLS 1.2 to default security protocols in Windows Server 2012, Windows 7 SP1, and Windows Server 2008 R2 SP1.
네 그 문서도 이미 확인했습니다. 이미 되어 있습니다. ㅜㅜ
보니까 동일한 내용인것 같네요.
거듭 확인해 보겠습니다.
네 이게 가맹점측 서버 설정이다 보니 저희가 도움을 드리는데 한계가 있네요ㅠㅠ
네 저도 서버 담당자는 아니라서요... 그냥 개발자라...
부탁받고 확인 해 드리고 있는데 너무 예전 시스템이라 한계가 있네요
리부팅하고 소스에 tls 1.2 선언해보고 안되면 내일 예외처리 요청 드리겠습니다.
이후에 서버에서 직접 테스트를 하면서 문제 해결을 해볼 수 있을까요?
안내메일에 보면 결제건이 TLS 1.2 인지 확인하는 페이지가 있습니다.
결제 성공하신후 여기에 TID 를 입력해 보시면 TLS 1.2 로 된 거래인지 확인가능합니다.
그럼 예외처리 이후에 1.2 미만으로 결제 하다가
나중에 서버에서 TLS 1.2 로 문제가 해결되면
1.2 로 거래된건지 확인 가능할까요?
네 저기서 체크 하시면 됩니다.
그럼 일단 예외처리 부탁드려도 될까요? 결제 이력이 없어서 자동으로 빠진거고
화면에는 25년 3월까지라고 되어 있던데요
3월안으로 TLS 1.2 로 해결하도록 하겠습니다.
2008R2 라면 아래 부분도 참고해보시기 바랍니다.
1. Windows 7 및 2008 R2 서버에 서비스 팩 1이 설치되어 있는지 확인
2. Microsoft 업데이트 카탈로그 kb3140245가 설치되어 있는지 확인.
https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245
3. TLSv1.2가 반영되려면 3단계의 문서에 제공된 대로 수동 레지스트리 키를 추가 하거나 Microsoft에서 제공하는 수정 프로그램을 설치해야 합니다 .
이 작업이 완료되면 아래 레지스트리 값이 0x00000A00으로 설정되어 있는지 확인하십시오.
x64 컴퓨터의 경우: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\DefaultSecureProtocols
x32 컴퓨터의 경우: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\DefaultSecureProtocols
4. 서버를 다시 시작하세요
서버는 저녁에 리부팅 하려고 합니다.
3월까지 예외처리는 가능할까요?
12월까지 예외처리 가능한 주소입니다.
SP1 은 설치되어 있습니다. KB3140245 방금 설치했습니다. 리부팅이 필요하여 저녁에 해보도록 하겠습니다.
3번 레지스트리 값은 00A00 으로 되어 있었으나 1.1 과 1.2 모두 사용가능한 값으로 1.2만 사용하는 00800 값으로 변경해 보기도 했었으나 소용은 없었습니다.
3번 레지스트리 값은 00A00 으로 되어 있었으나 1.1 과 1.2 모두 사용가능한 값으로 1.2만 사용하는 00800 값으로 변경해 보기도 했었으나 소용은 없었습니다.
방금 보내주신 링크는 연결되지 않습니다.
해당 주소로 모든 API요청이 나가도록 임시로 설정하시고, 연말 전까지 tls설정 하셔서 다시 원래대로 원복하시면 됩니다.
네 서버에서 호출되어야합니다.
api.tosspayments.com -> api-old-and-unsafe.tosspayments.com
모든 코드에서 위와같이 주소를 바꾸면 연말까지 예외처리는 가능합니다.
2025년 3월까지는 예외처리가 되도록 , 네트워크 부서에 전달하였습니다
그럼 지금까지 접속이 된 이유는 뭘까요?
차단된 이유는 결제가 계속 없어서 차단되었을까요?
감사합니다.
네 맞습니다.
그럼 소스 변경전에 차단이 예외처리 되었었는데 지금 예외처리 하려면
저희가 소스안에서 url을 변경하지 않으면 안된다는 말씀이죠?
네 말씀하신 대로입니다. 3월 전까지는 따로 조치를 하지 않더라도 종전처럼 사용가능합니다
변경할 소스를 찾아봐야 겠네요 ㅜㅜ
*기존 거래가 발생하고 있는 MID : 차단 유예
* 신규 MID 또는 거래가 발생하지 않는 MID는 차단
작업을 진행했습니다. 신규 MID가 아님에도 차단됬던 이유는 , 거래미발생 조건에 걸려 차단작업이 진행되었던 것으로 보입니다. (귀사 MID가 다시 사용재개되는것으로 이해하고, 2025년 3월까지 예외로 빼는 작업을 요청드렸습니다)
이전 처럼 기존 거래 발생 MID 차단유예로 해결되는 것이 아니라
소스 변경이 되어야지 3월까지 예외처리가 된다는 말씀이죠?
아니요..지금은 아무것도 안하셔도 3월까지는 사용가능하도록 저희쪽에서 차단을 푼다는 의미였습니다
네 감사합니다.
일단 TLS1.2 미적용 상태로 운영하시되, 별도 환경을 따로 구축하셔서 TLS1.2 테스트를 완료 하고 운영서버에 적용해주시기 바랍니다.
그럼 URL 을 변경할 필요는 없고 3월까지 해결해서
아까 거개가 TLS1.2 로 적용되는지만 확인하면 되는거죠?
네 말씀하신대로입니다.
api.tosspayments.com -> api-old-and-unsafe.tosspayments.com 이건 작업하지 않아도 된다는 말씀이죠?
잠시만요..다시 확인해보겠습니다.
기존 처럼 거래되는건 언제 적용될까요? 지금 카드 결제가 안되고 있어서 결제를 언제할 수 있을지 포비트에서 궁금해 합니다.
네네 기다리겠습니다.
지금 사용하시는 결제모듈 방식이 XPAY가 아닌 PX (SDK방식) 인 것이죠?
저도 잘 모릅니다. 확인해 볼께요
api.tosspayments.com 으로 호출하면 PX가 맞습니다.
위에 가이드가 XPAY용인데, 오해를 했네요. 번거롭게 해드려 죄송합니다. 네 PX 맞습니다.
일단 소스수정은 필요할것 같습니다. (레지스트리 등록이나 서버재부팅은 필요없다는 의미였습니다)
즉, 다른곳은 수정하실 필요 없고
소스에서 api.tosspayments.com -> api-old-and-unsafe.tosspayments.com 이작업만 해주시면 될것 같습니다.
아 소스를 바꿔야 겠군요
그럼 기존 url 은 1.2 가 아니면 차단된다는 말씀이죠?
xpay는 url 변경이 없이 자동처리 되는데...px를 이용하시는데, 이걸 잘못 가이드 드려 죄송합니다.
네 맞습니다. .PX쪽은 api 주소별로 차단을 하기때문에...url을 반드시 바꿔주셔야 합니다.
대신 위의 레지스트리 수정작업이나 서버 재부팅, 핫픽스 설치는 안하셔도 되니,,소스적용후 바로 결제 정상적으로 되는지 확인해보시면 될것 같습니다.
그럼 차단 이유가 기존 URL 이 차단되면서 안된걸까요? 카드결제 자주 이용안한것과 관계없이?
지금 레지스트리 수정, 핫픽스 설치는 다 되어 있는데 리부팅을 저녁에 해야 해서 못하고 있습니다.
URL 변경해서 해보고 리부팅해서 다시 URL 바꿔 보겠습니다.
리부팅은 안하셔도 될꺼에요.
이건 결제창 띄우는 스크립트라 변경사항 없습니다.
var clientKey = 'live_ckw'
var tossPayments = TossPayments(clientKey)
var gtprice = document.regist.amt.value;
var temp_point = document.regist.point.value;
var box = document.regist.box.value;
https://api.tosspayments.com/v1/payments/ 이 부분을 수정하시면 됩니다
네 알겠습니다. 해보고 말씀드리겠습니다.
https://api.tosspayments.com/v1/payments/ => https://api-old-and-unsafe.tosspayments.com/v1/payments/ 입니다.
결제이외에 다른 API (취소등) 도 쓰신다면, 동일하게 호스트명만 바꿔주시면 됩니다.
네
카드 결제가 되었습니다.
여기서는 조회가 안되나 보내요
TID로 조회 하셨어요?
TID 가 또 뭔가요 ㅜㅜ 아까 MID 라고 하신것 같아서 forbit_eb 로 조회햇습니다.
아... 네
그럼 있다가 저녁에 레지스트리 변경 적용된거.... 서버 리부팅 한다음에는
다시 url 변경해서 확인한 다음
안되면 다시 url 을 old 로 변경했다가 사용하고
* 저 페이지는 TLS1.2 가 정상적용됫는지 확인하는 페이지입니다
* 지금 TLS1.2 가 안되서, 미만버전도 지원하는 https://api-old-and-unsafe.tosspayments.com/v1/payments/ 로 변경하신 상태입니다. 그래서 이 URL을 탄 거래는 모두 TLS 1.2 미만으로 올라옵니다
네 알겠습니다.
그럼 오늘 리부팅해보고 안되면 3월까지는 해결하겠습니다.
고생많으셨습니다.
3월까지는 확실한걸까요? 아까 전달해 주신거죠?
넵 그래주시면 될것 같습니다.
* 일단 운영하셔야 하니 https://api-old-and-unsafe.tosspayments.com/v1/payments/ 로 적용 (TLS 1.2 미만)
* 서버재부팅후 https://api.tosspayments.com/v1/payments/ 로 변경하여 결제테스트
* 결제가 정상적으로 되면, paymentkey 를 위 페이지에서 조회하여 TLS1.2 로 반영됬는지 최종확인 (만일 조회안되면 디스코드에 주문번호나 paymentkey 남겨주시면, 저희가 로그확인해서 최종 반영 확인해드리겠습니다)
으로 하시면 됩니다.
감사합니다
네 감사합니다.
네 3월까지는 유예입니다. 이건 타 가맹점에도 정식공지된 내용입니다
네 알겠습니다. 그때까지 해결해 보겠습니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.