Py) API(공공) SSL 에러

Py) API(공공) SSL 에러

공공데이터포털( data.go.kr )에서 제공하는 API를 사용하는 과정에서 발생하는 에러 중 SSL 에러를 해결하는 방법에 대해 알아본다.


개요

공공데이터포털( data.go.kr )의 API의 사용에 익숙하지 않은 경우 코드를 작성하거나 API호출을 할 때 다양한 에러를 마주할 수 있다. 그 중 하나가 바로 SSL 에러이다.

이와 관련해서 국토교통부 아파트 매매 실거래가 상세자료 API를 호출하는 코드를 활용하여 알아보자.

해결책

이는 대부분 API호출 시 사용하는 URL의 앞 부분에 위치한 “https://“ 때문에 발생하는데 이를 “http://“로 변경해주면 해결된다.

예를 들어 다음과 같이 API 호출 코드를 작성했을 때 SSL 에러가 발생할 수 있다.

1
2
3
4
5
import requests

url = "https://apis.data.go.kr/1613000/RTMSDataSvcAptTradeDev/getRTMSDataSvcAptTradeDev?serviceKey=qSd6eaxtapM%2BOr7wi%2BA%3D%3D&LAWD_CD=11110&DEAL_YMD=201512&pageNo=1&numOfRows=10"

res = requests.get(url)

SSLError Traceback (most recent call last)
File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py:466, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
465 try:
–> 466 self._validate_conn(conn)
467 except (SocketTimeout, BaseSSLError) as e:



SSLError: HTTPSConnectionPool(host=’apis.data.go.kr’, port=443): Max retries exceeded with url: /1613000/RTMSDataSvcAptTradeDev/getRTMSDataSvcAptTradeDev?serviceKey=qSd6eaxtapM%2BOr7wi%2BA%3D%3D&LAWD_CD=11110&DEAL_YMD=201512&pageNo=1&numOfRows=10 (Caused by SSLError(SSLError(1, ‘[SSL: SSLV3_ALERT_ILLEGAL_PARAMETER] sslv3 alert illegal parameter (_ssl.c:1006)’)))

그런데 이를 다음과 같이 “https://“를 “http://“로 변경해주면 에러가 발생하지 않는다.

1
2
3
4
5
import requests

url = "http://apis.data.go.kr/1613000/RTMSDataSvcAptTradeDev/getRTMSDataSvcAptTradeDev?serviceKey=qSd6eaxtapM%2BOr7wi%2BA%3D%3D&LAWD_CD=11110&DEAL_YMD=201512&pageNo=1&numOfRows=10"

res = requests.get(url)

원인

이는 API를 호출용 코드를 작성하기 전에 미리 웹페이지에서 API샘플을 확인 하는 과정에서 종종 발생한다.

다음과 같이 [미리보기] 메뉴 아래의 [확인]버튼을 눌러보면 나오는 다음과 같은 화면에서 확인할 수 있으며
API 기본 정보

“serviceKey” 오른쪽에 “Encoding” 인증키를 입력한 후 아래의 [미리보기] 버튼을 누르게 되면 다음과 같이 API 호출 결과를 웹페이지에서 확인할 수 있다.
API 호출 결과(web)

여기서 확인할 수 있는 웹브라우저의 URL을 복사에서 그대로 코드에 반영하는 경우 상기와 같이 SSL에러를 마주할 수 있으니 주의해야 한다.

앞에서 언급한 “http”와 “https”가 언급되어있는 API 문서 또는 API 설명 페이지를 API 사용 전에 꼭 확인하는 것을 추천한다.

그리고 예외적으로 보안 수준이 높은 조직 내부에서 외부 특정 URL을 “http://“로 호출하는 것을 차단하여 SSL에러가 발생할 수도 있고, 기타 기술적 이슈로도 에러가 발생할 수 있다. 이 경우에는 보통 해당 조직의 보안담당자의 기술적 지원이 필요하며 이 때 에러 메세지 전문, 호출 코드, 호출 URL, 현재 사용중인 환경 등 다양한 내용을 제공하는 것을 권장한다.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×