2.9.2.3 Создание локального репозитория с использованием HTTPS
Скачать документ Настройка сервера
Настройка клиента
Настройка сервера
Сначала потребуется установить пакеты, необходимые для работы веб-сервера. Для этого перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install @web-server
Далее необходимо создать локальный репозиторий. Для этого воспользуйтесь нашей статьей «Создание локального репозитория».
Затем создайте самоподписанный сертификат:
openssl req -x509 -nodes -newkey rsa:2048 -keyout /var/lib/dnf/server.key -out /var/lib/dnf/server.cert
где:
-x509
— определяет необходимость создания самоподписанного сертификата, а не запроса на подпись;-nodes
— пропустить опцию защиты сертификата с помощью пароля;-newkey rsa:2048
— указывает необходимость генерации нового сертификата и нового ключа RSA длиной 2048 бит;-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) []:server-repo Email Address []:admin@rs.ru
Далее в файле /etc/httpd/conf.d/ssl.conf необходимо указать путь к созданным файлам сертификата и ключа:
nano /etc/httpd/conf.d/ssl.conf
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that restarting httpd will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
# require an ECC certificate which can also be configured in
# parallel.
SSLCertificateFile /var/lib/dnf/server.cert
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
# ECC keys, when in use, can also be configured in parallel
SSLCertificateKeyFile /var/lib/dnf/server.key
Если SELinux на сервере включен, необходимо изменить метку файлов сертификата и ключа, чтобы httpd мог получить к ним доступ:
semanage fcontext -a -s system_u -t cert_t /var/lib/dnf/server.cert semanage fcontext -a -s system_u -t cert_t /var/lib/dnf/server.key restorecon -vF /var/lib/dnf/server.key /var/lib/dnf/server.cert
После этого потребуется перезапустить службу httpd командой:
systemctl restart httpd
Настройка клиента
С сервера, на котором настроен локальный репозиторий, необходимо скопировать самоподписанный сертификат в хранилище доверенных корневых сертификатов клиента:
cp server.cert /etc/pki/ca-trust/source/anchors/ update-ca-trust extract
Далее в директории /etc/yum.repos.d/* следует создать файл репозитория со следующим содержимым, например:
[repo]
baseurl=https://<server_hostname>/<repo-id>
enabled=1
#sslverify=false
По умолчанию параметр sslverify=true
, однако в случае если сертификат не был добавлен в доверенные корневые сертификаты клиента, необходимо использовать значение false
(раскомментировать строку #sslverify=false
) для пропуска его проверки.
Дата последнего изменения: 09.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.