Gerenciar certificados do IoT Edge

Aplica-se a:Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Todos os dispositivos IoT Edge utilizam certificados para criar ligações seguras entre o runtime e quaisquer módulos em execução no dispositivo. Os dispositivos IoT Edge que funcionam como gateways também usam esses mesmos certificados para se conectar a seus dispositivos downstream.

Nota

O termo autoridade de certificação raiz usado ao longo deste artigo refere-se ao certificado da autoridade superior na cadeia de certificados para sua solução IoT. Você não precisa usar a raiz do certificado de uma autoridade de certificação sindicalizada ou a raiz da autoridade de certificação da sua organização. Muitas vezes, na verdade, é um certificado de autoridade de certificação intermediário.

Pré-requisitos

  • Você deve estar familiarizado com os conceitos em Entender como o Azure IoT Edge usa certificados, em particular como o IoT Edge usa certificados.

  • Um dispositivo IoT Edge.

    Se você não tiver um dispositivo IoT Edge configurado, poderá criar um em uma máquina virtual do Azure. Siga as etapas em um destes artigos de início rápido para Criar um dispositivo Linux virtual ou Criar um dispositivo virtual Windows.

  • Capacidade de editar o arquivo config.toml de configuração do IoT Edge seguindo o modelo de configuração.

  • config.toml Se você não estiver baseado no modelo, abra-o e use as orientações comentadas para adicionar seções de configuração seguindo a estrutura do modelo.

  • Se você tiver uma nova instalação do IoT Edge que não tenha sido configurada, copie o modelo para inicializar a configuração. Não use este comando se você tiver uma configuração existente. Ele substitui o arquivo.

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

Requisitos de formato

Gorjeta

  • Um certificado pode ser codificado em uma representação binária chamada DER (Distinguished Encoding Rules), ou uma representação textual chamada PEM (Privacy Enhanced Mail). O formato PEM tem um -----BEGIN CERTIFICATE----- cabeçalho seguido pelo DER codificado em base64 seguido por um -----END CERTIFICATE----- rodapé.
  • Semelhante ao certificado, a chave privada pode ser codificada em DER binário ou representação textual PEM.
  • Como o PEM é delineado, também é possível construir um PEM que combine o CERTIFICATE e PRIVATE KEY sequencialmente no mesmo arquivo.
  • Por fim, o certificado e a chave privada podem ser codificados juntos em uma representação binária chamada PKCS#12, que é criptografada com uma senha opcional.

As extensões de arquivo são arbitrárias e você precisa executar o file comando ou exibir o arquivo, verificar o tipo. Em geral, os arquivos usam as seguintes convenções de extensão:

  • .cer é uma certidão em formato DER ou PEM.
  • .pem é um certificado, uma chave privada ou ambos no formato PEM.
  • .pfx é um ficheiro PKCS#12 .

O IoT Edge requer que o certificado e a chave privada sejam:

  • Formato PEM
  • Separe os ficheiros
  • Na maioria dos casos, com a cadeia completa

Se você receber um .pfx arquivo do seu provedor de PKI, é provável que o certificado e a chave privada sejam codificados juntos em um arquivo. Verifique se é um tipo de arquivo PKCS#12 usando o file comando. Você pode converter um arquivo PKCS#12 .pfx em arquivos PEM usando o comando openssl pkcs12.

Se o seu provedor de PKI fornecer um .cer arquivo, ele pode conter o mesmo certificado que o .pfx, ou pode ser o certificado de emissão (raiz) do provedor de PKI. Para verificar, inspecione o arquivo com o openssl x509 comando. Se for o certificado emissor:

  • Se estiver no formato DER (binário), converta-o em PEM com openssl x509 -in cert.cer -out cert.pem.
  • Use o arquivo PEM como o pacote de confiança. Para obter mais informações sobre o pacote de confiança, consulte a próxima seção.

Importante

A sua infraestrutura PKI deve suportar chaves de bits RSA-2048 e chaves EC P-256. Por exemplo, seus servidores EST devem suportar esses tipos de chave. Pode utilizar outros tipos de chaves, mas apenas testamos chaves de bits RSA-2048 e chaves EC P-256.

Requisitos de permissão

A tabela a seguir lista as permissões de arquivo e diretório necessárias para os certificados do IoT Edge. O diretório preferencial para os certificados é /var/aziot/certs/ e /var/aziot/secrets/ para chaves.

Arquivo ou diretório Permissões Proprietário
/var/aziot/certs/ diretório de certificados DRWXR-XR-X (755) Aziotcs
Arquivos de certificado em /var/aziot/certs/ -wr-r--r-- (644) Aziotcs
/var/aziot/secrets/ diretório de chaves Drwx------ (700) Aziotks
Ficheiros-chave em /var/aziot/secrets/ -WR------- (600) Aziotks

Para criar os diretórios, definir as permissões e definir o proprietário, execute os seguintes comandos:

# If the certificate and keys directories don't exist, create, set ownership, and set permissions
sudo mkdir -p /var/aziot/certs
sudo chown aziotcs:aziotcs /var/aziot/certs
sudo chmod 755 /var/aziot/certs

sudo mkdir -p /var/aziot/secrets
sudo chown aziotks:aziotks /var/aziot/secrets
sudo chmod 700 /var/aziot/secrets

# Give aziotcs ownership to certificates
# Read and write for aziotcs, read-only for others
sudo chown -R aziotcs:aziotcs /var/aziot/certs
sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;

# Give aziotks ownership to private keys
# Read and write for aziotks, no permission for others
sudo chown -R aziotks:aziotks /var/aziot/secrets
sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

A saída da lista com a propriedade e permissão corretas é semelhante à seguinte saída:

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

Gerenciar CA raiz confiável (pacote de confiança)

O uso de um certificado de autoridade de certificação (CA) autoassinado como uma raiz de confiança com o IoT Edge e módulos é conhecido como pacote de confiança. O pacote de confiança está disponível para IoT Edge e módulos para se comunicar com servidores. Para configurar o pacote de confiança, especifique seu caminho de arquivo no arquivo de configuração do IoT Edge.

  1. Obtenha o certificado de autoridade de certificação raiz de um provedor PKI.

  2. Verifique se o certificado atende aos requisitos de formato.

  3. Copie o arquivo PEM e dê acesso ao serviço de certificado do IoT Edge. Por exemplo, com /var/aziot/certs diretório:

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. No arquivo de config.tomlconfiguração do IoT Edge , localize a seção Trust bundle cert . Se a seção estiver ausente, você poderá copiá-la do arquivo de modelo de configuração.

    Gorjeta

    Se o arquivo de configuração ainda não existir no seu dispositivo, use /etc/aziot/config.toml.edge.template como um modelo para criar um.

  5. Defina a trust_bundle_cert chave para o local do arquivo de certificado.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Aplique a configuração.

    sudo iotedge config apply
    

Instalar a autoridade de certificação raiz no armazenamento de certificados do sistema operacional

A instalação do certificado no arquivo de pacote confiável o torna disponível para módulos de contêiner, mas não para módulos de host como o Azure Device Update ou o Defender. Se você usar componentes de nível de host ou tiver outros problemas de TLS, instale também o certificado de autoridade de certificação raiz no armazenamento de certificados do sistema operacional:

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

Importar arquivos de certificado e chave privada

O IoT Edge pode usar certificados existentes e arquivos de chave privada para autenticar ou atestar o Azure, emitir novos certificados de servidor de módulo e autenticar em servidores EST. Para instalá-los:

  1. Verifique se o certificado e os arquivos de chave privada atendem aos requisitos de formato.

  2. Copie o arquivo PEM para o dispositivo IoT Edge onde os módulos do IoT Edge podem ter acesso. Por exemplo, o /var/aziot/ diretório.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. Conceda a propriedade ao serviço aziotcs de certificado do IoT Edge e ao serviço de aziotks chave para o certificado e a chave privada, respectivamente.

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. No config.toml, localize a seção relevante para o tipo de certificado a ser configurado. Por exemplo, você pode pesquisar pela palavra-chave cert.

  5. Usando o exemplo do modelo de configuração, configure o certificado de identidade do dispositivo ou os arquivos da autoridade de certificação de borda. O padrão de exemplo é:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Aplicar a configuração

    sudo iotedge config apply
    

Para evitar erros quando os certificados expirarem, lembre-se de atualizar manualmente os arquivos e a configuração antes da expiração do certificado.

Exemplo: Usar arquivos de certificado de identidade de dispositivo do provedor PKI

Solicite um certificado de cliente TLS e uma chave privada do seu provedor de PKI.

Requisitos do certificado de identidade do dispositivo:

  • Extensões de certificado de cliente padrão: extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • Identificadores de chave para ajudar a distinguir entre autoridades de certificação emissoras com o mesmo CN para rotação de certificados de autoridades de certificação.
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always

Verifique se o nome comum (CN) corresponde ao ID do dispositivo IoT Edge registrado no Hub IoT ou ao ID de registro no DPS. Por exemplo, no seguinte certificado de identidade do dispositivo, Subject: CN = my-device é o campo importante que deve corresponder.

Exemplo de certificado de identidade do dispositivo:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Gorjeta

Para testar sem acesso a arquivos de certificado fornecidos por uma PKI, consulte Criar certificados de demonstração para testar recursos do dispositivo para gerar um certificado de identidade de dispositivo de não-produção de curta duração e uma chave privada.

Exemplo de configuração ao provisionar com o Hub IoT:

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Exemplo de configuração ao provisionar com DPS:

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

A sobrecarga com o gerenciamento manual de certificados pode ser arriscada e propensa a erros. Para produção, recomenda-se o uso do IoT Edge com gerenciamento automático de certificados.

Gerenciar autoridade de certificação de borda

A autoridade de certificação de borda tem dois modos diferentes:

  • Guia de início rápido é o comportamento padrão. O Guia de início rápido é para testes e não é adequado para produção.
  • O modo de produção requer que você forneça sua própria fonte para o certificado de CA de borda e a chave privada.

AC de borda de início rápido

Para ajudar a começar, o IoT Edge gera automaticamente um certificado de CA de Borda quando iniciado pela primeira vez por padrão. Este certificado autoassinado destina-se apenas a cenários de desenvolvimento e teste, não de produção. Por padrão, o certificado expira após 90 dias. A expiração pode ser configurada. Esse comportamento é conhecido como autoridade de certificação de borda de início rápido.

A CA de borda de início rápido permite edgeHub que outros módulos do IoT Edge tenham um certificado de servidor válido quando o IoT Edge é instalado pela primeira vez sem configuração. O certificado é necessário porque edgeHub os módulos ou dispositivos a jusante precisam estabelecer canais de comunicação seguros. Sem a CA de Borda de início rápido, começar seria significativamente mais difícil porque você precisaria fornecer um certificado de servidor válido de um provedor PKI ou com ferramentas como openssl.

Importante

Nunca use a CA de borda de início rápido para produção porque o certificado gerado localmente nela não está conectado a uma PKI.

A segurança de uma identidade baseada em certificados deriva de uma PKI (a infraestrutura) bem operada, na qual o certificado (um documento) é apenas um componente. Uma PKI bem operada permite que a definição, o aplicativo, o gerenciamento e as imposições de políticas de segurança incluam, mas não se limitem a, emissão de certificados, revogação e gerenciamento do ciclo de vida.

Personalizar o tempo de vida da autoridade de certificação de borda de início rápido

Para configurar a expiração do certificado para algo diferente dos 90 dias padrão, adicione o valor em dias à seção Certificado de CA de Borda (Guia de início rápido) do arquivo de configuração.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Exclua o conteúdo das pastas e /var/lib/aziot/keyd/keys para remover quaisquer certificados gerados anteriormente e, /var/lib/aziot/certd/certs em seguida, aplique a configuração.

Renovar autoridade de certificação de borda de início rápido

Por padrão, o IoT Edge renova automaticamente o certificado de CA de borda de início rápido quando estiver em 80% do tempo de vida do certificado. Por exemplo, se um certificado tiver um tempo de vida de 90 dias, o IoT Edge regenerará automaticamente o certificado de CA de Borda em 72 dias a partir da emissão.

Para alterar a lógica de renovação automática, adicione as seguintes configurações à seção Certificado de autoridade de certificação de borda em config.toml. Por exemplo:

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

CA de borda em produção

Depois de passar para um cenário de produção ou criar um dispositivo de gateway, você não poderá mais usar a CA de Borda de início rápido.

Uma opção é fornecer seus próprios certificados e gerenciá-los manualmente. No entanto, para evitar o processo de gerenciamento manual de certificados arriscado e propenso a erros, use um servidor EST sempre que possível.

Atenção

O nome comum (CN) do certificado de CA de Borda não pode corresponder ao parâmetro de nome de host do dispositivo definido no arquivo de configuração do dispositivo config.toml ou ao ID do dispositivo registrado no Hub IoT.

Planejar a renovação da autoridade de certificação de borda

