inofix.acme-setup

Acme Setup

To jest rola ansible do przygotowania wszystkiego, co jest potrzebne do późniejszego podpisywania certyfikatów za pomocą Let's Encrypt, tj. instalowanie użytkownika, odpowiednich katalogów i skryptów oraz ustawianie odpowiednich uprawnień.

Ta rola jest przeznaczona do uruchomienia na każdym hoście, który potrzebuje certyfikatów dla siebie lub podpisuje certyfikaty dla innego hosta.

Aby stworzyć klucz prywatny i żądania certyfikatów, zobacz inofix.acme-request, a także zainstalować zdalnie utworzone żądanie na hoście "podpisującym" lub "proxy certyfikatów".

Rola inofix.acme-tiny-install instaluje skrypt acme-tiny na hostach "podpisujących".

Role inofix.acme-tiny-sign / inofix.acme-tiny-cron zajmują się faktycznym (i okresowym) podpisywaniem na hostach "podpisujących".

Każdy host, który ma podpisywać certyfikaty za pomocą usługi Let's Encrypt, wymaga serwera WWW nasłuchującego na porcie 80 i przekierowującego zapytania do katalogu dostępnego dla narzędzia podpisującego - zobacz inofix.acme-sign jako przykład.

Hosty polegające na innych hostach do podpisywania certyfikatów (np. które nie mają zainstalowanej usługi webowej) mogą uzyskać i przenieść gotowe podpisane certyfikaty z hosta proxy za pomocą inofix.acme-proxy.

Zobacz "Przegląd / Koncepcja" poniżej w celu uzyskania szczegółów.

Rozwój tej roli rozpoczęto jako zwischenloesung.acme-tiny-setup.

Dlaczego nie korzystamy z istniejących ról?

  • Przeczytaj sekcję "Obietnica" poniżej. Potrzebujemy czegoś niezawodnego.
  • Ta rola będzie używana przez maestro i musi podążać za logiką, która jest tam stosowana. (Oczywiście, rola może być używana bez maestro..)

Stan

preSTABLE (Feature-Freeze/RC)

Obietnica

Oczywiście, ta rola może się zmieniać w przyszłości, ale będziemy jedynie rozszerzać funkcje, aby nie naruszyć zgodności wstecznej.

Jeśli będą potrzebne radykalne zmiany, zostanie stworzona nowa rola, prawdopodobnie z sufiksem wersji...

Instalacja

# ansible-galaxy install inofix.acme-setup

Wymagania

  • Ansible >2.0
  • Python2/3 na hoście docelowym
  • Ogólny UNIX z FHS
  • Sudo
  • Systemd (domyślnie)

Przegląd / Koncepcja

Ponieważ jest to centralna rola, która jest jedyną potrzebną na każdym zaangażowanym hoście, w tym README przedstawione jest zestawienie.

Perspektywa Roli

  • inofix.acme-setup
    • uruchamiana na każdym hoście
    • przygotowuje środowisko
      • tworzy użytkownika 'acme'
      • tworzy klucze itp.
        • /etc/ssl/acme
          • skrypty
          • powiązane usługi
        • /var/log/acme
          • logi
        • /var/lib/acme
          • katalog domowy dla użytkownika do podpisywania i kopiowania certyfikatów
  • inofix.acme-request
    • uruchamiana na hostach korzystających lub podpisujących certyfikat
    • na hostach korzystających z certyfikatu
      • tworzy klucz prywatny
      • tworzy żądanie certyfikatu (csr)
    • na hostach proxy
      • instaluje csr z "offline" hostów
  • inofix.acme-tiny-install
    • uruchamiana na hostach podpisujących certyfikaty z Let's Encrypt
    • instaluje skrypt acme-tiny.py
  • inofix.acme-tiny-sign
    • uruchamiana na hostach podpisujących certyfikaty z Let's Encrypt
      • potrzebuje tylko csr: klucz prywatny nie jest nawet odczytywany (lub jest nieobecny w przypadku proxy)
      • używa acme-tiny.py, aby poprosić Let's Encrypt o podpisanie certyfikatu dla csr
  • inofix.acme-tiny-cron
    • uruchamiana na hostach podpisujących certyfikaty z Let's Encrypt
      • potrzebuje tylko csr: klucz prywatny nie jest nawet odczytywany (lub jest nieobecny w przypadku proxy)
      • instaluje zadanie cron, aby wykonać część podpisującą (jak w inofix.acme-tiny-sign)
  • inofix.acme-proxy
    • uruchamiana na hostach korzystających z certyfikatu, ale nie wykonujących podpisywania osobiście (np. e-mail/jabber/..)
    • kopiuje certyfikat z zdalnego hosta (który wykonał podpisywanie)
  • inofix.acme-service-..
    • uruchamiana na wszystkich hostach korzystających z certyfikatu (tj. uruchamiających certyfikowaną usługę...)
    • rejestruje usługę, aby była ponownie uruchomiona, gdy jakikolwiek certyfikat uległ zmianie

