Tutorial

Como instalar e configurar uma autoridade de certificação (CA) no CentOS 8

CentOS 8

Introdução

Uma autoridade de certificação (CA, do inglês Certificate Authority) é uma entidade responsável por emitir certificados digitais para verificar identidades na internet. Embora as CAs públicas sejam uma escolha popular para a verificação da identidade de sites e outros serviços oferecidos ao público em geral, as CAs privadas são normalmente usadas para grupos fechados e serviços privados.

A criação de uma autoridade de certificação privada permitirá que você configure, teste e execute programas que exigem conexões criptografadas entre um cliente e um servidor. Com uma CA privada, você pode emitir certificados para usuários, servidores, ou programas e serviços individuais em sua infraestrutura.

Alguns exemplos de programas no Linux que usam sua própria CA privada são o OpenVPN e o Puppet. Você também pode configurar seu servidor Web para que use certificados emitidos por uma CA privada, de modo a fazer com que os ambientes de desenvolvimento e de preparo correspondam aos servidores de produção que usam o TLS para criptografar conexões.

Neste guia, vamos aprender como configurar uma autoridade de certificação privada em um servidor do CentOS 8. Além disso, aprenderemos como gerar e assinar um certificado de teste usando sua nova CA. Você também aprenderá como importar o certificado público do servidor da CA para o armazenamento de certificados do seu sistema operacional. Dessa forma, poderá verificar a cadeia de confiança entre a CA e os servidores remotos ou usuários. Por fim, aprenderá a como revogar certificados e distribuir uma Lista de revogação de certificados, garantindo que somente usuários e sistemas autorizados possam usar os serviços que contam com sua CA.

Pré-requisitos

Para acompanhar este tutorial, você precisará de um servidor do CentOS 8 com um non-root user com privilégios sudo habilitado e de um firewall configurado com o firewalld. Para concluir tal configuração, você pode seguir nosso guia de Configuração inicial de servidor com o CentOS 8.

Esse servidor será chamado de Servidor CA ao longo deste tutorial.

Certifique-se de que o Servidor CA seja um sistema autônomo. Ele será usado apenas para importar, assinar e revogar solicitações de certificados. Ele não deve executar nenhum outro serviço e, de preferência, deve ficar off-line ou desligado quando você não estiver trabalhando ativamente com sua CA.

Nota: a última seção deste tutorial é opcional - caso queira aprender sobre como assinar e revogar certificados. Se escolher completar esses passos práticos, você precisará de um segundo servidor com CentOS 8, ou poderá usar seu próprio computador Linux local executando em CentOS 8, Fedora ou um derivado do RedHat.

Passo 1 — Instalando o Easy-RSA

A primeira tarefa neste tutorial é instalar o conjunto de scripts easy-rsa em seu Servidor CA. O easy-rsa é uma ferramenta de gerenciamento de autoridades de certificação que você usará para gerar uma chave privada e um certificado de raiz público. Em seguida, você os usará para assinar solicitações de clientes e servidores que contarão com sua CA.

O pacote easy-rsa não está disponível por padrão no CentOS 8. Sendo assim, você precisará habilitar os Pacotes Extras para obter o repositório do Linux Empresarial (EPEL, do inglês Extra Packages for Enterprise Linux). O EPEL é gerenciado pelo Projeto Fedora e contém pacotes não padronizados, mas populares para o Fedora, CentOS e outras distribuições do Linux que usam o formato RPM de pacotes. Faça login no seu Servidor CA com o non-root user com privilégios sudo que você criou durante os passos de configuração inicial e execute o seguinte:

  • sudo dnf install epel-release

Será solicitado que você baixe e instale o pacote. Pressione y para confirmar que deseja instalar o pacote.

Agora, instale o pacote easy-rsa, digitando novamente y no prompt:

  • sudo dnf install easy-rsa

