Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 40. Conversão de formatos de certificados para trabalhar com IdM

Esta história de usuário descreve como garantir que você como administrador do sistema IdM esteja usando o formato correto de um certificado com comandos específicos de IdM. Isto é útil, por exemplo, nas seguintes situações:

40.1. Formatos e codificações de certificados na IdM

A autenticação do certificado incluindo a autenticação do cartão inteligente no IdM prossegue comparando o certificado que o usuário apresenta com o certificado, ou dados do certificado, que são armazenados no perfil de IdM do usuário.

Configuração do sistema

O que está armazenado no perfil do IdM é apenas o certificado, não a chave privada correspondente. Durante a autenticação, o usuário também deve mostrar que está de posse da chave privada correspondente. O usuário faz isso apresentando um arquivo PKCS #12 que contém tanto o certificado como a chave privada ou apresentando dois arquivos: um que contém o certificado e o outro que contém a chave privada.

Portanto, processos como carregar um certificado em um perfil de usuário só aceitam arquivos de certificado que não contenham a chave privada.

Da mesma forma, quando um administrador de sistema lhe fornece um certificado CA externo, ele fornecerá apenas os dados públicos: o certificado sem a chave privada. O utilitário ipa-advise para configurar o servidor IdM ou o cliente IdM para autenticação de cartão inteligente espera que o arquivo de entrada contenha o certificado da CA externa, mas não a chave privada.

Codificações de certificados

Há duas codificações comuns de certificados: Correio Eletrônico Privativo (PEM) e Regras de Codificação Distintas (DER). O formato base64 é quase idêntico ao formato PEM, mas não contém o cabeçalho e rodapé -----BEGIN CERTIFICATE-----/-----END CERTIFICATE-----.

Um certificado que foi codificado usando DER é um arquivo de certificado digital binário X509. Como um arquivo binário, o certificado não é legível por humanos. DER arquivos às vezes usam a extensão .der, mas arquivos com as extensões .crt e .cer também às vezes contêm certificados DER. DER arquivos contendo chaves podem ser nomeados .key.

Um certificado que foi codificado usando PEM Base64 é um arquivo legível por humanos. O arquivo contém dados blindados ASCII (Base64) prefixados com uma linha " .key BEGIN ...". PEM arquivos às vezes usam a extensão de nome de arquivo .pem, mas arquivos com as extensões de nome de arquivo .crt e .cer às vezes também contêm certificados PEM. PEM arquivos contendo chaves podem ser nomeados ----- .

Diferentes comandos ipa têm diferentes limitações em relação aos tipos de certificados que aceitam. Por exemplo, o comando ipa user-add-cert só aceita certificados codificados no formato base64, mas ipa-server-certinstall aceita PEM, DER, PKCS #7, PKCS #8 e PKCS #12 certificados.

Tabela 40.1. Codificações de certificados

Formato de codificaçãoLegível para humanosExtensões de nomes de arquivos comunsExemplo de comandos IdM aceitando o formato de codificação

PEM/base64

Sim

.pem, .crt, .cer

ipa user-add-cert, ipa-server-certinstall, ..

DER

Não

.der, .crt, .cer

ipa-server-certinstall, ..

Seção 40.4, “Comandos e formatos relacionados a certificados no IdM” lista ainda ipa comandos com os formatos de certificado que os comandos aceitam.

Autenticação do usuário

Ao utilizar a interface web para acessar o IdM, o usuário prova que está de posse da chave privada correspondente ao certificado, tendo ambas armazenadas no banco de dados do navegador.

Ao utilizar o CLI para acessar o IdM, o usuário prova que está de posse da chave privada correspondente ao certificado por um dos seguintes métodos:

  • O usuário acrescenta, como valor do parâmetro X509_user_identity do comando kinit -X, o caminho para o módulo smart card que está conectado ao smart card que contém tanto o certificado quanto a chave:

    $ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' idm_user
  • O usuário adiciona dois arquivos como os valores do parâmetro X509_user_identity do comando kinit -X, um contendo o certificado e o outro a chave privada:

    $ kinit -X X509_user_identity='FILE:`/path/to/cert.pem,/path/to/cert.key`' idm_user

Comandos de certificados úteis

Para visualizar os dados do certificado, tais como o sujeito e o emissor:

$ openssl x509 -noout -text -in ca.pem

Para comparar em que linhas dois certificados diferem:

$ diff cert1.crt cert2.crt

Para comparar em quais linhas dois certificados diferem com a saída exibida em duas colunas:

$ diff cert1.crt cert2.crt -y