Quando o certificado da autoridade de certificação de borda é renovado, todos os certificados emitidos como certificados de servidor de módulo são regenerados. Para fornecer novos certificados de servidor aos módulos, o IoT Edge reinicia todos os módulos quando o certificado da autoridade de certificação de borda é renovado.

Para minimizar possíveis efeitos negativos da reinicialização do módulo, planeje renovar o certificado de CA de Borda em um momento específico (por exemplo, threshold = "10d") e notifique os dependentes da solução sobre o tempo de inatividade.

Exemplo: usar arquivos de certificado de CA de Borda do provedor PKI

Solicite os seguintes arquivos do seu provedor de PKI:

  • O certificado de autoridade de certificação raiz da PKI
  • Um certificado de emissão/AC e chave privada associada

Para que o certificado de autoridade de certificação emissora se torne CA de Borda, ele deve ter estas extensões:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

Exemplo do certificado de CA de borda resultante:

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Depois de receber os arquivos mais recentes, atualize o pacote de confiança:

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

Em seguida, configure o IoT Edge para usar os arquivos de certificado e chave privada:

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

Se você já usou outros certificados para o IoT Edge no dispositivo antes, exclua os arquivos e /var/lib/aziot/certd/certs as chaves privadas associadas aos certificados (não todas as chaves) no /var/lib/aziot/keyd/keys. O IoT Edge os recria com o novo certificado de autoridade de certificação fornecido.

Essa abordagem requer que você atualize manualmente os arquivos à medida que o certificado expira. Para evitar esse problema, considere usar o EST para gerenciamento automático.

Gerenciamento automático de certificados com o servidor EST

O IoT Edge pode interagir com um servidor de Inscrição por Transporte Seguro (EST) para emissão e renovação automática de certificados. O uso do EST é recomendado para a produção, pois substitui a necessidade de gerenciamento manual de certificados, que pode ser arriscado e propenso a erros. Ele pode ser configurado globalmente e substituído para cada tipo de certificado.

Nesse cenário, espera-se que o certificado de inicialização e a chave privada sejam de longa duração e potencialmente instalados no dispositivo durante a fabricação. O IoT Edge usa as credenciais de bootstrap para autenticar no servidor EST para a solicitação inicial emitir um certificado de identidade para solicitações subsequentes e para autenticação no DPS ou no Hub IoT.

  1. Obtenha acesso a um servidor EST. Se você não tiver um servidor EST, use uma das seguintes opções para iniciar o teste:

  2. No arquivo de config.tomlconfiguração do dispositivo IoT Edge , configure o caminho para um certificado raiz confiável que o IoT Edge usa para validar o certificado TLS do servidor EST. Esta etapa é opcional se o servidor EST tiver um certificado TLS raiz publicamente confiável.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Forneça uma URL padrão para o servidor EST. No config.toml, adicione a seguinte seção com a URL do servidor EST:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Para configurar o certificado EST para autenticação, adicione a seguinte seção com o caminho para o certificado e a chave privada:

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. Aplique as alterações de configuração.

    sudo iotedge config apply
    

As configurações em [cert_issuance.est.identity_auto_renew] são abordadas na próxima seção.

Autenticação de nome de utilizador e palavra-passe

Se a autenticação no servidor EST usando o certificado não for possível, você poderá usar um segredo compartilhado ou nome de usuário e senha.

[cert_issuance.est.auth]
username = "username"
password = "password"

Configurar parâmetros de renovação automática

Em vez de gerenciar manualmente os arquivos de certificado, o IoT Edge tem a capacidade interna de obter e renovar certificados antes do vencimento. A renovação do certificado requer um método de emissão que o IoT Edge possa gerenciar. O registro no servidor de Transporte Seguro (EST) é um método de emissão, mas o IoT Edge também pode renovar automaticamente a autoridade de certificação de início rápido por padrão. A renovação do certificado é configurada por tipo de certificado.

  1. No config.toml, localize a seção relevante para o tipo de certificado a ser configurado. Por exemplo, você pode pesquisar pela palavra-chave auto_renew.

  2. Usando o exemplo do modelo de configuração, configure o certificado de identidade do dispositivo, a CA de borda ou os certificados de identidade EST. O padrão de exemplo é:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Aplicar a configuração

    sudo iotege config apply
    

A tabela a seguir lista o que cada opção faz auto_renew :

