Como crio um certificado SSL autoassinado?

64

Configurei o SSL no meu servidor da web, agora preciso de dois arquivos:

  • Um certificado
  • uma chave de certificado

Como crio um certificado autoassinado para fins de teste?

Stefano Palazzo
fonte

Respostas:

93

O Ubuntu, mesmo o sabor 'mínimo', vem com o ssl-certpacote pré-instalado, o que significa que você não precisa fazer nada.

Os arquivos que você está procurando já estão no seu sistema:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Avançado:

Se, por algum motivo, você precisar criar um certificado novo, poderá executar

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Se você deseja alterar a data de validade do seu certificado, pode manipular o script make-ssl-cert em /usr/sbin/make-ssl-cert. Por volta de 124, há uma linha semelhante a esta:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Onde você pode alterar a data de validade adicionando o -daysargumento:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Mais opções podem ser encontradas na página de manual dereq .

Stefano Palazzo
fonte
10
O ubuntu-server 12.04 (imagem em nuvem AMI) não tem o ssl-cert instalado por padrão. Mas uma vez que o ssl-cert esteja instalado - /etc/ssl/certs/ssl-cert-snakeoil.pem fica disponível automaticamente.
Stann
make-ssl-cert leva o comprimento da chave (e outras configurações) para usar /usr/share/ssl-cert/ssleay.cnf.
Tim Smith
Ao tentar testar um site em uma instância local de VM vagrant, eu queria que o Google Chrome agisse como se fosse um certificado totalmente normal. Primeiro tive que definir o nome do host da VM para corresponder à URL de teste (por exemplo www.test.mydomain.com) usando o hostnamecomando na CLI da VM. Em seguida, regenere a chave conforme você sugere, com --force-overwriteo nome comum (CN) da chave e, em seguida, corresponde ao URL de teste. Finalmente, na máquina host, a instalação da chave como Autoridade de Certificação Raiz Confiável (nas Configurações do Chrome / Avançado) me deu a barra de endereço verde cobiçada.
Buttle Butkus
11
meu certificado de 9 anos parou de funcionar com minha atualização para o debian 10, então o make-ssl-certcomando salvou o dia para mim!
Jayen 28/08
23

Como já mencionado, o Ubuntu Server vem com as ferramentas necessárias. Dependendo da versão do servidor, você precisará procurar a documentação específica . Tentarei resumir o processo de geração de certificado autoassinado do LTS atual (12.04) .

Primeiro, você gera as chaves para a Solicitação de assinatura de certificado (CSR):

openssl genrsa -des3 -out server.key 2048

Cabe a você digitar uma senha ou não. Se o fizer, sempre que (re) iniciar um serviço usando esse certificado, você precisará fornecer a senha. Otoh, você pode criar uma chave "insegura" sem uma senha da chave segura:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

E agora você criará o CSR a partir da chave. Com o CSR e a chave, um certificado autoassinado pode ser gerado:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

O último passo consiste em instalar o certificado e a chave, no Debian / Ubuntu, geralmente em /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

E, finalmente, os aplicativos que usam o certificado / chave precisam ser configurados de acordo.

nietonfir
fonte