TIL 7/14 Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment

개발(공부) 자국·2021년 7월 14일
0
post-custom-banner

트러블 슈팅

오늘은 시험을 봤다. 그 중에서 잘 몰랐던 부분들을 찾아보면서 나름 문제의 원인을 찾았던 경험이다.
https 모듈을 사용하여 express로 api 문서대로 구현하는 것이 목표였다. 시험의 문제와는 별개로 TDD를 확인하는데 이러한 문구를 봤다.

(node:22847) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED 
environment variable to '0' makes TLS connections and HTTPS 
requests insecure by disabling certificate verification.

이 문구를 보고 처음 든 생각은 내 인증서가 잘못되었나를 생각했다. 이전에 mkcert로 만들었던 파일이 이상이 생겼나 생각했다. 그래서 다시 인증서를 받아보고 시도해봤지만 메세지는 사라지지 않았다. 구글링으로 찾아보니 유효하지 않은 인증서라는 것이다. 그러면서 해결책이

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

이 부분을 1로 바꾸라는 말이 많았다. 이게 무슨 말인지 이해하지 못했다. 인증서가 유효하지 않으면 못쓰는것 아닌가 라는 생각을 했다. 하지만 이것은 유효성을 검증하지 않겠다는 의미라고 설명하는 글을 봤다. 인증서의 유효성을 검사하는 설정을 하지 않아도 되냐는 경고글이다. 코드 중에 저런 부분이 있나 찾아보니 TDD에 위에 있는 설정으로 되어 있었다. 이 메세지가 나오는 이유가 1로 설정하고 유효성 검사를 하면 공인된 CA에서 발급받은 인증서를 체크한다는 의미가 되는데 mkcert는 유효한 CA에서 발급하는 것이 아니라서 유효성 검사를 통화하지 못한다. mkcert 인증서는 무료로 연습하거나 로컬로 개발할 때 사용하는 것이고 지금은 그 유효성 검사가 필요없기 때문에 0으로 설정한 것이었다. 0인 부분을1로 설정을 바꿨더니 모든 TDD가

Error: unable to verify the first certificate

이 문구의 에러로 그때까지 구현했던 모든 기능이 TDD를 통과하지 못하는 모습을 볼 수 있었다.

정리:

  • mkcert와 같은 로컬로만 사용하려는 https 인증서를 사용할 경우는 process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0; 이런 설정으로 사용하여 실제로 유효성 검사를 하지 않고 https의 구현을 시험해 볼 수 있다.
  • 공인된 CA에서 발급 받은 인증서는 process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1; 로 설정하면 제대로 유효성을 검증하고 사용해볼 수 있다.

느낀점

어떠한 오류를 만나도 항상 "왜 이러지?" 라는 생각으로 시작하지만 "잘못했구나" 라는 경우가 거의 100이면 99.9가 그런 것 같다. 오히려 오류를 보고도 제대로 방향을 잡기도 어렵다. 정말 오류를 잘 찾고 해결책을 잘 찾는 훈련도 필요하다고 생각했다. 매번 정말 어려운 일인 것 같다. 해결하면 정말 기분이 좋지만 그 전까지는 정말 어려움의 연속이라서 쉽지는 않은 과정인 것 같다. 제대로된 자료를 찾는 것도 중요한데 제대로 자료를 활용하려고 잘 살펴보는 것도 중요하다는 생각이 들었다. 정말 많은 자료가 있다보니 자료를 대충 보게되는 경우가 많았다. 이제는 이전보다 더 꼼꼼하게 살펴봐야겠다.

profile
기록을 중요하게 생각하는 사람입니다. 학습한 내용을 정리한 것이라 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 언제든 말씀해 주시기 바랍니다.
post-custom-banner

0개의 댓글