Предварительная настройка Настройка SSL (HTTPS) для локального репозитория Выпуск ключа и сертификата для веб-сервера Настройка httpd для работы с SSL Настройка на клиентском ПК
Окружение
В рамках данной статьи все действия должны выполняться с правами администратора системы или суперпользователя root.
Перейдите в сеанс пользователя root (если данная учётная запись включена):
su -
или выполните от имени администратора (пользователя в группе wheel) команду:
sudo su -
В рамках предварительной настройки сервера создайте локальный репозиторий согласно нашей инструкции «Создание локального репозитория».
Использование 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 необходимо заменить на полное имя вашего хоста (сайта), которое будет использоваться при доступе к данному веб-серверу с репозиториями.
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 — определяет необходимость создания самоподписанного сертификата, а не запроса на подпись;
-x509
-nodes — пропустить опцию защиты сертификата с помощью пароля;
-nodes
-newkey rsa:2048 — указывает необходимость генерации нового сертификата и нового ключа RSA длиной 2048 бит;
-newkey rsa:2048
-days 30 — определяет срок действия сертификата (в днях);
-days 30
-keyout — каталог хранения и имя закрытого ключа;
-keyout
-out — каталог хранения и имя создаваемого сертификата.
-out
Потребуется указать некоторые данные для запроса сертификата - страну, область, город или другой населенный пункт, наименование организации, наименование подразделения организации и сервер. Важным параметром здесь является Common Name (CN), где необходимо указать доменное имя сервера или его IP-адрес.
Common Name (CN)
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
В результате будут сформированы необходимые файлы — закрытый ключ и самоподписанный сертификат.
Установите дополнительный модуль веб-сервера:
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 сертификата веб-сервера.
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-адреса сервера и пути к репозиторию.
baseurl
Доступ к веб-серверу необходимо обеспечить по его 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=0
По умолчанию параметр sslverify=1, однако в случае если сертификат не был добавлен в доверенные корневые сертификаты клиента, необходимо использовать значение 0 (раскомментировать строку #sslverify=1) для пропуска его проверки.
sslverify=1
0
#sslverify=1
Настройка обращения к локальным репозиториям Base и Updates может быть осуществлена двумя способами:
созданием собственных файлов репозиториев;
редактированием файлов репозиториев, используемых по умолчанию.
При создании собственных файлов локальных репозиториев не рекомендуется удалять имеющиеся файлы репозиториев по умолчанию (RedOS-Base.repo, RedOS-Updates.repo) – их необходимо отключить, изменив значение параметра enabled=1 на enabled=0! Иначе при обновлении системы данные файлы вновь появятся в каталоге /etc/yum.repos.d/.
enabled=1
enabled=0
В случае если были изменены и настроены файлы репозиториев по умолчанию (RedOS-Base.repo, RedOS-Updates.repo), после обновления системы в каталоге /etc/yum.repos.d/ будут сохранены новые файлы расширением .rpmnew – они являются резервной копией стандартных конфигурационных файлов и не повлияют на текущую настройку локальных репозиториев, удалять их не рекомендуется.
Обновите информацию о репозиториях, для этого выполните следующие команды:
dnf makecache
Если настройка выполнена верно, команда будет завершена без ошибок.
Дата последнего изменения: 16.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.