![인터넷 연결 없이 로컬 네트워크의 클라이언트 브라우저에서 HTTPS 사용](https://rvso.com/image/1606699/%EC%9D%B8%ED%84%B0%EB%84%B7%20%EC%97%B0%EA%B2%B0%20%EC%97%86%EC%9D%B4%20%EB%A1%9C%EC%BB%AC%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%20%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90%EC%84%9C%20HTTPS%20%EC%82%AC%EC%9A%A9.png)
저는 서버에서 실행되는 웹 애플리케이션을 개발 중입니다. 인터넷에 연결되지 않은 WiFi를 통해 HTTPS를 통해 서버에 연결하는 클라이언트(스마트폰 브라우저)가 있을 것입니다. 주로 1일 행사에 사용됩니다.
문제:인터넷 없이도 HTTPS를 사용할 수 있습니까?
- 클라이언트의 신뢰 저장소에는 인증서를 추가할 수 없습니다. 다른 방식으로는 클라이언트를 구성할 수도 없습니다. 고객은 이벤트를 방문하는 무작위 사람들입니다.
- 클라이언트는 CRL/OCSP를 확인하기 위해 인터넷에 액세스할 수 없습니다. 인터넷에 연결되어 있지 않을 수도 있습니다.
나는 아이디어가로컬 DNS 사용:
- 나는 다음에 대한 키와 신뢰할 수 있는 SSL 인증서(LetsEncrypt)를 소유하고 있습니다.
offline.mydomain.com
- 오프라인 WiFi 네트워크에는 모든 DNS 주소를 내 애플리케이션 서버로 가리키는 DNS 서버가 있습니다.
- SSL 인증서 신뢰 체인 의 모든 인증서와 CRL은
offline.mydomain.com
애플리케이션 서버로 다운로드되며 인증서의 CDP 및 AIA에 정의된 경로에서 액세스할 수 있습니다. - 애플리케이션 서버가 실행 중이라고 주장함
https://offline.mydomain.com
(DNS 서버가offline.mydomain.com
애플리케이션 서버를 가리킴)
전체 흐름은 다음과 같습니다.
- 고객:
GET https://offline.mydomain.com/app
- DNS:
offline.mydomain.com
응용 프로그램 서버의 IP에 있습니다. - 내 애플리케이션 서버:여기 HTML이 있습니다
- ...
- 고객:
GET http://crl.ca.com/crls/ca.crl
- DNS:
crl.ca.com
응용 프로그램 서버의 IP에 있습니다. - 내 애플리케이션 서버:여기 CRL이 있습니다
- ...
- 고객:
GET http://certificate.ca.com/certs/ca.cer
- DNS:
certificate.ca.com
응용 프로그램 서버의 IP에 있습니다. - 내 애플리케이션 서버:여기 인증서가 있어요
- ...
그러나 나는 네트워킹을 그다지 이해하지 못합니다. DNS 부분이 가능할까요?
- 클라이언트를 수동으로 구성하지 않고도 클라이언트가 내 로컬 DNS를 사용하도록 할 수 있습니까?
- 실제 인터넷에 다시 연결한 후 클라이언트는 얼마나 혼란스러울까요?
- 스마트폰이 인터넷에 연결되지 않은 Wi-Fi에 연결됩니까?
답변1
클라이언트가 CRL 또는 OCSP 서버에 연결할 수 없다는 이유만으로 TLS 호스트에 연결하지 못할 것이라고는 생각하지 않습니다. 따라서 필요한 것은 다음과 같다고 99% 확신합니다.
- 널리 신뢰되는 CA(예: Let's Encrypt)가 서명한 서버 인증서와 일치하는 개인 키가 로컬 웹 서버 상자에 설치됩니다.
- 로컬 서버의 IP 주소에서 관련 호스트 이름을 가리키는 로컬 DNS 서버.
- 클라이언트 장치에 IP 주소를 제공하고 DNS 서버를 사용하도록 지시하는 DHCP 서버.
DNS와 DHCP는 매우 가벼운 작업이므로 원하는 경우 HTTPS 서버와 동일한 상자에서 쉽게 실행할 수 있습니다.
모바일 Wi-Fi 장치에는 DHCP가 활성화되어 있을 가능성이 높으며 DHCP 서버가 사용하라고 지시하는 DNS 서버를 사용할 가능성이 높습니다. 따라서 로컬 DNS 서버에서 "8.8.8.8"/"8.8.4.4"/"1.1.1.1"을 가리키는 것에 대해 걱정할 필요가 없다고 생각합니다. 하지만 이벤트가 있기 오래 전에 오프라인 네트워크의 프로토타입을 설정하고 다양한 iOS, Android, Mac 및 Windows 장치(각각 하나 이상)에서 테스트해 보는 것이 좋습니다.
실제 인터넷에 다시 연결할 때 장치를 혼동해서는 안 됩니다.