Certificados X.509
Os certificados X.509 são documentos digitais que representam um usuário, um computador, um serviço ou um dispositivo. Uma autoridade de certificação (AC), AC subordinada ou autoridade de registro emite certificados X.509. Os certificados contêm a chave pública do titular do certificado. Eles não contêm a chave privada da entidade que precisa ser armazenada com segurança. O RFC 5280 documenta certificados de chave pública, incluindo seus campos e extensões. Os certificados de chave pública são assinados digitalmente e geralmente contêm as seguintes informações:
- Informações sobre a entidade do certificado
- A chave pública que corresponde à chave privada da entidade
- Informações sobre a AC emissora
- Os algoritmos de criptografia e/ou assinatura digital com suporte
- Informações para determinar a revogação e o status de validade do certificado
Campos do certificado
Existem três versões incrementais do padrão de certificado X.509, e cada versão subsequente adicionou campos de certificado ao padrão:
- A versão 1 (v1), publicada em 1988, segue o padrão inicial X.509 para certificados.
- A versão 2 (v2), publicada em 1993, adiciona dois campos aos campos incluídos na versão 1.
- A versão 3 (v3), publicada em 2008, representa a versão atual do padrão X.509. Essa versão adiciona suporte para extensões de certificado.
Essa seção é uma referência geral para os campos de certificado e extensões de certificado disponíveis em certificados X.509. Para obter mais informações sobre campos de certificado e extensões de certificado, incluindo tipos de dados, restrições e outros detalhes, confira a especificação RFC 5280.
Campos da versão 1
A tabela a seguir descreve os campos de certificado da Versão 1 para certificados X.509. Todos os campos incluídos nessa tabela estão disponíveis nas versões subsequentes do certificado X.509.
Nome | Descrição |
---|---|
Versão | Um número inteiro que identifica o número de versão do certificado. |
Número de série | Um número inteiro que representa o número exclusivo de cada certificado emitido por uma autoridade de certificação (CA). |
Signature | O identificador do algoritmo criptográfico usado pela CA para assinar o certificado. O valor inclui o identificador do algoritmo e quaisquer parâmetros opcionais usados por esse algoritmo, se aplicável. |
Emissor | O nome diferenciado (DN) da CA emissora do certificado. |
Validade | O período de tempo inclusivo para o qual o certificado é válido. |
Assunto | O nome diferenciado (DN) da entidade do certificado. |
Informações de Chave Pública da Entidade | A chave pública da entidade do certificado. |
Campos da versão 2
A tabela a seguir descreve os campos adicionados para a Versão 2, contendo informações sobre o emissor do certificado. No entanto, esses campos são raramente usados. Todos os campos incluídos nessa tabela estão disponíveis nas versões subsequentes do certificado X.509.
Nome | Descrição |
---|---|
ID Exclusiva do Emissor | Um identificador exclusivo que representa a CA emissora, conforme definido pela CA emissora. |
ID Exclusiva da Entidade | Um identificador exclusivo que representa a entidade do certificado, conforme definido pela CA emissora. |
Campos da versão 3
A tabela a seguir descreve o campo incluído para a Versão 3, representando uma coleção de extensões de certificado X.509.
Nome | Descrição |
---|---|
Extensões | Uma coleção de extensões de certificado padrão e específicas da Internet. Para obter mais informações sobre as extensões de certificado disponíveis para certificados X.509 v3, confira as Extensões de certificado. |
Extensões de certificado
As extensões de certificado, introduzidas na Versão 3, fornecem métodos para associar mais atributos a usuários ou chaves públicas e para gerenciar relacionamentos entre as autoridades de certificação. Para obter mais informações sobre extensões de certificado, confira a seção Extensões de Certificado da especificação RFC 5280.
Extensões padrão
O padrão X.509 define as extensões incluídas nesta seção, para uso na infraestrutura de chave pública (PKI) da Internet.
Nome | Descrição |
---|---|
Identificador da chave da autoridade | Um identificador que representa a entidade do certificado e o número de série do certificado CA que emitiu esse certificado ou um hash de chave pública da CA emissora. |
Identificador da chave de assunto | Um hash de chave pública do certificado atual. |
Uso de Chave | Um valor de bitmap que define os serviços para os quais um certificado pode ser usado. |
Período de Uso da Chave Privada | O período de validade da parte da chave privada de um par de chaves. |
Políticas de certificado | Uma coleção de informações de política, usada para validar a entidade do certificado. |
Mapeamentos de Política | Uma coleção de mapeamentos de política, cada um dos quais mapeia uma política em uma organização para a política em outra organização. |
Nome Alternativo da Entidade | Uma coleção de nomes alternativos para a entidade. |
Nome Alternativo para o Emissor | Uma coleção de nomes alternativos para a CA emissora. |
Atributos do Diretório de Entidade | Uma coleção de atributos de um diretório X.500 ou LDAP. |
Restrições Básicas | Uma coleção de restrições que permitem que o certificado designe se é emitido para uma CA ou para um usuário, computador, dispositivo ou serviço. Essa extensão também inclui uma restrição de comprimento de caminho que limita o número de ACs subordinadas que podem existir. |
Restrições de Nome | Uma coleção de restrições que designam quais namespaces são permitidos em um certificado emitido pela CA. |
Restrições de Política | Uma coleção de restrições que podem ser usadas para proibir mapeamentos de política entre CAs. |
Uso Estendido de Chave | Uma coleção de valores de finalidade de chave que indicam como a chave pública de um certificado pode ser usada, além das finalidades identificadas na extensão Uso de Chave. |
Pontos de Distribuição de CRL | Uma coleção de URLs em que a lista de certificados revogados (CRL) base é publicada. |
Inibir anyPolicy | Inibe o uso do OID (2.5.29.32.0) de Todas as Políticas de Emissão em certificados de CA subordinadas |
CRL mais recente | Essa extensão, também conhecida como Ponto de Distribuição da CRL Delta, contém uma ou mais URLs nas quais a CRL delta da CA emissora é publicada. |
Extensões de Internet Privada
As extensões incluídas nessa seção são semelhantes às extensões padrão e podem ser usadas para direcionar aplicativos para informações online sobre a CA emissora ou a entidade do certificado.
Nome | Descrição |
---|---|
Acesso à Informação da Autoridade | Uma coleção de entradas que descrevem o formato e a localização de informações adicionais fornecidas pela CA emissora. |
Acesso à Informação da Entidade | Uma coleção de entradas que descrevem o formato e a localização de informações adicionais fornecidas pela entidade do certificado. |
Formatos de certificado
Os certificados podem ser salvos em diversos formatos. A autenticação do Hub IoT do Azure normalmente usa os formatos PEM (Privacy-Enhanced Mail) e PFX (Personal Information Exchange). A tabela a seguir descreve os arquivos e formatos comumente usados para representar certificados.
Formatar | Descrição |
---|---|
Certificado binário | Um certificado binário em formato bruto usando a codificação ASN.1 DER (Distinguished Encoding Rules). |
Formato ASCII PEM | Um arquivo de certificado PEM (.pem) contém um certificado codificado em Base64 começando com -----BEGIN CERTIFICATE----- e terminando com -----END CERTIFICATE----- . Um dos formatos mais comuns para certificados X.509, o formato PEM é exigido pelo Hub IoT ao carregar determinados certificados, como certificados do dispositivo. |
Chave PEM ASCII | Contém uma chave DER codificada em Base64, opcionalmente com mais metadados sobre o algoritmo usado para proteção de senha. |
Certificado PKCS nº 7 | Um formato projetado para o transporte de dados assinados ou criptografados. Pode incluir toda a cadeia de certificados. ORFC 2315 define este formato. |
Chave PKCS nº 8 | O formato para um armazenamento de chave privada. ORFC 5208 define este formato. |
Chave e certificado PKCS nº 12 | Um formato complexo que pode armazenar e proteger uma chave e toda a cadeia de certificados. É comumente usado com uma extensão .p12 ou .pfx. O PKCS nº 12 é sinônimo do formato PFX. ORFC 7292 define este formato. |
Certificados autoassinados
Você pode autenticar um dispositivo em seu hub IoT para fins de teste, usando dois certificados autoassinados. Este tipo de autenticação é às vezes chamado de autenticação de impressão digital porque os certificados são identificados por valores de hash calculados chamados de impressões digitais ou impressões. Estes valores de hash calculados são usados pelo Hub IoT para autenticar seus dispositivos.
Importante
Recomendamos que você use certificados assinados por uma Autoridade de Certificação (AC), mesmo para fins de teste. Nunca use certificados autoassinados na produção.
Criará um certificado autoassinado
Você pode usar o OpenSSL para criar certificados autoassinados. As etapas seguintes mostram como executar comandos OpenSSL em um shell de bash para criar um certificado autoassinado e recuperar uma impressão digital de certificado que pode ser usada para autenticar seu dispositivo no Hub IoT.
Observação
Se você quiser usar certificados autoassinados para testes, você deve criar dois certificados para cada dispositivo.
Execute o seguinte comando para gerar uma chave privada e criar um arquivo de chave privada (.key) codificada por PEM, substituindo os seguintes espaços reservados por seus valores correspondentes. A chave privada gerada pelo seguinte comando usa o algoritmo RSA com criptografia de 2048 bits.
{KeyFile}. O nome de seu arquivo com chave privada.
openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
Execute o seguinte comando para gerar uma solicitação de assinatura de certificado (CSR) de PKCS nº 10 e criar um arquivo CSR (.csr), substituindo os seguintes espaços reservados por seus valores correspondentes. Certifique-se de especificar a identificação do dispositivo IoT para seu certificado autoassinado quando solicitado.
{KeyFile}. O nome de seu arquivo com chave privada.
{CsrFile}. O nome de seu arquivo CSR.
{DeviceID}. O nome de seu dispositivo IoT.
openssl req -new -key {KeyFile} -out {CsrFile} Country Name (2 letter code) [XX]:. State or Province Name (full name) []:. Locality Name (eg, city) [Default City]:. Organization Name (eg, company) [Default Company Ltd]:. Organizational Unit Name (eg, section) []:. Common Name (eg, your name or your server hostname) []:{DeviceID} Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:.
Execute o seguinte comando para examinar e verificar seu CSR, substituindo os seguintes espaços reservados pelos seus valores correspondentes.
{CsrFile}. O nome de seu arquivo de certificado.
openssl req -text -in {CsrFile} -verify -noout
Execute o seguinte comando para gerar um certificado autoassinado e criar um arquivo de certificado codificado (.crt) de PEM, substituindo os seguintes espaços reservados pelos seus valores correspondentes. O comando converte e assina seu CSR com sua chave privada, gerando um certificado autoassinado que expira em 365 dias.
{KeyFile}. O nome de seu arquivo com chave privada.
{CsrFile}. O nome de seu arquivo CSR.
{CrtFile}. O nome de seu arquivo de certificado.
openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
Execute o seguinte comando para recuperar a impressão digital do certificado, substituindo os seguintes espaços reservados pelos seus valores correspondentes. A impressão digital de um certificado é um valor de hash calculado que é exclusivo para esse certificado. Você precisa da impressão digital para configurar seu dispositivo IoT no Hub IoT para testes.
{CrtFile}. O nome de seu arquivo de certificado.
openssl x509 -in {CrtFile} -noout -fingerprint
Verificar o certificado manualmente após o upload
Ao carregar seu certificado AC (autoridade de certificação) raiz ou certificado AC subordinado em seu hub IoT, é possível escolher a opção de verificação automática do certificado. Se você não optou por verificar automaticamente o certificado durante o upload, ele será mostrado com o status definido como Não verificado. Execute as etapas a seguir para verificar manualmente o certificado.
Selecione o certificado para ver a caixa de diálogo Detalhes do Certificado.
Escolha Gerar Código de Verificação na caixa de diálogo.
Copie o código de verificação para a área de transferência. Use esse código de verificação como o assunto do certificado nas etapas posteriores. Por exemplo, se o código de verificação for
75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3
, adicione-o como a entidade do certificado, conforme mostrado na próxima etapa.Há três maneiras de gerar um certificado de verificação:
Se estiver usando o script do PowerShell fornecido pela Microsoft, execute
New-CACertsVerificationCert "<verification code>"
para criar um certificado chamadoVerifyCert4.cer
, substituindo<verification code>
pelo código de verificação gerado. Para obter mais informações, consulte Gerenciando certificados de AC de teste para amostras e tutoriais no repositório GitHub para o SDK do dispositivo Hub IoT do Azure para C.Por exemplo, se estiver usando o script do Bash fornecido pela Microsoft, execute
./certGen.sh create_verification_certificate "<verification code>"
para criar um certificado chamado verification-code.cert.pem, substituindo<verification code>
pelo código de verificação gerado anteriormente. Para obter mais informações, confira Gerenciando certificados de AC de teste para exemplos e tutoriais no repositório GitHub para o SDK do dispositivo Hub IoT do Azure para C.Se estiver usando OpenSSL para gerar os certificados, primeiro, você precisará gerar uma chave privada e depois um arquivo CSR (solicitação de assinatura de certificado). No seguinte exemplo, substitua
<verification code>
pelo código de verificação gerado:
openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048 openssl req -new -key pop.key -out pop.csr ----- Country Name (2 letter code) [XX]:. State or Province Name (full name) []:. Locality Name (eg, city) [Default City]:. Organization Name (eg, company) [Default Company Ltd]:. Organizational Unit Name (eg, section) []:. Common Name (eg, your name or your server hostname) []:<verification code> Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Em seguida, crie um certificado usando o arquivo de configuração apropriado para a AC raiz ou a AC subordinada e o arquivo CSR. O exemplo a seguir demonstra como usar OpenSSL para criar o certificado com base em um arquivo de configuração de AC raiz e no arquivo CSR.
openssl ca -config rootca.conf -in pop.csr -out pop.crt -extensions client_ext
Para obter mais informações, confira Tutorial: Criar e carregar certificados para teste.
Selecione o novo certificado na exibição Detalhes do Certificado.
Depois que o certificado for carregado, selecione Verificar. O status do certificado deve ser alterado para Verificado.
Para obter mais informações
Para obter mais informações sobre certificados X.509 e como eles são usados no IoT Hub, confira os seguintes artigos: