Estou construindo um dispositivo baseado em Raspberry Pi para jardineiros de quintal com uma página da web e um ponto de acesso para a configuração inicial, incluindo a configuração de Wi-Fi. A conexão usa WPA2 e os únicos dois dispositivos nessa rede interna seriam o próprio dispositivo e o telefone / tablet / laptop do usuário. O ponto de acesso é visível apenas durante a configuração, o que reduz a probabilidade de invasores externos serem capazes de adivinhar a senha aleatória enviada de fábrica. Portanto, tenho tráfego criptografado, quase certamente apenas dois nós, por um curto período de tempo e uma senha aleatória. Portanto, não há necessidade de HTTPS que eu possa ver e planejei executar o HTTP.
No entanto, hoje soube que a partir de julho o Chrome começará a marcar todos os sites HTTP como inseguros. [1] Porém, como a configuração do Wi-Fi será feita por ponto de acesso, ainda não há acesso à Internet para verificar os certificados TLS, que eu entendo serem necessários para a operação adequada. [2] Eu poderia autoassinar o certificado, mas isso apresenta outros problemas. [3]
Então, minhas opções parecem ser:
- Apresente a página de configuração com uma mensagem grande e assustadora: "Este site não é seguro"
- Apresente a página de configuração com uma mensagem grande e assustadora: "Este certificado não é confiável" (por exemplo, autoassinado)
Como você forneceria esse lindo cadeado verde por padrão para uma página de configuração do dispositivo?
[1] https://www.theverge.com/2018/2/8/16991254/chrome-not-secure-marked-http-encryption-ssl
[3] https://www.globalsign.com/en/ssl-information-center/dangers-self-signed-certificates/
Respostas:
Uma opção possível é usar HTTPS e enviar um certificado real no dispositivo:
Como você controla o ponto de acesso, você presumivelmente controla o servidor DHCP no ponto de acesso, para que ele possa fornecer um endereço de servidor DNS ao mesmo tempo.
Este servidor DNS pode estar no AP e pode resolver um nome de host totalmente qualificado para apontar para ele próprio.
Em seguida, você pode adquirir um certificado para esse nome de domínio totalmente qualificado e empacotá-lo com o produto para criar uma conexão HTTPS totalmente verificada.
Um grande problema com essa idéia é que você está enviando a chave privada e o certificado para esse nome de domínio; portanto, você deve assumir que ela será comprometida em algum momento para nunca colocar uma máquina real (talvez seja necessário executar uma máquina com este nome por um período muito curto para realmente obter o certificado) na Internet que usa esse nome de host como invasores poderiam falsificá-lo facilmente.
Além disso, o firmware do AP teria uma vida útil limitada, pois o certificado expiraria (provavelmente depois de um ano por padrão iirc), e você receberia avisos desagradáveis do certificado expirado.
Próxima ideia:
Abandone o modo Ponto de Acesso WiFi e use Bluetooth, por exemplo
https://www.hardill.me.uk/wordpress/2016/09/13/provisioning-wifi-iot-devices/
A desvantagem é que a Apple atualmente não suporta o WebBluetooth, mas o Chrome no Windows / Linux / Mac e você pode enviar um aplicativo iOS nativo para usuários de telefones / tablets da Apple.
fonte