1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jonothan-harbor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
configure_https.md 7.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 04:31 5fdf7b5

Настройка Harbor с HTTPS-доступом

Harbor не поставляется с сертификатами, по умолчанию он использует HTTP для обслуживания запросов к реестру. Однако для любой рабочей среды настоятельно рекомендуется включить безопасность. В Harbor есть экземпляр Nginx в качестве обратного прокси для всех сервисов. Вы можете использовать скрипт prepare для настройки Nginx и включения https.

Получение сертификата

Предположим, что имя хоста вашего реестра — reg.yourdomain.com, а его запись DNS указывает на хост, на котором вы запускаете Harbor. Сначала вам нужно получить сертификат от центра сертификации (ЦС). Сертификат обычно содержит файлы .crt и .key, например, yourdomain.com.crt и yourdomain.com.key.

В тестовой или разрабатываемой среде вы можете выбрать использование самозаверяющего сертификата вместо сертификата от ЦС. Приведённые ниже команды создают собственный сертификат:

  1. Создайте собственный сертификат ЦС:
  openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout ca.key \
    -x509 -days 365 -out ca.crt
  1. Сгенерируйте запрос на подпись сертификата (Certificate Signing Request):

Если вы используете полное доменное имя (FQDN), такое как reg.yourdomain.com, для подключения к хосту реестра, то вы должны использовать reg.yourdomain.com в качестве CN (Common Name). В противном случае, если вы используете IP-адрес для подключения к хосту реестра, CN может быть любым именем или чем-то подобным:

  openssl req \
    -newkey rsa:4096 -nodes -sha256 -keyout yourdomain.com.key \
    -out yourdomain.com.csr
  1. Сгенерируйте сертификат хоста реестра:

Если вы используете FQDN, такое как reg.yourdomain.com, для подключения хоста реестра, запустите эту команду, чтобы сгенерировать сертификат хоста реестра:

  openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out yourdomain.com.crt

Если вы используете IP, скажем 192.168.1.101, для подключения хоста реестра, вы можете вместо этого запустить следующую команду:

  echo subjectAltName = IP:192.168.1.101 > extfile.cnf

  openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out yourdomain.com
.crt

Конфигурация и установка

После получения файлов yourdomain.com.crt и yourdomain.com.key вы можете поместить их в каталог, такой как /root/cert/:

  cp yourdomain.com.crt /root/cert/
  cp yourdomain.com.key /root/cert/ 

Затем отредактируйте файл make/harbor.cfg, обновите имя хоста и протокол, а также обновите атрибуты ssl_cert и ssl_cert_key:

  #set hostname
  hostname = reg.yourdomain.com
  #set ui_url_protocol
  ui_url_protocol = https
  ......
  #The path of cert and key files for nginx, they are applied only the protocol is set to https 
  ssl_cert = /root/cert/yourdomain.com.crt
  ssl_cert_key = /root/cert/yourdomain.com.key

Сгенерируйте конфигурационные файлы для Harbor:

  ./prepare

Если Harbor уже запущен, остановите и удалите существующий экземпляр. Ваши данные изображений остаются в файловой системе:

  docker-compose down  

Наконец, перезапустите Harbor:

  docker-compose up -d

После настройки HTTPS для Harbor вы можете проверить это, выполнив следующие действия:

  1. Откройте браузер и введите адрес: https://reg.yourdomain.com . Он должен отобразить пользовательский интерфейс Harbor.

  2. На машине с демоном Docker убедитесь, что опция "-insecure-registry" отсутствует, и вы должны скопировать ca.crt, созданный на предыдущем шаге, в /etc/docker/certs.d/yourdomain.com (или IP вашего хоста реестра), если каталог не существует, создайте его. Если вы сопоставили порт 443 nginx с другим портом, вам следует вместо этого создать каталог /etc/docker/certs.d/yourdomain.com:port (или ваш хост реестра IP:порт). Затем выполните любую команду docker, чтобы проверить настройку, например:

  docker login reg.yourdomain.com

Если вы сопоставили 443 порт nginx с другим, вам необходимо добавить порт для входа, как показано ниже:

  docker login reg.yourdomain.com:port

Устранение неполадок

  1. Возможно, вы получите промежуточный сертификат от эмитента сертификатов. В этом случае вы должны объединить промежуточный сертификат со своим собственным сертификатом, чтобы создать Сертификатный пакет. Этого можно достичь с помощью следующей команды:

    cat intermediate-certificate.pem >> yourdomain.com.crt 
  2. В некоторых системах, где работает демон Docker, может потребоваться доверять сертификату на уровне ОС.
    Для Ubuntu это можно сделать с помощью следующих команд:

    cp youdomain.com.crt /usr/local/share/ca-certificates/reg.yourdomain.com.crt
    update-ca-certificates

    А для Red Hat (CentOS и т. д.) команды такие:

    cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/reg.yourdomain.com.crt
    update-ca-trust

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jonothan-harbor.git
git@api.gitlife.ru:oschina-mirror/jonothan-harbor.git
oschina-mirror
jonothan-harbor
jonothan-harbor
master