Neste ponto, você tem tudo o que precisa configurado e pronto para usar o Easy-RSA. No próximo passo, você criará uma Infraestrutura de chaves públicas e, em seguida, começará a criar sua autoridade de certificação.

Passo 2 — Preparando um diretório de infraestrutura de chaves públicas

Agora que você instalou o easy-rsa, é hora de criar uma Infraestrutura de chaves públicas (PKI, do inglês Public Key Infrastructure) esqueleto no Servidor CA. Certifique-se de que você ainda está conectado como seu non-root user e crie um diretório easy-rsa. Certifique-se de não estar usando o sudo para executar nenhum dos comandos a seguir, pois seu usuário regular deve gerenciar e interagir com a CA sem privilégios elevados.

  • mkdir ~/easy-rsa

Isso criará um diretório chamado easy-rsa em sua pasta inicial. Usaremos esse diretório para criar links simbólicos apontando para os arquivos de pacotes do easy-rsa que instalamos no passo anterior. Esses arquivos estão localizados na pasta /usr/share/easy-rsa/3 no Servidor CA.

Crie os links simbólicos com o comando ln:

  • ln -s /usr/share/easy-rsa/3/* ~/easy-rsa/

Nota: embora outros guias possam instruí-lo a copiar os arquivos de pacotes do easy-rsa para o seu diretório PKI, este tutorial adota uma abordagem com links simbólicos. Como resultado, todas as atualizações realizadas no pacote easy-rsa serão refletidas automaticamente nos scripts do seu PKI.

Para restringir o acesso ao seu novo diretório PKI, certifique-se de que apenas o proprietário possa acessá-lo usando o comando chmod:

  • chmod 700 /home/sammy/easy-rsa

Por fim, inicialize o PKI dentro do diretório easy-rsa:

  • cd ~/easy-rsa
  • ./easyrsa init-pki
Output
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/easy-rsa/pki

Após completar esta seção, você terá um diretório com todos os arquivos necessários para criar uma autoridade de certificação. Na próxima seção, você criará a chave privada e o certificado público para sua CA.

Passo 3 — Criando uma autoridade de certificação

Antes de criar a chave privada e o certificado de sua CA, você precisa criar e preencher um arquivo chamado vars com alguns valores padrão. Primeiro, você irá cd (do inglês “change directory”, alterar o diretório) para o diretório do easy-rsa. Depois disso, criará e editará o arquivo vars com o nano ou o editor de texto de sua preferência.

O editor de texto padrão que vem com o CentOS 8 é o vi. O vi é um editor de texto extremamente eficaz, mas pode ser um pouco tedioso para os usuários sem experiência com ele. Talvez você queira instalar um editor mais fácil de usar como o nano, para facilitar a edição de arquivos de configuração no seu servidor CentOS 8:

  • sudo dnf install nano

Quando você for solicitado a instalar o nano, digite y para continuar com os passos de instalação. Agora, está pronto para editar o arquivo vars:

  • cd ~/easy-rsa
  • nano vars

Assim que o arquivo for aberto, cole as seguintes linhas e edite cada valor destacado para que reflitam as informações da sua própria organização. A parte importante aqui é garantir que você não deixe nenhum dos valores em branco:

~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "NewYork" set_var EASYRSA_REQ_CITY "New York City" set_var EASYRSA_REQ_ORG "DigitalOcean" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "Community"

Quando você terminar, salve e feche o arquivo. Caso esteja usando o nano, faça isso pressionando CTRL+X, depois Y e ENTER para confirmar. Você está pronto para criar sua CA.

Para criar o par de chaves raiz público-privada para sua autoridade de certificação, execute novamente o comando ./easy-rsa. Desta vez, com a opção build-ca:

  • ./easyrsa build-ca

No resultado, você verá algumas linhas sobre a versão do OpenSSL e será solicitado a digitar uma frase secreta para o seu par de chaves. Certifique-se de escolher uma frase secreta forte e anote-a em um local seguro. Você terá que digitar a frase secreta sempre que precisar interagir com sua CA. Por exemplo, para assinar ou revogar um certificado.

Será solicitado que você confirme o nome comum (CN, do inglês Common Name) para sua CA. O CN é o nome usado para se referir a essa máquina no contexto da autoridade de certificados. Você pode digitar qualquer string de caracteres para o nome comum da CA, mas, para simplificar as coisas, pressione ENTER para aceitar o nome padrão.

Output
. . . Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: . . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/sammy/easy-rsa/pki/ca.crt

Nota: se você não quiser ser solicitado a colocar uma senha sempre que interagir com sua CA, é possível executar o comando build-ca com a opção nopass, desta maneira:

  • ./easyrsa build-ca nopass

Agora, você tem dois arquivos importantes — o ~/easy-rsa/pki/ca.crt e o ~/easy-rsa/pki/private/ca.key — que constituem os componentes públicos e privados de uma autoridade de certificação.

  • O ca.crt é o arquivo do certificado público da CA. Usuários, servidores e clientes usarão esse certificado para comprovarem que eles fazem parte da mesma rede de confiança. Todos os usuários e servidores que usarem sua CA precisarão de uma cópia desse arquivo. Todas as partes contarão com o certificado público para assegurar que ninguém finja ser um sistema e execute um ataque de intermediário.

  • A ca.key é a chave privada que a CA usa para assinar certificados para servidores e clientes. Se um invasor obtiver acesso à sua CA e, consequentemente, ao seu arquivo ca.key, você terá que destruir sua CA. É por isso que o arquivo ca.key deve ficar apenas em sua máquina da CA. Como medida de segurança adicional, o ideal é que a máquina da CA permaneça desconectada quando não estiver assinando as solicitações de certificados.

Com isso, sua CA estará funcionando e pronta para ser usada para assinar solicitações de certificado, além de revogar certificados.

Passo 4 — Distribuindo o certificado público da sua autoridade de certificação

Agora, sua CA está configurada e pronta para agir como uma raiz de confiança para todos os sistemas que quiser configurar para usá-la. Você pode adicionar o certificado da CA aos seus servidores OpenVPN, servidores Web, servidores de e-mail, e assim por diante. Qualquer usuário ou servidor que precise verificar a identidade de outro usuário, ou servidor de sua rede deve ter uma cópia do arquivo ca.crt importada para o armazenamento de certificados de seu respectivo sistema operacional.

Para importar o certificado público da CA em um segundo sistema Linux, como outro servidor ou um computador local, obtenha primeiro uma cópia do arquivo ca.crt do seu servidor CA. Você pode usar o comando cat para gerar isso como resultado em um terminal para, em seguida, copiar e colá-lo em um arquivo em um segundo computador que está importando o certificado. Você também pode usar ferramentas como o scp e o rsync para transferir o arquivo entre os sistemas. No entanto, usaremos a função copiar e colar com o nano neste passo, uma vez que ele funcionará em todos os sistemas.

Usando seu non-root user no Servidor CA, execute o comando a seguir:

  • cat ~/easy-rsa/pki/ca.crt

Haverá um resultado em seu terminal que é parecido com este:

Output
-----BEGIN CERTIFICATE----- MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw . . . . . . -----END CERTIFICATE-----

Copie tudo, incluindo as linhas -----BEGIN CERTIFICATE----- e -----END CERTIFICATE----- e os traços.

Em seu segundo sistema Linux, use o nano ou o editor de texto de sua preferência para abrir um arquivo chamado /tmp/ca.crt:

  • nano /tmp/ca.crt

Cole o conteúdo que acabou de copiar do Servidor CA no editor. Quando você terminar, salve e feche o arquivo. Caso esteja usando o nano, faça isso pressionando CTRL+X, depois Y e ENTER para confirmar.

Agora que você tem uma cópia do arquivo ca.crt em seu segundo sistema Linux, é hora de importar o certificado para o armazenamento de certificados de seu sistema operacional.

No CentOS, Fedora, ou outros sistemas Linux derivados do RedHat, execute os comandos a seguir para importar o certificado:

CentOS, Fedora, RedHat distributions
  • sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  • update-ca-trust

Para importar o certificado do Servidor CA em um sistema baseado em Debian ou Ubuntu, copie e cole o conteúdo do arquivo no sistema, assim como no exemplo anterior, em um arquivo chamado /tmp/ca.crt. Em seguida, copie o certificado para /usr/local/share/ca-certificates/. Depois disso, execute o comando update-ca-certificates.

Debian and Ubuntu derived distributions
  • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • update-ca-certificates

Agora, seu segundo sistema Linux confiará em qualquer certificado que tenha sido assinado pelo servidor CA.

Nota: se estiver usando sua CA com servidores Web e usar o Firefox como navegador, será necessário importar o certificado público ca.crt para o Firefox diretamente. O Firefox não usa o armazenamento de certificados do sistema operacional local. Para mais detalhes sobre como adicionar o certificado da sua CA ao Firefox, consulte o artigo de suporte do Mozilla sobre Como configurar autoridades de certificação (CAs) no Firefox.

Caso esteja usando sua CA para integrar com um ambiente Windows ou computadores desktop, consulte a documentação sobre como usar o certutil.exe para instalar um certificado CA.

Se estiver usando este tutorial como um pré-requisito de outro tutorial, ou se já estiver familiarizado com a maneira de assinar e revogar certificados, você pode parar por aqui. Caso queira aprender mais sobre como assinar e revogar certificados, então a seção opcional a seguir traz explicações detalhadas sobre cada processo.

(Opcional) — Criando solicitações de assinatura de certificado e revogando certificados

As seções a seguir do tutorial são opcionais. Caso tenha completado todos os passos anteriores, então você possui uma autoridade de certificação totalmente configurada e funcional que pode ser usada como pré-requisito para outros tutoriais. Você pode importar o arquivo ca.crt da sua CA e verificar certificados em sua rede que foram assinados por sua CA.

Se quiser praticar e aprender mais sobre como assinar solicitações de certificado e como revogar certificados, então essas seções opcionais explicarão como ambos os processos funcionam.

(Opcional) — Criando e assinando uma solicitação de certificado para praticar

Agora que você tem uma CA pronta para ser usada, pode praticar a geração de uma chave privada e uma solicitação de certificado para se familiarizar com o processo de assinatura e distribuição.

Uma solicitação de assinatura de certificado (CSR, do inglês Certificate Signing Request) consiste em três partes: uma chave pública, identificar informações sobre o sistema solicitante e uma assinatura da solicitação em si, que é criada usando a chave privada do solicitante. A chave privada será mantida em segredo e será usada para criptografar informações que qualquer um com o certificado público assinado pode, em seguida, decodificar.

Os passos a seguir serão executados em seu segundo sistema Linux, que esteja executando o CentOS, Fedora, ou outra distribuição do Linux derivada do RedHat. Ele pode ser outro servidor remoto, ou uma máquina Linux local, como um notebook ou um computador desktop. Como o easy-rsa não vem disponível por padrão em todos os sistemas, usaremos a ferramenta openssl para criar uma chave privada e certificado para praticar.

O openssl vem geralmente instalado por padrão na maioria das distribuições do Linux. Porém, para garantir que esse seja o caso, execute o seguinte em seu sistema:

  • sudo dnf install openssl

Quando for solicitado a instalar o openssl, digite y para continuar com os passos da instalação. Agora, você está pronto para criar uma CSR para praticar, usando o openssl.

O primeiro passo que você precisa completar para criar uma CSR é gerar uma chave privada. Para criar uma chave privada usando o openssl, crie um diretório practice-csr e, em seguida, gere uma chave dentro dele. Faremos essa solicitação para um servidor ficcional chamado sammy-server, em vez de criar um certificado que seja usado para identificar um usuário ou outra CA.

  • mkdir ~/practice-csr
  • cd ~/practice-csr
  • openssl genrsa -out sammy-server.key
Output
Generating RSA private key, 2048 bit long modulus (2 primes) . . . . . . e is 65537 (0x010001)

Agora que você tem uma chave privada, pode criar uma CSR correspondente, usando novamente o utilitário openssl. Você será solicitado a preencher uma série de campos como os de País, Estado e Cidade. Você pode digitar . se quiser deixar um campo em branco, mas saiba que, se essa fosse uma CSR real, seria melhor usar os valores corretos para sua localização e organização:

  • openssl req -new -key sammy-server.key -out sammy-server.req
Output
. . . ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:New York Locality Name (eg, city) [Default City]:New York City Organization Name (eg, company) [Default Company Ltd]:DigitalOcean Organizational Unit Name (eg, section) []:Community Common Name (eg, your name or your server's hostname) []:sammy-server Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

Se quiser adicionar esses valores automaticamente como parte da invocação do openssl, em vez de usar o prompt interativo, você pode enviar o argumento -subj para o OpenSSL. Certifique-se de editar os valores destacados para que correspondam à localização, organização e nome do servidor usado neste exercício prático:

  • openssl req -new -key sammy-server.key -out sammy-server.req -subj \
  • /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

Para verificar o conteúdo de uma CSR, você pode ler em um arquivo de solicitação com o openssl e examinar os campos dentro dele:

  • openssl req -in sammy-server.req -noout -subject
Output
subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

Assim que estiver satisfeito com as informações no seu certificado da prática, copie o arquivo sammy-server.req para seu servidor CA, usando o scp:

  • scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

Neste passo, você gerou uma solicitação de assinatura de certificado para um servidor fictício chamado sammy-server. Em um cenário real, a solicitação poderia vir de algo como um servidor Web de preparo ou desenvolvimento que precisa de um certificado TLS para o teste, ou poderia vir de um servidor OpenVPN que está solicitando um certificado para que os usuários possam se conectar a uma VPN. No próximo passo, vamos seguir adiante para a solicitação de assinatura de certificado usando a chave privada do Servidor CA.

(Opcional) — Assinando uma CSR

No passo anterior, você pode praticar como solicitar um certificado e uma chave para um servidor fictício. Você a copiou para o diretório /tmp em seu servidor CA, simulando o processo que você usaria se tivesse clientes ou servidores reais enviando a você solicitações de CSR que precisassem ser assinadas.

Continuando com o cenário fictício, o Servidor CA precisa agora importar o certificado da prática e assiná-lo. Assim que uma solicitação de certificado é validada pela CA e redirecionada para um servidor, os clientes que confiam na autoridade de certificação também poderão confiar no certificado recém-emitido.

Vamos operar dentro do PKI da CA onde o utilitário easy-rsa está disponível. Sendo assim, os passos de assinatura usarão o utilitário easy-rsa para facilitar as coisas, ao invés de usar o openssl diretamente, como fizemos no exemplo anterior.

O primeiro passo para assinar a CSR fictícia é importar a solicitação de certificado usando o script easy-rsa:

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output
. . . The request has been successfully imported with a short name of: sammy-server You may now use this name to perform signing operations on this request.

Agora, você pode assinar a solicitação, executando o script easyrsa com a opção sign-req, seguida pelo tipo de solicitação e o nome comum incluído na CSR. O tipo de solicitação pode ser de um cliente, server ou ca. Já que estamos praticando com um certificado para um servidor fictício, certifique-se de usar o tipo de solicitação server:

  • ./easyrsa sign-req server sammy-server

No resultado, você será solicitado a verificar se o pedido vem de uma fonte confiável. Digite yes, então pressione ENTER para confirmar:

Output
You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

Caso tenha criptografado sua chave CA, agora você será solicitado a colocar sua senha.

Com esses passos completos, você assinou a CSR sammy-server.req usando a chave privada do Servidor de CA em /home/sammy/easy-rsa/pki/private/ca.key. O arquivo sammy-server.crt resultante contém a chave pública de criptografia do servidor usado nesta prática, além de uma nova assinatura do Servidor de CA. O objetivo da assinatura é dizer a todos que confiam na CA que eles também podem confiar no certificado do sammy-server.

Se essa solicitação fosse para um servidor real, como um servidor Web ou um servidor VPN, o último passo no Servidor CA seria distribuir os novos arquivos sammy-server.crt e ca.crt do Servidor CA para o servidor remoto que fez a solicitação de CSR:

  • scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  • scp pki/ca.crt sammy@your_server_ip:/tmp

Neste ponto, você poderia usar o certificado emitido, por exemplo, com um servidor Web, um VPN, uma ferramenta de gerenciamento de configuração, sistema de banco de dados, ou para fins de autenticação de cliente.

(Opcional) — Revogando um certificado

De vez em quando, você pode precisar revogar um certificado para evitar que um usuário ou servidor o use. Talvez o notebook de alguém tenha sido roubado, um servidor Web foi comprometido, ou um empregado ou contratado deixou sua empresa.

Para revogar um certificado, o processo geral segue estes passos:

  1. Revogue o certificado com o comando ./easyrsa revoke client_name.
  2. Gere uma nova CRL com o comando ./easyrsa gen-crl.
  3. Transfira o arquivo crl.pem atualizado para o servidor ou servidores que contam com sua CA. Nesses sistemas, copie-o para o diretório ou diretórios necessários para os programas que fazem referência a ele.
  4. Reinicie todos os serviços que usam sua CA e o arquivo de CRL.

Você pode usar esse processo para revogar qualquer certificado que você tenha emitido previamente. Vamos analisar cada passo detalhadamente nas seções a seguir, começando pelo comando revoke (revogar).

Revogando um certificado

Para revogar um certificado, navegue até o diretório easy-rsa em seu servidor CA:

  • cd ~/easy-rsa

Em seguida, execute o script easyrsa com a opção revoke, seguida do nome do cliente que você deseja revogar. Seguindo o exemplo do exercício prático, acima, o nome comum do certificado é sammy-server:

  • ./easyrsa revoke sammy-server

Isso irá pedir que você confirme a revogação digitando yes:

Output
Please confirm you wish to revoke the certificate with the following subject: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes . . . Revoking Certificate 8348B3F146A765581946040D5C4D590A . . .

Observe o valor destacado na linha Revoking Certificate (Revogando Certificado). Este valor é o número de série único do certificado que está sendo revogado. Se quiser examinar a lista de revogação no último passo desta seção para verificar se o certificado está nela, você precisará deste valor.

Após confirmar a ação, a CA revogará o certificado. No entanto, os sistemas remotos que contam com a CA não têm como verificar se algum certificado foi revogado. Os usuários e os servidores ainda conseguirão usar o certificado até que a Lista de revogação de certificado (CRL, do inglês Certificate Revocation List) da CA seja distribuída a todos os sistemas que contam com CA.

No próximo passo, você gerará uma CRL ou atualizará um arquivo crl.pem existente.

Gerando uma lista de revogação de certificado

Agora que você revogou um certificado, é importante atualizar a lista de certificados revogados em seu servidor CA. Assim que tiver uma lista de revogação atualizada, você será capaz de dizer quais usuários e sistemas têm certificados válidos em sua CA.

Para gerar uma CRL, execute o comando easy-rsa com a opção gen-crl, enquanto ainda estiver dentro do diretório ~/easy-rsa:

  • ./easyrsa gen-crl

Se você tiver usado uma frase secreta ao criar seu arquivo ca.key, você será solicitado a digitá-la. O comando gen-crl gerará um arquivo chamado crl.pem, que contém a lista atualizada de certificados revogados para essa CA.

Em seguida, será necessário transferir o arquivo crl.pem atualizado para todos os servidores e clientes que contam com essa CA, sempre que você executar o comando gen-crl. De qualquer forma, os clientes e sistemas ainda conseguirão acessar os serviços e sistemas que usam sua CA, uma vez que esses serviços precisam saber sobre o status revogado do certificado.

Transferindo uma lista de revogação de certificado

Agora que você gerou uma CRL em seu servidor CA, você precisa transferi-la para os sistemas remotos que contam com sua CA. Para transferir esse arquivo para os seus servidores, use o comando scp.

Nota: este tutorial explica como gerar e distribuir uma CRL manualmente. Embora existam métodos mais robustos e automatizados para distribuir e verificar as listas de revogações, como o OCSP-Stapling, a configuração desses métodos vai além do escopo deste artigo.

Assegure-se de que esteja conectado ao seu servidor de CA com non-root user e execute o que vem a seguir, substituindo your_server_ip pelo IP ou nome DNS do seu próprio servidor:

  • scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

Agora que o arquivo está no sistema remoto, o último passo é atualizar todos os serviços com a nova cópia da lista de revogação.

Atualizando os serviços que suportam uma CRL

Listar os passos que você precisa seguir para atualizar os serviços que usam o arquivo crl.pem vai além do âmbito deste tutorial. De maneira geral, será necessário copiar o arquivo crl.pem para o local que o serviço espera e, em seguida, reiniciá-lo usando o systemctl.

Assim que tiver atualizado seus serviços com o novo arquivo crl.pem, seus serviços serão capazes de rejeitar conexões de clientes ou servidores que estiverem usando um certificado revogado.

Examinando e verificando o conteúdo de uma CRL

Se quiser examinar um arquivo de CRL para, por exemplo, confirmar uma lista de certificados revogados, use o comando openssl de dentro do seu diretório easy-rsa em seu servidor CA:

  • cd ~/easy-rsa
  • openssl crl -in pki/crl.pem -noout -text

Você também pode executar esse comando em qualquer servidor ou sistema que tenha a ferramenta openssl instalada com uma cópia do arquivo crl.pem. Por exemplo, se você tiver transferido o arquivo crl.pem para seu segundo sistema e quiser verificar se o certificado sammy-server foi revogado, pode usar um comando openssl parecido com o seguinte, substituindo o número de série que você observou anteriormente quando revogou o certificado no lugar do certificado destacado abaixo:

  • openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output
Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT

Observe como o comando grep é usado para confirmar o número de série único que você observou no passo da revogação. Agora, você pode verificar o conteúdo da sua lista de revogação de certificados em qualquer sistema que conta com ela para restringir o acesso a usuários e serviços.

Conclusão

Neste tutorial, você criou uma autoridade de certificação privada usando o pacote Easy-RSA em um servidor CentOS 8 autônomo. Você aprendeu como o modelo de confiança funciona entre as partes que contam com a CA. Você também criou e assinou uma solicitação de assinatura de certificado (CSR) para o servidor da prática e, em seguida, aprendeu como revogar um certificado. Por fim, aprendeu como gerar e distribuir uma lista de revogação de certificado (CRL) para qualquer sistema que conte com sua CA para garantir que os usuários ou servidores que não devam acessar serviços sejam impedidos de fazê-lo.

Agora, você é capaz de emitir certificados para os usuários e usá-los com serviços, tal como o OpenVPN. Você também pode usar sua CA para configurar os servidores Web de desenvolvimento e de preparo, com certificados para proteger seus ambientes de não produção. Usar uma CA com certificados TLS durante o desenvolvimento pode ajudar a garantir que seu código e ambiente correspondam ao seu ambiente de produção da melhor maneira possível.

Se quiser aprender mais sobre como usar o OpenSSL, nosso tutorial Fundamentos do OpenSSL: trabalhando com certificados SSL, chaves privadas e CSRs tem muitas informações adicionais para que você se familiarize com os fundamentos do OpenSSL.

Creative Commons License