Настройка SSL#
Использование защищенного соединения с помощью протокола Secure Socket Layer (SSL) в Artifactory является важной рекомендуемой практикой для обеспечения безопасности. SSL обеспечивает безопасность связи как при входящих, так и исходящих соединениях.
Исходящие SSL-взаимодействия:
Подключение к удаленным прокси-репозиториям через HTTPS;
Серверы с защитой SSL/TLS (SMTP-сервер).
Входящие SSL-взаимодействия:
Доступ к пользовательскому интерфейсу через веб-браузер по протоколу HTTPS;
Инструменты для доступа к содержимому репозитория;
Использование REST API.
Исходящий SSL - доверенные SSL-сертификаты удаленных репозиториев#
Если SSL-сертификат удаленного прокси-репозитория не является доверенным, репозиторий может быть автоматически заблокирован. В таком случае исходящие запросы будут завершаться ошибкой с сообщением PKIX path building failed.
Чтобы решить данную проблему, в конфигурации прокси-репозитория предусмотрен раздел Use the Nexus Repository truststore. Данный раздел позволяет управлять SSL-сертификатами удаленных репозиториев. Он доступен только в случае, если удаленное хранилище использует HTTPS.
Кнопка View certificate открывает диалоговое окно с подробной информацией о сертификате.

