Валидные сертификаты и DNS для сервисов в локальных сетях без удостоверяющего центра

от автора

Валидные сертификаты и DNS для сервисов в локальных сетях без удостоверяющего центра

В этом посте будет рассмотрена установка и использование сервиса http://local-ip.co/ с валидными сертификатами и с DNS как xip.io, nip.io.

Вы можете использовать сертификат для домена *.my.local-ip.co

Обращаться нужно будет примерно так:

Ниже будет пример с установкой harbor c валидным сертификатом.

Требования:

Устанавливаем docker и docker-compose

Скачиваем harbor

wget https://github.com/goharbor/harbor/releases/download/v2.2.1/harbor-online-installer-v2.2.1.tgz

Распаковываем harbor

tar xvf harbor-online-installer-v2.2.1.tgz

Подготавливаем сертификаты от проекта http://local-ip.co/

mkdir -p /data/cert/ cd /data/cert/ wget http://local-ip.co/cert/server.pem wget http://local-ip.co/cert/chain.pem wget http://local-ip.co/cert/server.key

Создаем цепочку сертификатов

cat server.pem chain.pem > bundled_cert_file.pem

Переименовываем сертификаты под доменное имя, которое вам нужно будет.

cp bundled_cert_file.pem 192-168-22-7.my.local-ip.co.crt cp server.key 192-168-22-7.my.local-ip.co.key

Копируем шаблон конфига в конфиг

cp harbor.yml.tmpl harbor.yml

Конфигурируем hostname в harbor.yml

hostname: 192-168-22-7.my.local-ip.co

Указываем сертификат и ключ в harbor.yml

  certificate: /data/cert/192-168-22-7.my.local-ip.co.crt   private_key: /data/cert/192-168-22-7.my.local-ip.co.key

Запускаем скачивание образов

./prepare

Запускаем harbor через docker-compose

docker-compose up -d

Либо запускаем установку

./install.sh

Установка harbor через Ansible

Для установки harbor через ansible используем роль https://galaxy.ansible.com/manueliglesiasgarcia/ansible_vmware_harbor

Скачиваем роль

ansible-galaxy install manueliglesiasgarcia.ansible_vmware_harbor

Ниже playbook для установки harbor через ansible

--- - name: Install harbor   become: yes   hosts: harbor   pre_tasks:     - name: update apt       apt: update_cache=yes cache_valid_time=3600       when: ansible_pkg_mgr is defined and ansible_pkg_mgr == "apt"       ignore_errors: true      - name: Creates directory {{ playbook_dir }}/certs       file:         path: "{{ playbook_dir }}/certs"         state: directory       delegate_to: localhost       become: no      - name: Download http://local-ip.co/cert/server.pem       get_url:         url: http://local-ip.co/cert/server.pem         dest: "{{ playbook_dir }}/certs/server.pem"       delegate_to: localhost       become: no      - name: Download http://local-ip.co/cert/chain.pem       get_url:         url: http://local-ip.co/cert/chain.pem         dest: "{{ playbook_dir }}/certs/chain.pem"       delegate_to: localhost       become: no      - name: Download http://local-ip.co/cert/server.key       get_url:         url: http://local-ip.co/cert/server.key         dest: "{{ playbook_dir }}/certs/server.key"       delegate_to: localhost       become: no      - name: merge certificate       shell: cat server.pem chain.pem > bundled_cert_file.pem       args:         chdir: "{{ playbook_dir }}/certs"       delegate_to: localhost       become: no    vars:     # Add a registry     harbor_registry:       - registry_name: "Test Harbor"         registry_url: https://192-168-22-8.my.local-ip.co/     # Schedule an automatic scan of the docker images every hour     harbor_schedule_scan:       - cron: "0 0 * * * *"     # Schedule an automatic garbage collection every hour     harbor_schedule_gc:       - cron: "0 0 * * * *"     #Storge harbor installation file     harbor_install_tmp: /root/harbor     harbor_extras:       -  clair     #Folder installed harbor     harbor_install_dir: /opt/harbor     # The cert and key path is located in your ansible master, not the target hosts     # The default path for certs is controlled by this role See roles/default/main.yml     harbor_ssl_cert: "{{playbook_dir}}/certs/bundled_cert_file.pem"     harbor_ssl_cert_key: "{{playbook_dir}}/certs/server.key"     #ends up in harbor.yml     harbor_hostname: 192-168-22-8.my.local-ip.co     harbor_db_password: admin   roles:     - manueliglesiasgarcia.ansible_vmware_harbor 

Запускаем playbook

ansible-playbook -i inventory.ini install-harbor.yml -e "harbor_admin_password=password_for_harbor"

Где password_for_harbor пароль для harbor.

Скриншот:

ссылка на оригинал статьи https://habr.com/ru/post/549924/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *