Дополнительные настройки osmax-provisioner для работы по HTTPS
При необходимости использования доверенной установки ОС выполните настройки:
-
Подготовьте SSL-сертификаты, которые будут использоваться для шифрования соединений.
-
Разместите корневой сертификат УЦ и hash-имя в HTTPS-репозитории.
-
Укажите сертификат УЦ и закрытый ключ в конфигурационном файле веб-сервера.
-
Разместите сертификат УЦ и закрытый ключ в HTTPS-репозитории.
-
Сохраните корневой сертификат в файле
keystore.jksна устройстве, предварительно сконвертировав его в формат.der.
Выпуск сертификатов
Чтобы выпустить сертификаты с закрытыми ключами, выполните шаги:
-
Создайте сертификаты для HTTPS-сервера, выполнив команду:
mkdir -p https_key/src && cd https_key/src
-
Создайте корневой закрытый ключ, выполнив команду:
openssl genpkey -algorithm RSA -out rootCA.key -aes-128-cbc
-
Создайте корневой сертификат (открытый ключ), выполнив команду:
openssl req -x509 -new -key rootCA.key -sha256 -days 3650 -out rootCA.crt # Country Name (2 letter code) [AU]:RU # State or Province Name (full name) [Some-State]:Moscow # Locality Name (eg, city) []:Moscow # Organization Name (eg, company) [Internet Widgits Pty Ltd]:wd2 # Organizational Unit Name (eg, section) []:. # Common Name (e.g. server FQDN or YOUR name) []:wd2
-
Создайте файл
.srlпорядковых номеров для выпуска сертификатов и приведите его к виду:# cat rootCA.srl 00
-
Создайте конфигурационный файл
.cnfдля домена и приведите его к виду:cat provisioning.cnf [ req ] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = RU stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Moscow localityName = Locality Name (eg, city) localityName_default = Moscow organizationName = Organization Name (eg, company) organizationName_default = wd2 commonName = Common Name (eg, YOUR name or FQDN) commonName_max = 64 commonName_default = provisioning.wd2.local [ req_ext ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = DNS:provisioning.wd2.local
-
Создайте закрытый ключ для домена, выполнив команду:
openssl genpkey -algorithm RSA -out provisioning.key
-
Создайте файл запроса для домена, выполнив команду:
openssl req -new -key provisioning.key -config provisioning.cnf -reqexts req_ext -out provisioning.csr
-
Создайте сертификат для домена provisioner, выполнив команду:
openssl x509 -req -days 730 -CA rootCA.crt -CAkey rootCA.key -extfile provisioning.cnf -extensions req_ext -in provisioning.csr -out provisioning.crt
-
Создайте сертификат для нового домена (новая конечная точка (endpoint) HTTPS-репозиторий) по аналогии или используйте один wildcard-сертификат для всех, заменив на предыдущем шаге provisioning.wd2.local на *.wd2.local.
-
Создайте хеш-имя сертификата, выполнив команду:
cp /path/to/rootCA.crt /path/to/$(openssl x509 -noout -hash -in rootCA.crt).0
Конфигурация модуля osmax-provisioner
В конфигурационном файле application.properties
модуля osmax-provisioner раскомментируйте параметры:
## Параметры для настройки SSL-соединения ## Для включения режима работы по HTTPS, необходимо раскомментировать следующие параметры: ## Настройка для отклонения HTTP-запросов #quarkus.http.insecure-requests=disabled #quarkus.http.ssl-port=8081 ## Путь до хранилища сертификатов в формате JKS: #quarkus.http.ssl.certificate.key-store-file=/opt/osmax-core/keystore.jks ## Пароль от хранилища сертификатов: #quarkus.http.ssl.certificate.key-store-password=keystore@12345
Дополнительная конфигурация веб-сервера (на примере Nginx)
Для того чтобы веб-сервер мог обрабатывать безопасные HTTPS-запросы с использованием заданного сертификата и ключа, в его конфигурационном файле задайте настройки:
# Дополнить конфигурацию для работы по HTTPS.
# На примере Nginx
#cat /etc/nginx/sites-enabled/default
server {
listen 443 ssl;
server_name provisioning.wd2.local;
ssl_certificate /etc/nginx/ssl/provisioning.wd2.local.crt;
ssl_certificate_key /etc/nginx/ssl/provisioning.wd2.local.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
Где:
-
listen— настраивает прослушивание портов на сервере; -
server_name provisioning.wd2.local— имя хоста (домен), для которого будет работать данный виртуальный сервер; -
ssl_certificate— путь к файлу сертификата SSL, который будет использоваться для шифрования соединений; -
ssl_certificate_key— путь к файлу закрытого ключа, который соответствует сертификату SSL; -
ssl_protocols— поддерживаемые версии протокола TLS; -
ssl_ciphers— набор шифров, которые могут использоваться для шифрования соединений.