Quais são as minhas opções para mover meu certificado LetsEncrypt de um servidor para outro?

1

Eu tenho um servidor Ubuntu correndo através do Oceano Digital que tem um certificado SSH que passei por LetsEncrypt.

Estou tentando migrar para um serviço mais barato e preciso mover o certificado para meu novo servidor. Como posso fazer isso?

Parece que posso revogar o certificado no meu servidor DO atual. Posso fazer um novo no meu novo servidor sem problemas?

    
por Kecoey 13.03.2017 / 17:13

5 respostas

2

Algo disto já foi dito, mas apenas para dar uma resposta completa. Eu comecei a usar alguns certificados de LE em serviços públicos. As opções de movimentação são praticamente irrestritas, dependendo mais de qual projeto você está usando para solicitar os certificados. Depois de obter o certificado, você pode exportar a chave e o certificado para um arquivo para mover para qualquer serviço que desejar. Você não deve precisar revogar nada para obter um novo certificado. Com o curto tempo de vida de LE certs (3 meses) e custo livre, eles estão sendo tratados como descartáveis pela maioria que eu encontrar.

Eu usei o projeto ACMEsharp by eBekker para criar um script PowerShell para automatizar a obtenção de um novo certificado. Isso é o que eu tenho até agora. Atualmente, ele deve ser executado no servidor da Web.

link

## This requires the ACMESharp module from EBekker
#Import-Module AcmeSharp

$dns = "www.example.com"
$webRoot = "C:\inetpub\wwwroot"

$idRef = "$($dns.Replace('.','-'))-$(Get-Date -Format "yyyy-MM-dd_HH-mm")"
$certRef = "cert-$($dns.Replace('.','-'))-$(Get-Date -Format "yyyy-MM-dd")"

Import-Module AcmeSharp
Write-Host "Getting a new challenge"
New-ACMEIdentifier -Dns $dns -Alias $idRef | Out-Null
$challanges = Complete-ACMEChallenge -IdentifierRef $idRef -ChallengeType http-01 -Handler manual
$httpChallenge = ($challanges.Challenges | Where-Object {$_.Type -like 'http-01'}).Challenge

Write-Host "Creating challenge folder path"
New-Item -ItemType Directory -Path "$webRoot\$($httpChallenge.FilePath)" | Out-Null

$challengeFilePath = "$webRoot\$($httpChallenge.FilePath)\Default.htm"

if (Test-Path -Path $challengeFilePath) {
    Remove-Item -Path $challengeFilePath -Force
}

Write-Host "Adding Challenge text to the reuqested path"
Add-Content -Path $challengeFilePath -Value $httpChallenge.FileContent -Force | Out-Null

Write-Host "Waitin 15 sec..."
Start-Sleep -Seconds 15

Write-Host "Submitting Challenge"
Submit-ACMEChallenge -IdentifierRef $idRef -ChallengeType http-01 -Force | Out-Null

Write-Host "Waiting 15 sec..."
Start-Sleep -Seconds 15

$id = Update-ACMEIdentifier -IdentifierRef $idRef

if ($id.Status -eq "pending") {
    Write-Host "Challenge still pending, waiting 30 sec and retrying"
    Start-Sleep -Seconds 30
    Update-ACMEIdentifier -IdentifierRef $idRef
}

if ($id.Status -ne "valid") {
    throw "Identifier could not be validated."
}
else {
    Write-Host "Challenge appears completed. Building cert"
    New-ACMECertificate -IdentifierRef $idRef -Alias $certRef -Generate | Out-Null
    Submit-ACMECertificate -CertificateRef $certRef | Out-Null
    Start-Sleep -Seconds 15
    Update-ACMECertificate -CertificateRef $certRef

    Get-ACMECertificate -CertificateRef $certRef -ExportKeyPEM C:\SSL\$dns.key.pem -ExportCertificatePEM C:\SSL\$dns.crt.pem -ExportPkcs12 C:\SSL\$dns.pfx 

    #Install Cert 
    #Install-ACMECertificateToIIS -Certificate $certRef
}
    
