Tutorial como migrar certificados SSL letsencrypt de um servidor antigo para o novo

Objetivo

Caso esteja migrando um servidor, sendo necessário também migrar os certificados SSL do letsencrypt (certbot), é possível seguir este tutorial para executar as tarefas necessárias.
Desta forma temos 2 servidores em questão:

  • Servidor ANTIGO
  • Servidor NOVO

Resumo de como migrar certificado SSL entre servidores

Resumindo os passos necessários:

  1. Tenha o certbot instalado em ambos os servidores
  2. Conecte no servidor antigo por SSH
  3. Utilize o RSYNC para sincronizar as pastas do servidor antigo com o novo (faça backup de tudo antes para evitar que arquivos sejam sobreescritos)
    1. sudo rsync -avz /etc/letsencrypt/archive/       root@ipservidornovo:/etc/letsencrypt/archive/
    2. sudo rsync -avz –links /etc/letsencrypt/live/ root@ipservidornovo:/etc/letsencrypt/live/
    3. sudo rsync -avz /etc/letsencrypt/renewal/      root@ipservidornovo:/etc/letsencrypt/renewal/
  4. No servidor novo, testar se os links lógicos foram preservados:
    1. sudo certbot update_symlinks
  5. Testar se migração foi realizada com sucesso:
    1. sudo letsencrypt renew –dry-run
  6. Migração concluída

Passo a passo para migrar certificados SSL de um servidor antigo para um novo

Passo 1 – Preparar o servidor novo para receber os certificados (instalar certbot)

Abra um terminal ou utilize um software (putty) para conectar no Servidor NOVO para instalar o certbot:

ssh usuario@ipservidornovo

Agora siga os passos descritos nesta URL pra instalar o certbot:

https://certbot.eff.org/

Caso já tenha o certbot instalado no novo servidor, interessante realizar um backup dos certificados para evitar que sejam sobreescritos pelo rsync no próximo passo.

Passo 2 – Enviar os arquivos dos certificados para o novo servidor

Passo 2 – Opção 1 – Migrar os arquivos com RSYNC

Abra uma nova janela do terminal ou utilize um software (putty) e conecte no Servidor ANTIGO por ssh:

ssh usuario@ipservidorantigo

Caso tenha possibilidade de conexão no Servidor NOVO por ssh à partir do Servidor ANTIGO, é possível utilizar RSYNC (Atenção! Estas pastas são propriedades do usuário root, então para ter permissão de sincronizar, é necessário se conectar com usuário root, ou migrar para umas pasta temporária no novo servidor e depois mover os arquivos):

sudo rsync -avz         /etc/letsencrypt/archive/  usuario@ipservidornovo:/etc/letsencrypt/archive/
sudo rsync -avz --links /etc/letsencrypt/live/     usuario@ipservidornovo:/etc/letsencrypt/live/
sudo rsync -avz         /etc/letsencrypt/renewal/  usuario@ipservidornovo:/etc/letsencrypt/renewal/

Vá para o terminal do Servidor NOVO que abriu, ou para a aba de conexão do Putty relacionada ao Servidor NOVO.
Agora execute o comando para verificar que os links simbólicos da pasta /etc/letsencrypt/live/ foram migrados corretamente:

sudo certbot update_symlinks

Se tudo ocorreu corretamente, pode executar o certbot e testar reinstalar o certificado:
Caso utilize nginx:

sudo certbot --nginx

Caso utilize apache:

sudo certbot --apache

Tudo Pronto! Certificados Migrados com Sucesso!


Passo 2 – Opção 2 – Migrar os arquivos com SCP

Caso não tenha possibilidade de conexão por SSH de um servidor para o outro com permissão root e não quer utilizar uma pasta temporária, é possível compactar os arquivos e enviar para o outro servidor:
Vá para sua pasta home:

cd ~

Agora execute o comando para criar um arquivo compactado dos certificados:

