Estou trabalhando em um aplicativo da web executado em um servidor. Haverá clientes (navegadores de smartphones) conectando-se ao servidor via HTTPS através de um WiFi que não estaria conectado à internet. Seria usado principalmente para eventos de 1 dia.
O problema:É possível ter HTTPS sem internet?
- Não podemos adicionar nenhum certificado aos armazenamentos confiáveis dos clientes. Também não podemos configurar os clientes de outra forma. Os clientes serão pessoas aleatórias que visitarão o evento
- Os clientes não podem acessar a Internet para verificar CRL/OCSP. Talvez não haja conexão com a Internet
eu tenho uma ideiausando um DNS local:
- Possuo uma chave e um certificado SSL confiável (LetsEncrypt) para
offline.mydomain.com
- Há um servidor DNS na rede WiFi offline que aponta todos os endereços DNS para o meu servidor de aplicativos
- Todos os certificados e CRLs da
offline.mydomain.com
cadeia confiável do certificado SSL são baixados para o servidor de aplicação e podem ser acessados nos caminhos definidos no CDP e AIA dos certificados - O servidor de aplicativos afirma estar em execução
https://offline.mydomain.com
(e o servidor DNS apontaoffline.mydomain.com
para o servidor de aplicativos)
Todo o fluxo seria:
- Cliente:
GET https://offline.mydomain.com/app
- DNS:
offline.mydomain.com
está no IP do servidor de aplicação - Meu servidor de aplicativos:aqui está o HTML
- ...
- Cliente:
GET http://crl.ca.com/crls/ca.crl
- DNS:
crl.ca.com
está no IP do servidor de aplicação - Meu servidor de aplicativos:aqui está a CRL
- ...
- Cliente:
GET http://certificate.ca.com/certs/ca.cer
- DNS:
certificate.ca.com
está no IP do servidor de aplicação - Meu servidor de aplicativos:aqui está o certificado
- ...
No entanto, não entendo muito de networking. A parte do DNS seria possível?
- Posso fazer com que os clientes usem meu DNS local sem configurá-los manualmente?
- Quanto os clientes ficariam confusos depois de se conectarem novamente à Internet real?
- Os smartphones se conectarão a um WiFi que não esteja conectado à internet?
Responder1
Não acho que um cliente falharia ao se conectar a um host TLS só porque não conseguiu acessar o servidor CRL ou OCSP. Tenho 99% de certeza de que tudo que você precisa é:
- Um certificado de servidor assinado por uma CA amplamente confiável (como Let's Encrypt), junto com a chave privada correspondente, instalada na caixa do seu servidor web local.
- Um servidor DNS local que aponta o nome do host relevante para o endereço IP do seu servidor local.
- Um servidor DHCP para fornecer endereços IP aos dispositivos clientes e instruí-los a usar o seu servidor DNS.
DNS e DHCP são operações muito leves, portanto, podem ser executados facilmente na mesma caixa que o servidor HTTPS, se você desejar.
Os dispositivos Wi-Fi móveis provavelmente terão o DHCP habilitado e provavelmente serão capazes de usar qualquer servidor DNS que o servidor DHCP lhes diga para usar. Portanto, não acho que você precise se preocupar em apontar "8.8.8.8"/"8.8.4.4"/"1.1.1.1" para seu servidor DNS local. Mas eu sugiro fortemente que você configure um protótipo de sua rede offline muito antes do evento e teste-o com uma variedade de dispositivos iOS, Android, Mac e Windows (pelo menos um de cada).
Os dispositivos não devem ser confundidos ao se conectar novamente à Internet real.