Como montar certificados do CertBot para usar dentro do Docker Container

0

A ferramenta oficial certbot ( link ) para emitir e renovar certificados de Let's Encrypt salva o certificado válido no momento como ${prefix}/archive/${domain}/certN.pem , onde N é um número arbitrário. Os caminhos que devem ser usados para acessar os certificados e chaves válidos atualmente são links simbólicos relativos em ${prefix}/live/${domain}/cert.pem :

root@skprov2:${prefix}/live/${domain}# ls
total 12K
4.0K drwxr-xr-x 2 root root 4.0K Jul 24 16:08 ./
4.0K drwx------ 9 root root 4.0K Aug 24 10:57 ../
   0 lrwxrwxrwx 1 root root   39 Jul 24 16:08 cert.pem -> ../../archive/${domain}/cert2.pem
   0 lrwxrwxrwx 1 root root   40 Jul 24 16:08 chain.pem -> ../../archive/${domain}/chain2.pem
   0 lrwxrwxrwx 1 root root   44 Jul 24 16:08 fullchain.pem -> ../../archive/${domain}/fullchain2.pem
   0 lrwxrwxrwx 1 root root   42 Jul 24 16:08 privkey.pem -> ../../archive/${domain}/privkey2.pem
4.0K -rw-r--r-- 1 root root  682 Jul 23 09:40 README

Ao montar somente o diretório live , os programas em execução dentro dos contêineres do Docker falharão ao carregar os dados de certificados exigidos, devido aos links simbólicos relativos.

Como os dados de certificado mais recentes (válidos) de certbot podem ser usados em um contêiner Docker?

    
por NoMad 13.09.2018 / 15:18

1 resposta

0

Os links simbólicos relativos são mapeados para subir duas camadas (da pasta domain para a pasta live , da pasta live para a pasta root ) e, em seguida, inserir a pasta archive e finalmente a domain subpasta dentro.

Para evitar a montagem de subdiretórios de domínio all , dando acesso a todos os dados de certificado, temos que usar 2 montagens.

Estrutura de diretórios do Docker Host

Vamos supor a seguinte estrutura de diretórios criada pelo certbot no host do Docker:

/certbot/
    |-live/
    |  |-domain.com
    |  |  |-cert.pem
    |  |  |-privkey.pem
    |  |-domain2.com
    |     |-cert.pem
    |     |-privkey.pem
    |
    |-archive/
       |-domain.com
       |  |-cert.pem
       |  |-privkey.pem
       |-domain2.com
          |-cert.pem
          |-privkey.pem

Montando os subdiretórios

No Docker, queremos apenas os subdiretórios do domínio de destino montado dentro do contêiner.

docker run \
  -v /certbot/live/domain.com:/cert/live/domain.com:ro \
  -v /certbot/archive/domain.com:/cert/archive/domain.com:ro \
  myimage:tag

Dessa forma, os programas dentro do contêiner podem resolver com êxito os caminhos relativos à pasta archive , enquanto sua configuração aponta para os links simbólicos dentro da pasta live ( /cert/live/domain.com/cert.pem ).

    
por 13.09.2018 / 15:18