self-signed https API server와 swagger 연동

이상문
2 min readNov 28, 2022

--

앞서서 swagger editor를 통해서 open API 문서화에 대해서 정리했다. 문서화 된 웹페이지의 장점 중에 하나는 파라메터를 넣고, 실제로 호출해서 결과값을 확인해볼 수 있다는 점이다.

보안 상의 이유로 API 서버는 https를 통해 서비스를 하며, 인증서가 필요하기 때문에 self-signed 인증서를 활용했다. 문제는 여기에서 발생한다. swagger 문서가 이 self-signed API 서버로 요청을 할 때 “failed to fetch”라는 오류를 발생 시키기 때문이다.

웹 브라우저의 개발자 도구로 진입해서 네트워크 탭을 선택하고 요청을 실행해보면, 응답 자체가 넘어오지 않는다. 아무래도 웹 브라우저 자체에서 보안 정책 등의 이유로 요청 자체를 넘기지 않는 것이 아닐까 의심해볼 수 있다.

구글링을 통해서 힌트를 하나 얻은 것은 chromium 엔진에서 기본적으로 정식으로 인증 받지 않은 사이트로의 접속에 대해서 fetch 명령이 오류를 발생 시킨다는 것이었고, 아마도 내부적으로 swagger editor나 swagger editor로 생성한 서버 프로그램을 통해서 실행한 웹 앱에서도 보안 상 실패하는 것이 아닐까 하는 추측을 할 수 있었다.

결국 웹 브라우저의 보안 정책을 풀어주는 것이 이 문제를 풀어줄 수 있는 방법이 아닐까 보여지고, 다시 좀 더 구글링을 한 결과 chrome을 다음과 같은 방법으로 실행할 수 있다는 것을 알게 되었다.

chrome.exe --user-data-dir=c:\temp --ignore-certificate-errors

user-data 옵션을 지정해 준 이유는 이것을 다르게 설정하지 않으면, 기존의 사용하고 있던 user data를 사용하게 되고 기존 보안 정책을 유지하는 것인지 뒤의 igore-certificate-errors 이 제대로 동작하지 않기 때문이다.

이 명령을 통해 실행을 하면 chorme 창이 새롭게 하나 뜨게 되며, 이를 통해서 swagger 문서로 self-signed 요청을 시도해보면 통과되어서 실행되는 것을 확인할 수 있다.

마치, curl 명령에서 self-signed 서버로 요청할 때, k 옵션을 줘야 실행이 되는 것과 유사한 상황이지 않을까 하는 생각이 든다.

--

--

이상문
이상문

Written by 이상문

software developer working mainly in field of streaming, using C++, javascript

No responses yet