3.9.2.3 Создание локального репозитория с использованием HTTPS
Скачать документ Предварительная настройка
Настройка SSL (HTTPS) для локального репозитория
Выпуск ключа и сертификата для веб-сервера
Настройка httpd для работы с SSL
Настройка на клиентском ПК
Окружение
- Версия РЕД ОС:
- Конфигурация: Рабочая станция, Сервер графический, Сервер минимальный
- Версия ПО: openssl-1:3.1.5-5, mod_ssl-2.4.58-1
В рамках данной статьи все действия должны выполняться с правами администратора системы или суперпользователя root.
Перейдите в сеанс пользователя root (если данная учётная запись включена):
su -
или выполните от имени администратора (пользователя в группе wheel) команду:
sudo su -
Предварительная настройка
В рамках предварительной настройки сервера создайте локальный репозиторий согласно нашей инструкции «Создание локального репозитория».
Настройка SSL (HTTPS) для локального репозитория
Использование SSL позволит обеспечить шифрование и целостность передаваемых данных, а также доверие к ресурсу, на котором расположены репозитории.
Выпуск ключа и сертификата для веб-сервера
Для настройки SSL необходимо получить SSL-сертификат от удостоверяющего центра (CA), запрос в который можно составить с помощью openssl:
1. Подготовьте файл конфигурации openssl для генерации запроса на сертификат веб-сервера:
nano /etc/httpd/openssl_repo.cnf
Содержимое файла:
[req]
default_bits = 2048
utf8 = yes
distinguished_name = req_distinguished_name
req_extensions = req_ext
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = RU
commonName = Common Name (FQDN)
commonName_max = 64
commonName_default = repo.your.domain
organizationName = Organization Name
organizationName_default = RedSoft
[req_ext]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
basicConstraints = CA:FALSE
subjectAltName = @alt_names
[alt_names]
DNS.1 = repo.your.domain
Значение repo.your.domain
необходимо заменить на полное имя вашего хоста (сайта), которое будет использоваться при доступе к данному веб-серверу с репозиториями.
DNS-имя веб-сервера должно корректно разрешаться на клиентах. Это достигается либо созданием соответствующей записи на DNS-сервере, либо добавлением IP-адреса и имени веб-сервера в файл /etc/hosts на каждом клиенте.
2. Выполните генерацию закрытого ключа веб-сервера:
openssl genpkey -algorithm RSA -out /etc/pki/tls/private/web_repo.key
3. Выполните формирование запроса на сертификат:
openssl req -new -key /etc/pki/tls/private/web_repo.key -config /etc/httpd/openssl_repo.cnf -reqexts req_ext -out /root/web_repo.csr
4. Используйте сформированный файл запроса /root/web_repo.csr для выпуска сертификата веб-сервера в центре сертификации.
5. Полученный из центра сертификации файл сертификата разметите в системе:
cp /<путь_к_сертификату>/<имя_серитификата>.cer /etc/pki/tls/certs/web_repo.cer
Вариант с созданием и использованием собственного центра сертификации на базе openssl рассмотрен в разделе «Генерация сертификата» статьи «Настройка SSL для веб-серверов».
В качестве временной альтернативы можно выпустить самоподписанный сертификат (без использования ЦС) сроком на 30 дней для веб-сервера с помощью команды:
openssl req -x509 -nodes -newkey rsa:2048 -days 30 -keyout /etc/pki/tls/private/web_repo.key -out /etc/pki/tls/certs/web_repo.cer
где:
-x509
— определяет необходимость создания самоподписанного сертификата, а не запроса на подпись;-nodes
— пропустить опцию защиты сертификата с помощью пароля;-newkey rsa:2048
— указывает необходимость генерации нового сертификата и нового ключа RSA длиной 2048 бит;-days 30
— определяет срок действия сертификата (в днях);-keyout
— каталог хранения и имя закрытого ключа;-out
— каталог хранения и имя создаваемого сертификата.
Потребуется указать некоторые данные для запроса сертификата - страну, область, город или другой населенный пункт, наименование организации, наименование подразделения организации и сервер. Важным параметром здесь является Common Name (CN)
, где необходимо указать доменное имя сервера или его IP-адрес.
Generating a RSA private key .......................................................+++++ ...........................................................................................................................................................................+++++ writing new private key to '/var/lib/dnf/server2.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:ru State or Province Name (full name) []:msk Locality Name (eg, city) [Default City]:msk Organization Name (eg, company) [Default Company Ltd]:rs Organizational Unit Name (eg, section) []:rs Common Name (eg, your name or your server's hostname) []:repo.your.domain Email Address []:admin@rs.ru
В результате будут сформированы необходимые файлы — закрытый ключ и самоподписанный сертификат.
Настройка httpd для работы с SSL
Установите дополнительный модуль веб-сервера:
dnf install mod_ssl
Откройте файл конфигурации SSL службы httpd:
nano /etc/httpd/conf.d/ssl.conf
В секции определения настроек виртуального хоста SSL заполните выделенные параметры (раскомментируйте при необходимости):
<VirtualHost _default_:443>
ServerName repo.your.domain
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/web_repo.cer
SSLCertificateKeyFile /etc/pki/tls/private/web_repo.key
</VirtualHost>
Для корректной работы значение параметра ServerName
должно совпадать со значением полей Common Name
и Subject Alternative Name
сертификата веб-сервера.
Перезапустите httpd и проверьте его статус:
systemctl restart httpd systemctl status httpd
Настройка на клиентском ПК
Для подключения локального репозитория на клиенте создайте запись для репозитория в каталоге /etc/yum.repos.d/, например:
nano /etc/yum.repos.d/RedOS8-Base-local.repo
Заполните файл следующим содержимым:
[RedOS8-Base-local]
name=Local RED OS 8 Base repo
baseurl=https://repo.your.domain/repos/redos8/redos8_base_src/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
enabled=1
Значение параметра baseurl
задайте в зависимости от протокола, имени или IP-адреса сервера и пути к репозиторию.
Доступ к веб-серверу необходимо обеспечить по его DNS-имени.
С сервера, на котором настроен локальный репозиторий, необходимо скопировать сертификаты корневого и промежуточных центров сертификации (CA) в хранилище доверенных корневых сертификатов клиента. Скопировать необходимые файлы сертификатов на клиентскую машину можно, например, посредством команды scp.
На клиенте скопируйте полученный файл в хранилище сертификатов и обновите список доверенных сертификатов CA:
cp /<путь_к_сертификату>/CA.cer /etc/pki/ca-trust/source/anchors/ update-ca-trust extract
Если используется временный самоподписанный сертификат веб-сервера, то в конфигурационный файл репозитория /etc/yum.repos.d/RedOS8-Base-local.repo потребуется добавить строку sslverify=0
.
По умолчанию параметр sslverify=1
, однако в случае если сертификат не был добавлен в доверенные корневые сертификаты клиента, необходимо использовать значение 0
(раскомментировать строку #sslverify=1
) для пропуска его проверки.
Настройка обращения к локальным репозиториям Base и Updates может быть осуществлена двумя способами:
созданием собственных файлов репозиториев;
редактированием файлов репозиториев, используемых по умолчанию.
При создании собственных файлов локальных репозиториев не рекомендуется удалять имеющиеся файлы репозиториев по умолчанию (RedOS-Base.repo, RedOS-Updates.repo) – их необходимо отключить, изменив значение параметра enabled=1
на enabled=0
! Иначе при обновлении системы данные файлы вновь появятся в каталоге /etc/yum.repos.d/.
В случае если были изменены и настроены файлы репозиториев по умолчанию (RedOS-Base.repo, RedOS-Updates.repo), после обновления системы в каталоге /etc/yum.repos.d/ будут сохранены новые файлы расширением .rpmnew – они являются резервной копией стандартных конфигурационных файлов и не повлияют на текущую настройку локальных репозиториев, удалять их не рекомендуется.
Обновите информацию о репозиториях, для этого выполните следующие команды:
dnf makecache
Если настройка выполнена верно, команда будет завершена без ошибок.
Дата последнего изменения: 16.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.