Когда сертификат не выдан доверенным центром сертификации и отсутствуете в стандартном хранилище Java, необходимо вручную подтвердить его доверие.
Чтобы подтвердить доверие сертификату:
Откройте окно Certificate Details, нажав на кнопку View certificate;
Нажмите на кнопку Add certificate to tuststore.
Данное действие аналогично использованию кнопки Add Certificate в разделе меню Администрирование -> Securiry -> SSL Certificates.
Чекбокс Use certificates stored in Nexus to connect to external systems указывает, что Artifactory будет проверять доверие не только через хранилище JVM, но и через внутреннее хранилище. Без добавления сертификата в частное хранилище и активации опции прокси репозиторий останется недоверенным.
Доверенные сертификаты из внутреннего хранилища и хранилища JVM объединены. Хранилище доверенных сертификатов Java по умолчанию содержит публичные сертификаты доверенных центров сертификации. Если сертификат подписан доверенным центром сертификации, то добавление в доверенное хранилище не требуется.
Исходящий SSL - глобальное доверенные SSL-сертификаты#
Менеджер репозиториев позволяет управлять доверием ко всем удаленным SSL-сертификатам через пользовательский интерфейс.
Для доступа к разделу управления SSL-сертификатами перейдите в раздел Администрирование -> Securiry -> SSL Certificates. Чтобы зайти в данный раздел пользователю необходимы права nx-all или nx-ssl-truststore.
Список сертификатов содержит доверенные сертификаты. Нажатие на строку сертификата предоставит подробную информацию о нем: информация о владельце, издателе и другие. Для удаления сертификата из хранилища нажмите кнопку Delete Certificate .
Кнопка Add Certificate, расположенная над списком, позволяет добавить новый сертификат из сервера или PEM файла.
При загрузке из сервера активируйте чекбокс Load from server и укажите полный URL удаленного сайта. Если сервер не доступен по URL, укажите только имя хоста или IP-адрес с портом через двоеточие (example.com:8443), в этом случае будет установлено прямое SSL-соединение.
В качестве альтернативы можно выбрать опцию Paste PEM, чтобы настроить доверие к удаленному сертификату вручную.
PEM(Privacy Enhanced Mail) - это формат файлов инфраструктуры открытых ключей, используемый для хранения ключей и сертификатов. Файлы PEM представляют собой Base64-кодированные сертификаты X.509 в формате DER.
Скопируйте и вставьте сертификат X.509 DER в текстовое поле так, чтобы он был обрамлен строками:
-----BEGIN CERTIFICATE-----
[Текст сертификата]
-----END CERTIFICATE-----
Обычно файл сертификата можно получить у его владельца. Для создания такого файла из командной строки используется команда keytool:
keytool -printcert -rfc -sslserver repo1.maven.org > repo1.pem
В результате создается файл repo1.pem текст закодированного сертификата, который можно вставить в соответствующее поле интерфейса.
Если менеджер репозитория успешно прочитает сертификат, отобразится подробная информация о нем. Обязательно проверьте всю информацию о сертификате, прежде чем добавлять его в хранилище доверенных сертификатов.
Исходящий SSL - доверенные SSL-сертификаты с помощью Keytool#
Управление доверенными SSL-сертификатами через командную строку с помощью Keytool является более сложной альтернативой управления сертификатами через пользовательский интерфейс.
Перед тем как приступить к управлению сертификатами из командной строки, потребуется:
Базовое понимание технологии SSL-сертификатов и работы с Java VM;
Доступ к командной строке операционной системы и программе Keytool;
Сетевой доступ к удаленному SSL-серверу, которому требуется настроить доверие, включая настройки HTTP-прокси при необходимости.
Если подключаетесь к серверам, сертификаты которых не подписаны публичным центром сертификации, необходимо выполнить следующие шаги:
Скопируйте файл по умолчанию
$JAVA_HOME/jre/lib/security/cacertsв$data-dir/custom-truststore.jksдля редактирования. Убедитесь, что у пользователя есть права на чтение этого файла;Добавьте нужные сертификаты в скопированное хранилище с помощью keytool;
Настройте системные свойства JSSE так, чтобы использовалось новое хранилище вместо стандартного. В файл
$install-dir/bin/nexus.vmoptionsнеобходимо добавить параметры.-Djavax.net.ssl.trustStore=<absolute_path_to_custom_truststore_file> -Djavax.net.ssl.trustStorePassword=<truststore_password>
После добавления параметров перезапустите Artifactory и проверьте подключение к удаленному репозиторию с использованием нового сертификата. Сертификаты из нового хранилища будут зарегистрированы как доверенные.
Настройка HTTPS для доступа к пользовательскому интерфейсу и содержимому#
Существует два варианта настройки HTTPS:
Использовать отдельный обратный прокси-сервер перед репозиторием для управления HTTPS. Обратный прокси принимает HTTPS-запросы и перенаправляет их на экземпляр Artifactory через HTTP;
Настроить экземпляр Artifactory для работы через HTTPS напрямую.
Использование обратного прокси-сервера#
Наиболее популярным способом защиты доступа к менеджеру репозиториев является использование выделенного сервера, который обрабатывает HTTPS-запросы вместо Artifactory. Такие сервисы называются обратными прокси или SSL/TLS терминаторами. После получения HTTPS-запрос перенаправляется на менеджер репозиториев по протоколу HTTP, а затем ответ от менеджера возвращается клиенту уже через HTTPS.
Прямое обслуживание SSL#
Альтернативный способ - настройка HTTPS-соединений непосредственно через сервер Eclipse Jetty, встроенный в менеджер репозиториев.
Активация HTTPS-коннектора#
Создайте файл Java keystore
$data-dir/etc/ssl/keystore.jks, содержащий SSL-сертификат для Jetty.Отредактируйте
$data-dir/etc/nexus.propertiesи сохраните файл после внесения следующих изменений.Добавьте новую строку, содержащую:
application-port-ssl=8443Измените 8443 на нужный порт, на котором будет работать HTTPS-коннектор. Убедитесь, что порт не используется другими процессами.
Найдите строку, содержащую
nexus-args, удалите ведущий#и пробел. Измените значение свойстваnexus-args, разделенного запятыми, на включающее${jetty.etc}/jetty-https.xml, чтобы получилось следующее
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xmlДобавьте новую строку, содержащую:
`ssl.etc=${karaf.data}/etc/ssl`Откройте файл
$install-dir/etc/jetty/jetty-https.xml(Обязательно) Установите одинаковые пароли для всех ключей в хранилище.
(Рекомендуется) Перед строкой, содержащей
<Set name=«KeyStorePath»>, добавьте новую строку с псевдонимом:
<Set name=«certAlias»>jetty</Set>Перезапустите менеджер репозиториев. Убедитесь, что соединение по HTTPS установлено.
Обновите базовый URL для использования HTTPS в конфигурации менеджера репозитория с помощью возможности Base URL.
Как отключить HTTP-коннектор#
Откройте файл конфигурации
$data-dir/etc/nexus.properties. Измените параметрnexus-args, удалив из негоjetty-http.xml;Сохраните файл;
Перезапустите Artifactory. Убедитесь, что обычные HTTP-запросы больше не обслуживаются.