30P by xguru 2022-03-15 | favorite | 댓글 7개
  • 왜 로컬에서 HTTPS를 써야 할까
    • 프로덕션 환경과 최대한 비슷하게
    • 강력한 보안 정책 적용 - Content Security Policy(CSP)
    • 서비스 워커, Secure/Prefixed 쿠키 등 특정 브라우저 기능 이용
    • localhost 대신 특정 호스트명 이용
  • 로컬에서 HTTPS 사용하기
    • Self-Signed Certificate 생성하기
      → 가장 좋은 도구는 OpenSSL 이지만, 간단한 mkcert 만으로도 충분
      → mkcert -install 로 로컬 CA 설치하고 mkcert localhost 로 키 생성
    • Node.js 로 localhost 키 이용해서 HTTPS 서버 만들기

CFSSL은 어떨까요? 저도 그냥 OpenSSL을 써오긴 했는데 최근 읽는 책에서 CFSSL을 소개하더라구요. 장단점이나 비교가 궁금하네요

로컬 서버에 스마트폰 연결 테스트를 할때는 HTTPS 가 필수 인것 같은데,
제 응용 분야는 인터넷이 안되는 로컬 네트워크인 경우가 많아
ngrok 류의 터널링을 사용할수 가 없네요.
위의 인증서 생성 방법은 되긴 하지만 관리가 편하지는 않았습니다.
혹시 다른 방법이 있을까요?

개발머신이 windows 기반이라면 fiddler 같은 프록시를 띄우고 아이폰이나 안드로이드폰의 proxy 주소를 fiddler 접속 주소로 설정하면 개발머신의 hosts 파일 등이 적용됩니다.
(fiddler 자체 서명 루트 인증서를 폰에 설치하는 과정이 필요함)
mitmproxy 같은 것으로도 가능할 것 같습니다.

https://news.hada.io/topic?id=6151

저는 요 솔루션을 써봤습니다. 굉장히 행복하더라고요...

전 ngrok 으로 인터넷도 안되는 로컬 환경에서는 안되는 것과,
대역폭 한계로 테스트를 충분히 못하는 문제가 있었어요.;;

참고로 Windows에도 PowerShell에 New-SelfSignedCertificate라는 명령어가 있어서, 별도의 외부 도구 설치 없이 자체 서명한 인증서를 만들 수 있습니다. 예전에 이걸로 인증서 파일을 뽑아내는 PowerShell 스크립트를 작성해서 썼던 적이 있네요.
https://www.sysnet.pe.kr/2/0/12588