por 13.03.2017 / 18:12
4

Supondo que você esteja usando a ferramenta certbot para gerenciar seus certificados Let's Encrypt, o que a maioria das pessoas faz, é suficiente copiar todo o diretório /etc/letsencrypt de um servidor para outro. Todos os seus certificados, assim como a configuração do certbot, estão lá. Então você pode continuar no novo servidor exatamente como era antes.

    
por 13.03.2017 / 19:30
2

Não sou muito fã da sugestão de que você mova todo o diretório / etc / letsencrypt de um servidor para outro. Ele pressupõe que você esteja hospedando apenas um site. Eu também tentei copiar os arquivos específicos dentro de / etc / letsencrypt para o novo servidor, mas isso é complicado e propenso a erros. Então aqui está minha sugestão alternativa que não requer nenhum ajuste manual com / etc / letsencrypt evita qualquer tempo de inatividade.

  1. Copie os arquivos do site, os dados etc. para seu novo servidor
  2. No novo servidor, crie um diretório para certificados / chaves temporários, acho que 'migração' é um nome adequado, por exemplo, /etc/pki/tls/migration
  3. Crie um arquivo name-of-site-fullchain.pem em seu diretório de migração e copie e cole o conteúdo do seu arquivo de certificado no servidor antigo de /etc/letsencrypt/live/name.of.site/fullchain.pem nele. Faça o mesmo com a chave. Crie name-of-site-privkey.pem em seu diretório de migrações e copie / cole de /etc/letsencrypt/live/name.of.site/privkey.pem . Você provavelmente precisará definir 600 permissões no arquivo de chave também.
  4. Configure o software do servidor da Web no novo servidor para usar o certificado / chave no diretório de migrações.
  5. Atualize seus registros de DNS. Enquanto eles se propagam, alguns usuários obtêm o servidor antigo, alguns obtêm o novo, mas ambos funcionam bem porque possuem o mesmo certificado SSL válido.
  6. No dia seguinte, quando o DNS tiver se propagado, você poderá executar o certbot em seu novo servidor para obter um certificado atualizado, que pode ser renovado a qualquer momento.
  7. Altere a configuração do seu servidor web no novo servidor para usar o novo certificado letsencrypt.
  8. Exclua o certificado / chave no diretório de migração que não é mais necessário.
  9. Exclua o site e o certificado no seu antigo servidor.
por 21.09.2018 / 14:44
0

O que você deve fazer aqui é copiar os diretórios /etc/letsencrypt/archive , /etc/letsencrypt/live e /etc/letsencrypt/renewal , tendo o cuidado de preservar os links simbólicos em /etc/letsencrypt/live durante a cópia.

Os arquivos em /etc/letsencrypt/csr e /etc/letsencrypt/keys são simplesmente denominados ####_csr-certbot.pem e ####_key-certbot.pem respectivamente, em que #### é um contador crescente. Isso criará um conflito ao tentar mesclar os arquivos com outro diretório /etc/letsencrypt .

Eu não me preocuparia em copiar os outros arquivos para /etc/letsencrypt no outro servidor. Você pode querer fazer um backup dos arquivos em algum lugar, mas não precisará deles para mover o site para o outro servidor. Se você está curioso, os outros arquivos em /etc/letsencrypt são:

  1. /etc/letsencrypt/accounts contém informações de registro ACME. A Certbot atualmente não tem um grande suporte para várias contas do ACME e, para o protocolo, ela não importa. Isso é algo que você deve, pelo menos, manter uma cópia de segurança.

  2. /etc/letsencrypt/csr contém o CSR que usamos para obter seu certificado.

  3. /etc/letsencrypt/keys contém a chave privada que geramos para o novo certificado. Outra cópia disso também é encontrada em /etc/letsencrypt/archive , da qual você deve copiar.

por 03.11.2018 / 10:43
-1

A única constaint com o letsencrypt é fazer com que você seja o usuário do site ou servidor, depois disso você precisa:  - Você terá que apontar seus dns para o novo servidor.  - Teste o certificado no novo servidor

    
por 13.03.2017 / 17:33