sudo tar -chvzf letsencrypt-files.tar.gz /etc/letsencrypt/archive/ /etc/letsencrypt/renewal/

Agora é preciso enviar o arquivo para o Servidor NOVO.
Caso possa conectar no servidor novo por SSH à partir do Servidor ANTIGO com um usuário sem permissão root, é possível utilizar o comando scp:

scp letsencrypt-files.tar.gz usuario@ipservidornovo:

No comando acima, o arquivo vai ser transferido para a pasta home do seu usuário, como exemplo: /home/usuario/

Se preferir, é possível realizar o download do arquivo criado para seu computador pessoal. Abra um terminal em seu computador e utilize o comando:
Caso utilize windows:

scp usuario@ipservidorantigo:/home/usuario/letsencrypt-files.tar.gz "%userprofile%/Downloads"

Se estiver utilizando Mac ou Linux:

scp usuario@ipservidorantigo:/home/usuario/letsencrypt-files.tar.gz ~/Downloads

Com o arquivo letsencrypt-files.tar.gz já disponível no Servidor NOVO, é necessário descompactar o mesmo e mover os certificados para a pasta /etc/letsecrypt. No comando abaixo vamos levar em consideração que o arquivo compactado está presente na pasta home do usuário.

sudo tar -xvf ~/letsencrypt-files.tar.gz

Agora copie os arquivos dos certificados que gostaria de instalar no novo servidor:

sudo cp ~/etc/letsencrypt/archive/ /etc/letsencrypt/archive/ -R
sudo cp ~/etc/letsencrypt/renewal/ /etc/letsencrypt/renewal/ -R

Necessário agora recriar os links lógicos para a pasta “live” de cada domínio:

sudo ln -s /etc/letsencrypt/archive/domonio1.com.br/cert1.pem      /etc/letsencrypt/live/domonio1.com.br/cert.pem
sudo ln -s /etc/letsencrypt/archive/domonio1.com.br/chain1.pem     /etc/letsencrypt/live/domonio1.com.br/chain.pem
sudo ln -s /etc/letsencrypt/archive/domonio1.com.br/fullchain1.pem /etc/letsencrypt/live/domonio1.com.br/fullchain.pem
sudo ln -s /etc/letsencrypt/archive/domonio1.com.br/privkey1.pem   /etc/letsencrypt/live/domonio1.com.br/privkey.pem

Atenção! Lembrando que a pasta /archive/dominio1.com.br/ pode conter várias versões dos certificados, cert.pem, cert1.pem, cert2.pem; chain.pem, chain1.pem, chain2.pem, etc. Escolher a mesma versão utilizada no Servidor ANTIGO.

Agora verifique se os links lógicos foram criados corretamente, senão, revise os passos anteriores:

sudo certbot update_symlinks

Lembrando que é comum receber erro nos links lógicos (symlinks), como o erro abaixo:

Renewal configuration file /etc/letsencrypt/renewal/dominio1.com.br.conf is broken.
The error was: expected /etc/letsencrypt/live/dominio1.com.br/cert.pem to be a symlink
Skipping.

Caso receba a mensagem de erro acima, é necessário repetir o passo anterior (sudo ln -s …)  e verificar se criou os links lógicos corretamente.

Se tudo ocorreu corretamente, pode executar o certbot e testar reinstalar o certificado:
Caso utilize nginx:

sudo certbot --nginx

Caso utilize apache:

sudo certbot --apache

Caso não receba nenhuma mensagem de erro, os certificados foram migrados com sucesso.

Conclusão

O processo de migração dos certificados do certbot (letsencrypt) é bastante simples. Basta saber quais os arquivos necessários e ter certeza que a estrutura de links lógicos (symlinks) foi preservada na migração.
Caso tenha alguma dúvida ou sugestão, basta informar nos comentários!

Vinicius Paes
Visão Geral sobre Privacidade (Privacy Overview)

Este site utuliza "cookies" para que possamos oferecer uma melhor experiência de usuário. As informações dos "cookies" são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.