AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 79290534
Accepted
SzalonyKefir98
SzalonyKefir98
Asked: 2024-12-18 17:03:45 +0800 CST2024-12-18 17:03:45 +0800 CST 2024-12-18 17:03:45 +0800 CST

Atualização do certificado ESP32 TLS

  • 772

Minha empresa vai usar o ESP32 em seus dispositivos. Tenho que escrever um código que permita baixar atualizações OTA do ESP32 de um servidor HTTPS. O certificado raiz do servidor TLS expira uma vez por ano. Aqui está minha pergunta: Como posso baixar com segurança um novo certificado do servidor se ele expirou? Se o certificado expirar, perco o controle remoto do ESP e não consigo carregar novos arquivos nele. Por exemplo, navegadores da web como Chrome ou Firefox (pelo que entendi) atualizam seu armazenamento CA, e os usuários nem percebem. É possível obter essa funcionalidade no ESP32?

A única ideia que tenho é conectar-me a um segundo site que seja HTTP, não HTTPS, e baixar o novo certificado. Mas devo usar TLS o tempo todo, então essa solução é inaceitável. Sou novo em tecnologia web e precio uma ajuda e dicas!

ssl
  • 1 1 respostas
  • 31 Views

1 respostas

  • Voted
  1. Best Answer
    Tarmo
    2024-12-18T19:34:37+08:002024-12-18T19:34:37+08:00

    Você tem certeza de que o servidor usa um certificado raiz, não um intermediário? A diferença entre um navegador e um dispositivo embarcado é que você ainda pode atualizar um navegador com um instalador offline simples, não importa o quão desatualizada esteja sua versão atual. Com um dispositivo embarcado, o servidor OTA é a única tábua de salvação - se o dispositivo não puder se comunicar com o servidor, ele não poderá atualizar. Ele se torna um zumbi e só pode ser atualizado via cabo, o que geralmente não é viável.

    Se o OTA do seu dispositivo embarcado depende de PKI com certificado raiz de 1 ano, eu diria que você está em uma situação ruim. Isso requer que cada dispositivo, sem exceção, atualize seu certificado raiz antes que o anterior seja rotacionado, qualquer um que fique para trás é um zumbi. Se você tem certeza de que pode atualizá-los todos antes do prazo, vá em frente e faça isso. Preste atenção aos dispositivos que não têm acesso à Internet por meses (por exemplo, porque estão parados em um depósito).

    Esta é minha lista de soluções em ordem de preferência pessoal:

    1. Crie uma PKI incorporada com certificado raiz válido por 50 anos. Proteja todos os ativos da web com um certificado intermediário (assinado pelo raiz) - eles podem ser rotacionados sempre que quiser. Cada dispositivo tem o certificado raiz de 50 anos e pode validar qualquer certificado intermediário, independentemente da frequência com que eles são rotacionados. Observe que você ainda pode rotacionar o certificado raiz via OTA, se necessário, isso só acontece em circunstâncias mais controladas.
    2. Caso contrário, crie uma PKI paralela com certificado raiz válido por 50 anos. Então use isso para atualizar o certificado OTA usando qualquer método disponível para você (até mesmo enviar via SMS é uma opção, desde que você possa verificar as coisas recebidas usando seu certificado raiz). É estúpido, mas você mantém alguma linha de vida de backup sobre dispositivos que perderam o prazo.
    3. Abandone a segurança e aceite que os dispositivos que perderam o prazo de rotação poderão atualizar seus certificados sem qualquer validação.

    Você pode substituir 50 anos por qualquer número X se:

    • cada dispositivo em sua frota tem garantia de receber atualizações OTA após X anos
    • você está disposto a considerar perdidos permanentemente todos aqueles dispositivos que não estão online há X anos

    Tenho lutado para encontrar um bom material de referência sobre certificados e cadeias X.509 (90% das correspondências do Google são artigos de vendas superficiais). Posso indicar um artigo Illustrated X.509 Certificate e a página da Wikipedia

    • 1

relate perguntas

  • O desafio http do traefik acme produz "Nenhum certificado padrão, retorno ao certificado gerado internamente"

  • Existe uma maneira de transmitir dados com segurança (uma versão TLS) em pacotes de 32 bytes?

  • Finalidade do certificado de cliente SSLStream

  • Como o HTTPS/TLS/SSL evita o sequestro de sessão? [duplicado]

  • Abaixo tls aperto de mão, qual é o problema?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve