공공데이터포털( data.go.kr )에서 제공하는 API를 사용하는 과정에서 발생하는 에러 중 SSL 에러를 해결하는 방법에 대해 알아본다.
개요
공공데이터포털( data.go.kr )의 API의 사용에 익숙하지 않은 경우 코드를 작성하거나 API호출을 할 때 다양한 에러를 마주할 수 있다. 그 중 하나가 바로 SSL 에러이다.
이와 관련해서 국토교통부 아파트 매매 실거래가 상세자료 API를 호출하는 코드를 활용하여 알아보자.
해결책
이는 대부분 API호출 시 사용하는 URL의 앞 부분에 위치한 “https://“ 때문에 발생하는데 이를 “http://“로 변경해주면 해결된다.
예를 들어 다음과 같이 API 호출 코드를 작성했을 때 SSL 에러가 발생할 수 있다.
1 | import requests |
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 | import requests |
원인
이는 API를 호출용 코드를 작성하기 전에 미리 웹페이지에서 API샘플을 확인 하는 과정에서 종종 발생한다.
다음과 같이 [미리보기] 메뉴 아래의 [확인]버튼을 눌러보면 나오는 다음과 같은 화면에서 확인할 수 있으며
“serviceKey” 오른쪽에 “Encoding” 인증키를 입력한 후 아래의 [미리보기] 버튼을 누르게 되면 다음과 같이 API 호출 결과를 웹페이지에서 확인할 수 있다.
여기서 확인할 수 있는 웹브라우저의 URL을 복사에서 그대로 코드에 반영하는 경우 상기와 같이 SSL에러를 마주할 수 있으니 주의해야 한다.
앞에서 언급한 “http”와 “https”가 언급되어있는 API 문서 또는 API 설명 페이지를 API 사용 전에 꼭 확인하는 것을 추천한다.
그리고 예외적으로 보안 수준이 높은 조직 내부에서 외부 특정 URL을 “http://“로 호출하는 것을 차단하여 SSL에러가 발생할 수도 있고, 기타 기술적 이슈로도 에러가 발생할 수 있다. 이 경우에는 보통 해당 조직의 보안담당자의 기술적 지원이 필요하며 이 때 에러 메세지 전문, 호출 코드, 호출 URL, 현재 사용중인 환경 등 다양한 내용을 제공하는 것을 권장한다.