Parâmetro Description
rotate_key Controla se a chave privada deve ser girada quando o IoT Edge renova o certificado.
threshold Define quando o IoT Edge deve começar a renovar o certificado. Pode ser especificado como:
- Percentagem: inteiro entre 0 e 100 seguido de %. A renovação começa em relação ao tempo de vida do certificado. Por exemplo, quando definido como 80%, um certificado válido por 100 dias inicia a renovação 20 dias antes de expirar.
- Tempo absoluto: inteiro seguido de min (minutos) ou day (dias). A renovação começa em relação ao tempo de expiração do certificado. Por exemplo, quando definido para 4day quatro dias ou 10min por 10 minutos, o certificado começa a ser renovado nesse momento antes de expirar. Para evitar erros de configuração não intencionais em que o tempo de vida do threshold certificado é maior do que o tempo de vida do certificado, recomendamos o uso de porcentagem sempre que possível.
retry Controla a frequência com que a renovação deve ser repetida em caso de falha. Como threshold, ele também pode ser especificado como uma porcentagem ou tempo absoluto usando o mesmo formato.

Exemplo: renovar o certificado de identidade do dispositivo automaticamente com EST

Para usar o EST e o IoT Edge para emissão e renovação automática de certificados de identidade de dispositivo, o que é recomendado para produção, o IoT Edge deve provisionar como parte de um grupo de registro baseado em CA do DPS. Por exemplo:

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

A renovação automática da AC de Borda deve ser habilitada quando o método de emissão estiver definido como EST. A expiração da autoridade de certificação de borda deve ser evitada, pois quebra muitas funcionalidades do IoT Edge. Se uma situação exigir controle total sobre o ciclo de vida do certificado da AC de Borda, use o método manual de gerenciamento da CA de Borda.

Não use EST ou auto_renew com outros métodos de provisionamento, incluindo provisionamento manual X.509 com Hub IoT e DPS com registro individual. O IoT Edge não pode atualizar impressões digitais de certificados no Azure quando um certificado é renovado, o que impede que o IoT Edge se reconecte.

Exemplo: gerenciamento automático de CA de borda com EST

Use a emissão e renovação automática de CA de borda EST para produção. Depois que o servidor EST estiver configurado, você poderá usar a configuração global ou substituí-la de forma semelhante a este exemplo:

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

Certificados de servidor de módulo

O Edge Daemon emite certificados de identidade e servidor de módulo para uso pelos módulos de Borda. Continua sendo responsabilidade dos módulos de Borda renovar sua identidade e certificados de servidor conforme necessário.

Renovação

Os certificados de servidor podem ser emitidos fora do certificado da autoridade de certificação de borda. Independentemente do método de emissão, esses certificados devem ser renovados pelo módulo. Se você desenvolver um módulo personalizado, deverá implementar a lógica de renovação no módulo.

O módulo edgeHub suporta um recurso de renovação de certificado. Você pode configurar a renovação do certificado do servidor do módulo edgeHub usando as seguintes variáveis de ambiente:

  • ServerCertificateRenewAfterInMs: define a duração em milissegundos quando o certificado do servidor edgeHub é renovado, independentemente do tempo de expiração do certificado.
  • MaxCheckCertExpiryInMs: define a duração em milissegundos quando o serviço edgeHub verifica a expiração do certificado do servidor edgeHub . Se a variável estiver definida, a verificação acontece independentemente do tempo de expiração do certificado.

Para obter mais informações sobre as variáveis de ambiente, consulte Variáveis de ambiente EdgeHub e EdgeAgent.

Alterações na versão 1.2 e posteriores

  • O certificado da autoridade de certificação do dispositivo foi renomeado como certificado da autoridade de certificação de borda.
  • O certificado da autoridade de certificação de carga de trabalho foi preterido. Agora, o gerenciador de segurança do IoT Edge gera o certificado do servidor do hub edgeHub IoT Edge diretamente do certificado da CA de Borda, sem o certificado da CA de carga de trabalho intermediária entre eles.
  • O arquivo de configuração padrão tem um novo nome e local, de /etc/iotedge/config.yaml para por /etc/aziot/config.toml padrão. O iotedge config import comando pode ser usado para ajudar a migrar informações de configuração do local antigo e da sintaxe para o novo.

Próximos passos

A instalação de certificados em um dispositivo IoT Edge é uma etapa necessária antes de implantar sua solução em produção. Saiba mais sobre como Preparar-se para implantar sua solução IoT Edge em produção.