Como usar OpenSSL para gerar certificados SSL, chaves privadas e CSRs

A+ A-

OpenSSL é uma CLI (Command Line Tool), que pode ser usado para proteger o servidor para gerar infra-estrutura de chave pública (PKI) e HTTPS. Este artigo ajuda-lo como uma referência rápida para compreender comandos OpenSSL que são muito úteis em comum, e para cenários cotidianos especialmente para administradores de sistema.

Solicitar a assinatura de certificado (CSR)

Se quisermos obter o certificado SSL de uma autoridade certificadora (CA), devemos gerar uma solicitação de assinatura de certificado (CSR). A RSE consiste, principalmente, a chave pública de um par de chaves e algumas informações adicionais. Ambos os componentes são fundidos em o certificado sempre que está assinando para o CSR.

Ao gerar um CSR, o sistema irá solicitar informações sobre o certificado e essa informação é chamado como nome distinto (DN). O campo importante no DN é o nome comum (CN), que deve ser o FQND (Fully Qualified Domain Name) do servidor ou o host onde pretendemos usar o certificado com.

O próximo item em uma DN é fornecer as informações adicionais sobre a nossa empresa ou organização. Se vamos comprar um certificado SSL de uma autoridade de certificação (CA), é muito importante e necessário que esses campos adicionais como "Organização" deve refletir a sua organização para obter detalhes.

Aqui está um exemplo geral para o prompt informações da RSE, quando executar o comando OpenSSL para gerar o CSR.

 Nome País (código de 2 letras) [EUA]: IN
Estado ou nome da província (nome completo) [Alguns-State]: Telengana
Nome localidade (por exemplo, cidade) []: Hyderabad
Nome da organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: Ansole Pvt Ltd.
Unidade organizacional Nome (por exemplo, seção) []: Application
Nome comum (por exemplo FQDN do servidor ou seu nome) []: domainname.com
Endereço de e-mail []: support@domainname.com 

Nós também podemos fornecer as informações por respostas não-interativas para a geração de informações CSR, nós podemos fazer isso adicionando a opção -subj a quaisquer comandos OpenSSL que tentar gerar ou executar.

Abaixo está um exemplo para a opção -subj onde podemos fornecer as informações da organização onde queremos usar este CSR.

 -subj "/ C = IN / ST = Telengana / L = Hyderabad / O = Ansole Pvt Ltd / CN = domainname.com" 

gerar CSRs

Nesta seção, iremos cobrir sobre os comandos OpenSSL que estão relacionados com a geração do CSR. Este CSR pode ser usado para solicitar um certificado SSL de uma autoridade de certificação.

Gerar uma chave privada e um CSR

Se nós queremos usar HTTPS (HTTP sobre TLS) para proteger os servidores web Apache ou Nginx (usando uma autoridade de certificação (CA) para emitir o certificado SSL). Além disso, o '.csr' que será gerador tem de ser enviado para uma CA para solicitar o certificado para a obtenção de SSL assinado pela CA.

Abaixo está o comando para criar uma chave privada de 2048 bits por 'domain.key' e um CSR 'domain.csr' a partir do zero.

 $ Openssl req -newkey RSA: 2048 -nodes -keyout domain.key out domain.csr
Gerando um 2048 bits chave privada RSA
.............................. +++
....................................... +++
escrevendo nova chave privada para 'domain.key'
-----
Você está prestes a ser solicitado a digitar informações que serão incorporadas
em seu pedido de certificado.
O que você está prestes a entrar é o que é chamado de um nome distinto ou DN.
Há muito poucos campos, mas você pode deixar algumas em branco
Para alguns campos, haverá um valor padrão,
Se você digitar '.', O campo será deixado em branco.
-----
Nome País (código de 2 letras) [AU]: IN
Estado ou nome da província (nome completo) [Alguns-State]: Telengana
Nome localidade (por exemplo, cidade) []: Hyderabad
Nome da organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: ANSOL Pvt Ltd
Unidade organizacional Nome (por exemplo, seção) []: Application
Nome comum (por exemplo FQDN do servidor ou seu nome) []: domainname.com
Endereço de e-mail []: support@domainname.com 

O '-newkey RSA: 2048 "é a opção que estamos especificando que a chave deve ser de 2048 bits usando o algoritmo RSA. A opção '-nodes' é a especificar que a chave privada não deve ser criptografado com uma frase secreta. A opção "-novo", indica que a RSE está sendo gerado.

Gerar um CSR a partir de uma chave privada existente

Aqui vamos aprender sobre, como gerar um CSR para o qual você tem a chave privada.

Abaixo está o comando para criar um novo arquivo .csr com base na chave privada, que nós já temos.

 $ Openssl req tecla domain.key -novo out domain.csr
Você está prestes a ser solicitado a digitar informações que serão incorporados em seu pedido de certificado.
O que você está prestes a entrar é o que é chamado de um nome distinto ou DN.
Há muito poucos campos, mas você pode deixar algumas em branco
Para alguns campos, haverá um valor padrão,
Se você digitar '.', O campo será deixado em branco.
-----
Nome País (código de 2 letras) [AU]: IN
Estado ou nome da província (nome completo) [Alguns-State]: Telengana
Nome localidade (por exemplo, cidade) []: Hyderabad
Nome da organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: ANSOL Pvt Ltd
Unidade organizacional Nome (por exemplo, seção) []: applicatoin
Nome comum (por exemplo FQDN do servidor ou seu nome) []: domainname.com
Endereço de e-mail []: support@domainname.com 

Gerar um CSR a partir de um certificado existente e chave privada

Aqui podemos gerar ou renovar um certificado existente, onde perdemos o arquivo CSR devido a alguma razão. Aqui, a CSR irá extrair as informações usando o arquivo .CRT que temos.

Abaixo está o exemplo para a geração -

 $ Openssl x509 em domain.crt-signkey domain.key -x509toreq out domain.csr 

Onde -x509toreq é especificado que estamos usando os arquivos de certificado x509 para fazer um CSR.

Gerando uma auto-Singed Certificados

Aqui vamos gerar o certificado para proteger o servidor web onde usamos o certificado auto-assinado a ser usado para desenvolvimento e fins de teste.

 $ Openssl req -newkey RSA: 2048 -nodes -keyout domain.key-x509 -days 365 Check-out domain.crt
Gerando um 2048 bits chave privada RSA
................ +++
.................................................. ..... +++
escrevendo nova chave privada para 'domain.key'
-----
Você está prestes a ser solicitado a digitar informações que serão incorporados em seu pedido de certificado.
O que você está prestes a entrar é o que é chamado de um nome distinto ou DN.
Há muito poucos campos, mas você pode deixar algumas em branco
Para alguns campos, haverá um valor padrão,
Se você digitar '.', O campo será deixado em branco.
-----
Nome País (código de 2 letras) [AU]: IN
Estado ou nome da província (nome completo) [Alguns-State]: Telengana
Nome localidade (por exemplo, cidade) []: Hyderabad
Nome da organização (por exemplo, empresa) [Internet Widgits Pty Ltd]: ANSOL Pvt Ltd
Unidade organizacional Nome (por exemplo, seção) []: Application
Nome comum (por exemplo FQDN do servidor ou seu nome) []: domainname.com
Endereço de e-mail []: support@domainname.com 

Aqui, nós geramos certificado auto-assinado usando -x509 opção, podemos gerar certificados com validade de 365 dias, utilizando -days 365 e um arquivos .csr temporários são gerados usando as informações acima.

Visualizando os arquivos de Certificados

Por favor note que, arquivos de RSE são codificados com o formato .PEM (que não é legível pelos humanos). Isso é necessário para exibir um certificado. Nesta seção, podemos cobrir os comandos OpenSSL que são codificados com arquivos .pem.

Visualizando RSE Arquivos entires

O comando a seguir serão usados ​​para visualizar o conteúdo do .CRT arquivos Ex (domain.crt) no formato de texto simples.

 $ Sudo openssl x509 -text -noout -em domain.crt
Certificado:
Dados:
Versão: 3 (0x2)
Número de série: 9717655772991591277 (0x86dc0c706eb0136d)
Algoritmo de assinatura: sha256withRsaEncryption
Emitente: C = IN, ST = Telengana, L = Hyderabad, O = ANSOL Pvt Ltd, OU = Aplicação, CN=domainname.com/emailAddress=support@domainname.com
Validade
Não antes: 13 Jun 2016 14:23:52 GMT
Não Depois: 13 Jun 2017 14:23:52 GMT
Assunto: C = IN, ST = Telengana, L = Hyderabad, O = ANSOL Pvt Ltd, OU = Aplicação de n, CN=domainname.com/emailAddress=support@domainname.com
.... 

Trabalhando com chaves privadas

Nesta seção, veremos como usar os comandos OpenSSL que são específicos para criar e verificar as chaves privadas.

Criar uma chave privada

Abaixo está o comando para criar um protegido por senha e, de 2048 bits criptografado privado arquivo de chave (ex domain.key.) -

 $ Openssl genrsa -des3 out domain.key 2048 

Digite uma senha quando solicitado para concluir o processo.

Verifique uma Chave Privada

Abaixo está o comando para verificar se uma chave privada que temos gerado (ex: domain.key) é uma chave válida ou não:

 $ Openssl rsa -in -check domain.key 

Se a chave privada é criptografada, você será solicitado a digitar a frase secreta. Após a entrada com sucesso, a chave não criptografada será a saída no terminal.

Neste artigo, nós aprendemos alguns comandos e uso de comandos OpenSSL que lida com certificados SSL em que o OpenSSL tem muitos recursos. Vamos aprender mais recursos e uso no futuro. Espero que este artigo vai ajudar-nos a compreender algumas características básicas do OpenSSL.