libre_ops.ca_keys

Klucze Urzędów Certyfikacji

To jest rola Ansible do generowania prywatnych kluczy CA i podpisanych certyfikatów. Mogą być one używane do zabezpieczania aplikacji serwerowych/klienckich, gdzie wymagane jest zarówno szyfrowanie danych w tranzycie, jak i uwierzytelnianie między węzłami.

Przy prawidłowej konfiguracji klucze podpisane przez prywatny CA mogą zapobiegać atakom typu MITM i mogą być używane do uwierzytelniania dwukierunkowego. Przykładem może być zabezpieczenie połączeń między węzłami w klastrze Kafka lub Elastic Stack.

Rola wykonuje następujące kroki:

  • Generowanie pary kluczy CA (Urzędów Certyfikacji)
  • Generowanie kluczy i CSR (Wniosków o Podpisy Certyfikatów) dla określonych węzłów
  • Podpisanie CSR za pomocą CA, aby stworzyć podpisane certyfikaty (CRT)
  • Opcjonalnie spakowanie niezbędnych kluczy do plików keystore/truststore w formacie java

Domyślne ustawienia

Sprawdź wszystkie domyślne ustawienia tutaj i zmień je według potrzeb.

Użytkowanie

Zalecane użycie: uruchom rolę w lokalnym playbooku (zobacz poniżej), a następnie przenieś wygenerowane pliki w bezpieczne miejsce. Nie zostawiaj kluczy na wierzchu. Ten kod jest dostarczany „tak jak jest”, to w jaki sposób go użyjesz i jak przechowasz wynikowe klucze, leży w twojej odpowiedzialności!

Ta rola może być używana do tworzenia nowych kluczy i CRT na podstawie istniejącego certyfikatu CA, jeśli takowy jest dostępny.

Po ich stworzeniu przenieś wymagane pliki do projektu, w którym ich używasz. Możesz użyć Ansible Vault do szyfrowania plików (w tym plików jks), a moduły Ansible, takie jak copy, będą je rozszyfrowywać podczas przesyłania, jeśli dostarczysz hasło do vaulta.

Sprawdzanie kluczy

Możesz (i powinieneś) sprawdzić klucze za pomocą różnych poleceń openssl. Oto kilka przykładów:

openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<key-name>.key -check
openssl x509 -in generated_keys/<key-name>.crt -text -noout

Ograniczenie Pythona

Z powodu błędu w Ansible (poprawka już scalona w gałęzi devel), musisz używać Pythona 2.7 podczas wykonywania zadań dotyczących tworzenia keystore'ów java. Zobacz ten problem dla szczegółów.

Przykładowy playbook

- name: Generowanie kluczy
  hosts: 127.0.0.1
  connection: local
  
  vars:
    ansible_python_interpreter: '/usr/bin/python2.7'

  roles:
    - role: libre_ops.ca_keys
      vars:
        cert_organisation: Firma Przykład
        cert_unit: Dział Kluczy
        cert_country: FR
        cert_state: Paryż
        cert_location: Paryż
        
        create_keys:
          - filename: server
            subject:
              - "/CN=app.client.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"
              
          - filename: client
            subject:
              - "/CN=app.server.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"    
O projekcie

Generate private CA keys and signed certificates

Zainstaluj
ansible-galaxy install libre_ops.ca_keys
Licencja
gpl-3.0
Pobrania
142
Właściciel
Ansible roles for syadmin proles.