gametize.install-root-cert

Ansible Роль: Установка сертификата корневого ЦС

Статус сборки

Эта Ansible роль установит сертификат корневого сертификата ЦС на целевые хосты. Требуется привилегированный доступ для работы.

Объясню простыми словами, зачем это нужно:

  • Я создаю сертификат устройства (например, www.example.com). Мой веб-сервер использует его для SSL.
  • Другие машины, пытающиеся получить доступ к моему веб-серверу, будут расстроены, потому что SSL сертификат самоподписанный и еще не доверен. Очень неприятно :(

Так для чего же эта Ansible роль?

  • Я могу создать закрытый ключ для своей организации и создать самоподписанный сертификат ЦС (Certificate Authority) из этого ключа.
  • С помощью этой Ansible роли я могу установить данный сертификат ЦС на клиентские машины.
  • Я создаю сертификат устройства (например, www.example.com), подписанный моим сертификатом ЦС (и его закрытым ключом), и использую его для своего веб-сервера.
  • Когда мои клиентские машины посещают мой веб-сервер (www.example.com), SSL сертификат должен быть действительным. Ура!
  • Если созданный закрытый ключ будет использован неправильно, могут произойти плохие вещи (например, подделка google.com). Поэтому храните закрытый ключ организации в безопасности!

Этот плейбук может быть использован на следующих платформах:

  • CentOS 6, 7
  • Ubuntu 14.04, 16.04
  • Mac OS 10.12 (не идемпотентен и протестирован не очень хорошо)

Зависимости

Эта роль требует сертификат корневого ЦС.

Переменные

  • install_root_cert_pem Полный путь к сертификату корневого ЦС (.pem) на локальной машине

Использование

Пример плейбука:

---
- hosts: all
  become: yes
  vars:
    install_root_cert_pem: files/root_ca.pem
  roles:
    - gametize.install-root-cert

Тесты

Тесты Travis (.travis.yml) настроены согласно этой статье от geerlingguy.

Тесты Gitlab CI настроены аналогично и могут быть запущены с помощью gitlab-runner. Пример запуска локально:

gitlab-ci-multi-runner exec shell test_centos7

Артефакты, используемые в тестах

Ключи и сертификаты можно сгенерировать с помощью следующих команд. НЕ используйте эти настройки в производственной среде!

$ ### Генерация ключа и сертификата для корневого ЦС
$ openssl genrsa -out root_ca.key 1024
$ openssl req -x509 \
    -subj '/C=SG/ST=Singapore/L=Singapore/O=Example Inc/OU=Example Inc Certificate Authority/CN=example.com' \
    -new -nodes -key root_ca.key -sha256 -days 1024 \
    -out root_ca.pem

$ ### Генерация ключа и сертификата для устройства
$ openssl genrsa -out localhost.key 1024    # генерируем ключ для устройства `localhost.key`
$ openssl req -new \
    -subj '/C=SG/ST=Singapore/L=Singapore/O=Example Inc/OU=Example Inc Testing Department/CN=localhost' \
    -new -nodes -key localhost.key -sha256 -days 1024 \
    -out localhost.csr

$ ### Подписываем сертификат устройства сертификатом корневого ЦС
$ openssl x509 -req \
    -in localhost.csr -CA root_ca.pem -CAkey root_ca.key \
    -CAcreateserial -out localhost.crt -days 1024 -sha256
$ cat localhost.crt localhost.key > localhost.pem

Лицензия

MIT

Информация об авторе

LIM EnSheng (ensheng@gametize.com)

О проекте

This role will install the Root CA Certificate on the target hosts

Установить
ansible-galaxy install gametize.install-root-cert
Лицензия
Unknown
Загрузки
15.7k
Владелец