Perspektywa Hostów

  • Host, który działa jako host podpisujący i nie ma sam w sobie usług wykorzystujących certyfikaty, musi uruchomić te role:
    • inofix.acme-setup (ta rola)
    • inofix.acme-tiny-install
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron (aby automatycznie powtarzać podpisywanie raz w miesiącu)
  • Host, który tylko korzysta z certyfikatów, ale sam nie żąda podpisywania bezpośrednio z Let's Encrypt, musi uruchomić te role:
    • inofix.acme-setup (ta rola)
    • inofix.acme-request
    • inofix.acme-proxy (aby automatycznie uzyskać certyfikaty z zdalnego hosta)
    • inofix.acme-service-<usługa> (aby ponownie uruchomić usługę, jeśli certyfikat się zmieni)
  • Host, który uruchamia zarówno narzędzie do podpisywania, jak i określoną usługę, musi uruchomić te role:
    • inofix.acme-setup (ta rola)
    • inofix.acme-tiny-install
    • inofix.acme-request
    • inofix.acme-tiny-sign
    • inofix.acme-tiny-cron (aby automatycznie powtarzać podpisywanie raz w miesiącu)
    • inofix.acme-service-<usługa> (aby ponownie uruchomić usługę, jeśli certyfikat się zmieni)

Zmienne Roli

  • app__acme__user - opcjonalne, domyślnie='acme'
  • app__acme__group - opcjonalne, domyślnie='acme'
  • app__acme__home - opcjonalne, domyślnie='/var/lib/acme'
  • app__acme__config_dir - opcjonalne, domyślnie='/etc/ssl/acme'
  • app__acme__openssl_config - opcjonalne, domyślnie='/etc/ssl/openssl.cnf'
  • app__acme__challenge_dir - opcjonalne, domyślnie='/var/www/acme-challenges'
  • app__acme__scripts_dir - opcjonalne, domyślnie='/etc/ssl/acme/scripts'
  • app__acme__service_dir - opcjonalne, domyślnie='/etc/ssl/acme/service.d'
  • app__acme__bin_dir - opcjonalne, domyślnie='/usr/local/bin'
  • app__acme__account_key - opcjonalne, domyślnie='account.key'
  • app__acme__key_length - opcjonalne, domyślnie=4096
  • app__acme__ssh_keytype - opcjonalne, domyślnie='rsa'
  • app__acme__log_dir - opcjonalne, domyślnie='/var/log/acme'
  • app__acme__letsencrypt_certs - opcjonalne, domyślnie=[ {url='https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem', file='intermediate.crt'}, {url='https://letsencrypt.org/certs/isrgrootx1.pem', file='ca.crt'} ]
  • app__acme__cron_minute - opcjonalne, domyślnie='11'
  • app__acme__cron_hour - opcjonalne, domyślnie='5'
  • app__acme__cron_day - opcjonalne, domyślnie='*'
  • app__acme__cron_month - opcjonalne, domyślnie='*'
  • app__acme__cron_year - opcjonalne, domyślnie='*'
  • fqdn - opcjonalne, domyślnie={{ ansible_fqdn | d(inventory_hostname ) }}
  • workdir - opcjonalne, domyślnie=/tmp (lokalny katalog używany do wymiany kluczy SSH)

Zależności

Przykładowy Playbook

- hosts: serwery
  roles:
     - inofix.acme-setup

Zobacz https://raw.githubusercontent.com/inofix/common-playbooks/master/setup-lets-encrypt.yml dla pełnego playbooka z wszystkimi istotnymi rolami.

Licencja

GPLv3

Informacje o autorze

Zainstaluj
ansible-galaxy install inofix.acme-setup
Licencja
gpl-3.0
Pobrania
507
Właściciel
INOFIX is a Luzern based software company focused on the development of free software and system solutions.