Tutorial

Como instalar e configurar uma autoridade de certificação (CA) no Debian 10

SecurityDebianDebian 10

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 forma 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 Debian 10. 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 para garantir que apenas usuários e sistemas autorizados possam usar serviços que dependam da sua CA.

Pré-requisitos

Para completar este tutorial, você precisará de acesso a um servidor Debian 10 para hospedar seu serviço de OpenVPN. Você precisará configurar um non-root user privilégios sudo antes de iniciar este guia. Você pode seguir nosso Guia de configuração inicial do servidor Debian 10 para configurar um usuário com as permissões apropriadas. O tutorial em questão também irá configurar um firewall, que assumimos que esteja em funcionamento durante todo este guia.

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

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

Nota: a última seção deste tutorial é opcional caso queira aprender sobre a assinatura e revogação de certificados. Caso escolha completar esses passos de prática, você precisará de um segundo servidor Debian 10. É possível também usar seu próprio computador Linux local executando o Debian ou o Ubuntu, ou distribuições derivadas de qualquer um deles.

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 autoridade 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 dependerão da sua CA.

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 apt update
  • sudo apt install easy-rsa

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

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 compilar sua autoridade de certificação.

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

Agora que você instalou easy-rsa, é hora de criar um esqueleto para a Infraestrutura de chaves públicas (PKI, do inglês Public Key Infrastructure) no Servidor de CA. Certifique-se de que você ainda está conectado como 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 este 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 no Servidor CA.

Crie os links simbólicos com o comando ln:

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

Nota: embora outros guias possam instruí-lo a copiar os arquivos do pacote easy-rsa para o seu diretório de 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 pode 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 essa seção, você tem um diretório que contém 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 e certificado privados do seu CA, você precisa criar e preencher um arquivo chamado vars com alguns valores padrão. Primeiro, você usará o cd para entrar no 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.

  • 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 compilar sua CA.

Para criar o par de chaves raiz público e privado 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 digite-a em um local seguro. Será necessário 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 esta 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 de certificado público da CA. Usuários, servidores e clientes usarão este certificado para comprovarem se eles fazem parte da mesma rede de confiança. Todos os usuários e servidores que usam sua CA precisarão de uma cópia deste arquivo. Todas as partes dependerão do certificado público para garantir que um terceiro não esteja se passando por um sistema e executando um ataque Man-in-the-middle.

  • A ca.key é a chave privada que a CA usa para assinar chaves e certificados para servidores e clientes. Se um invasor ganhar acesso à sua CA e, por sua vez, seu arquivo ca.key, será necessário destruir sua CA. Esse é o motivo pelo qual seu arquivo ca.key deve estar apenas na sua máquina CA e que, idealmente, sua máquina CA deve ser mantida off-line quando não estiver assinando pedidos de certificado como uma medida de segurança extra.

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

Passo 4 — Distribuindo seu 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 em sua rede deve ter uma cópia do arquivo ca.crt importada para o armazenamento de certificados do seu 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 o copiar e colar com o nano neste passo, pois isso 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.

Para sistemas baseados em Debian e Ubuntu, execute os comandos a seguir para importar o certificado:

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

Para importar o certificado do Servidor de CA em um sistema baseado em CentOS, Fedora ou RedHat, 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 /etc/pki/ca-trust/source/anchors/. Depois disso, execute o comando update-ca-trust.

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

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 este 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 para outro tutorial, ou já estiver familiarizado com como assinar e revogar certificados, você pode parar aqui. Caso queira aprender mais sobre como assinar e revogar certificados, então a seguinte seção opcional explicará cada processo detalhadamente.

(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 os 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 prática de certificado

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, propriamente dita, que é criada com 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 poderá, então, descriptografar.

Os passos a seguir serão executados em seu segundo sistema Linux, podendo ser o Debian, Ubuntu, ou uma distribuição derivada de qualquer um deles. 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 apt update
  • sudo apt 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 a prática com 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 fictício chamado sammy-server, ao invéz 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 passar 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 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 de prática, copie o arquivo sammy-server.req para o seu servidor de 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 ter vir de um servidor OpenVPN que estivesse solicitando um certificado para que os usuários possam conectar-se 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 de CA agora precisa importar o certificado de prática e assiná-lo. Assim que uma solicitação de certificado for validada pela CA e retransmitida de volta 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 no 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, depois 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 concluídos, você assinou a CSR sammy-server.req usando a chave privada do Servidor 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. Pode ser que o notebook de alguém tenha sido roubado, um servidor Web tenha sido comprometido, ou um empregado, ou contratado tenha deixado sua organização.

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 quaisquer certificados emitidos anteriormente. 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). Esse 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á desse 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 certificados

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 listas de revogação, como o OCSP-Stapling, a configuração desses métodos vai além do âmbito deste artigo.

Certifique-se de que você está conectado ao seu servidor de CA com seu 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 de 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 verificar se o número de série único que você observou no passo da revogação está presente. Agora, você pode verificar o conteúdo da sua lista de revogação de certificados em qualquer sistema que dependa dela 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 Debian 10 independente. 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 ajudá-lo a se familiarizar com os fundamentos do OpenSSL.

0 Comments

Creative Commons License