martin-v.letsencryptsh

dehydrated

Zainstaluj i skonfiguruj dehydrated. Utwórz użytkownika do obniżenia uprawnień oraz skonfiguruj cron do odnawiania certyfikatów.

dehydrated pracuje z Twoimi kluczami prywatnymi, więc bądź ostrożny i sprawdź kod tej roli ansible oraz używanego skryptu dehydrated.

Aby zobaczyć przykładową konfigurację z nginx jako proxy https, zajrzyj do roli ansible martin-v/ansible-nginx_https_only

Wymagania

Rola instaluje na hoście:

  • openssl
  • curl
  • sed
  • grep
  • mktemp
  • git

Ta rola potrzebuje serwera WWW, który obsługuje folder skonfigurowany w dehydrated_challengesdir (domyslnie: /var/www/dehydrated/) pod adresem http://<twoja-domena>/.well-known/acme-challenge/ dla wszystkich domen żądających certyfikatów.

Zmienne roli

Wymagane zmienne:

dehydrated_contactemail

Adres dla konta letsencrypt. Głównie do powiadomień o wygaśnięciu certyfikatu, ale powinno to nie występować, jeśli cron działa poprawnie.

dehydrated_contactemail: certmaster@example.com

dehydrated_letsencrypt_agreed_terms

Aby zaakceptować warunki usługi letsencrypt, ustaw zmienną dehydrated_letsencrypt_agreed_terms na aktualny adres URL licencji. Aktualny adres URL znajdziesz na https://acme-v01.api.letsencrypt.org/terms.

dehydrated_letsencrypt_agreed_terms: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

dehydrated_domains

Lista domen do żądań certyfikatów. Na każdej linii zostanie utworzony certyfikat, w folderze /etc/dehydrated/certs/ z nazwą pierwszej domeny w linii. Pierwsza domena to nazwa główna, reszta w linii to alternatywne nazwy dla certyfikatu.

dehydrated_domains: |
  example.com
  example.org www.example.org blog.example.org

dehydrated_deploy_cert

Certyfikaty muszą być dostępne dla usług takich jak apache czy dovecot. Jednak tylko te konkretne usługi powinny mieć prawo do odczytu certyfikatu dla swojej usługi. Dlatego musimy zmienić właściciela/grupę na konkretne wartości dla każdego certyfikatu. Z powodów bezpieczeństwa, może to zrobić tylko użytkownik root.

Aby mieć ogólne rozwiązanie, istnieje zmienna dehydrated_deploy_cert. Ta zmienna musi zawierać skrypt bash do wdrażania certyfikatów. Typowe zadania przy wdrażaniu to kopiowanie certyfikatu do innych folderów, zmiana właściciela/pliku oraz restart usług.

Ten kod jest wywoływany podobnie jak normalne haki dehydrated, ale po zakończeniu pełnego działania dehydrated i z uprawnieniami root. Kod jest wywoływany raz dla każdego certyfikatu, który został wygenerowany.

Parametry:

  • DOMAIN Nazwa główna domeny, tj. nazwa główna certyfikatu (CN).
  • KEYFILE (Nazwa pliku: privkey.pem) Ścieżka do pliku zawierającego klucz prywatny.
  • CERTFILE (Nazwa pliku: cert.pem) Ścieżka do pliku zawierającego podpisany certyfikat.
  • FULLCHAINFILE (Nazwa pliku: fullchain.pem) Ścieżka do pliku zawierającego pełny łańcuch certyfikatów.
  • CHAINFILE (Nazwa pliku: chain.pem) Ścieżka do pliku zawierającego certyfikat(y) pośrednie.
  • TIMESTAMP (Nazwa pliku: chain.pem) Znacznik czasu, gdy dany certyfikat został utworzony.

Przykład:

dehydrated_deploy_cert: |
  mkdir -p /etc/nginx/ssl/${DOMAIN}
  cp "${KEYFILE}" "${CERTFILE}" "${FULLCHAINFILE}" "${CHAINFILE}" /etc/nginx/ssl/${DOMAIN}
  chown root:root /etc/nginx/ssl/${DOMAIN}/*
  chmod 600 /etc/nginx/ssl/${DOMAIN}/*
  systemctl restart nginx.service

dehydrated_run_cron_on_every_ansible_run

Ta rola uruchamia za każdym razem skrypt cron do tworzenia lub aktualizacji certyfikatów. Aby wyłączyć to zachowanie, użyj:

dehydrated_run_cron_on_every_ansible_run: false

Opcjonalne zmienne:

dehydrated_challengesdir

Folder dla plików acme-challenge. Twój serwer WWW powinien uczynić ten folder publicznym pod adresem http://<twoja-domena>/.well-known/acme-challenge/ dla wszystkich wymienionych wcześniej domen. Ten folder zostanie utworzony, jeśli nie istnieje. Powinien być dostępny tylko do zapisu dla użytkownika dehydrated i do odczytu przez Twój serwer WWW, co zostanie wymuszone przez tę rolę.

dehydrated_challengesdir: /var/www/dehydrated/

Więcej zmiennych

Istnieją także niektóre nietypowe zmienne dla super użytkownika, który potrzebuje większej kontroli, szczegóły znajdziesz w defaults/main.yml.

Zależności

Brak.

Przykład Playbook

- hosts: all
  remote_user: root
  vars_files:
    - dehydrated_vars.yml
  roles:
    - martin-v.dehydrated

Przykład pliku zmiennych

dehydrated_contactemail: [email protected]

dehydrated_letsencrypt_agreed_terms: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

dehydrated_domains: |
  example.com
  example.org www.example.org blog.example.org

dehydrated_deploy_cert: |
  mkdir -p /etc/nginx/ssl/${DOMAIN}
  cp "${KEYFILE}" "${CERTFILE}" "${FULLCHAINFILE}" "${CHAINFILE}" /etc/nginx/ssl/${DOMAIN}
  chown root:root /etc/nginx/ssl/${DOMAIN}/*
  chmod 600 /etc/nginx/ssl/${DOMAIN}/*
  systemctl restart nginx.service

Porady

Aby utworzyć certyfikaty podczas wdrażania ansible, możesz wywołać standardowy skrypt cron: shell: "/etc/cron.weekly/dehydrated". Folder tests (https://github.com/martin-v/ansible-dehydrated/tree/master/tests) zawiera pełny działający przykład.

Aby zaimportować z oficjalnego klienta letsencrypt, zajrzyj na stronę wiki importu dehydrated.

Otwarte zadania

Build Status travis Build Status semaphore

  1. Użyj molecule do lepszych testów

Licencja

MIT

Informacje o autorze

Ta rola została stworzona w 2016 roku i poprawiona w 2017 roku przez Martina V..

O projekcie

Install and configure [`dehydrated`](https://github.com/lukas2511/dehydrated). Create user for privilege dropping and cron configuration for certificate renewals.

Zainstaluj
ansible-galaxy install martin-v.letsencryptsh
Licencja
mit
Pobrania
756
Właściciel
Freelance software developer and IT consultant