Для использования защищенных протоколов https ssl, необходимо сгенерировать и сконвертировать сертификаты для вашего домена.
Для создания и конвертации сертификатов необходимо установить openssl. Детальная инструкция по установке доступна по ссылке https://wiki.openssl.org/index.php/Binaries.
На первом шаге необходимо сгенерировать key файл. Для этого необходимо выполнить команду в терминале
openssl genrsa -out wildcard.[домен].key 2048
Затем необходимо создать файл cnf с конфигурационной информацией следующего содержания:
[ req ]
default_bits = 20482
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
C = RU
ST = Russia
L = Moscow
O = Exeplant
CN =[домен]
[ req_ext ]
subjectAltName = @alt_names
extendedKeyUsage = serverAuth, clientAuth
basicConstraints=CA:TRUE
[alt_names]
DNS.1 = keycloak.[домен]
DNS.2 = middleware.[домен]
DNS.3 = client.[домен]
DNS.4 = report.[домен]
DNS.5 = *.[домен]
После чего с использование key и cnf файла сгенерировать crt файл сертификата используя команду:
openssl req -x509 -nodes -newkey rsa:4096 -extensions req_ext -keyout wildcard.dev-test.local.key -out wildcard.dev-test.local.crt -days [срок действия сертификата в днях] -config wildcard.dev-test.local.cnf
Затем на основании crt файла необходимо сгенерировать pem сертификат
Если файл в двоичном формате, то преобразовать его можно используя следующую команду:
openssl x509 -inform DER -outform PEM -in wildcard.[домен].crt -out wildcard.[домен].pem
Также на основании crt файла необходимо сгенерировать pfx сертификат.
Для конвертации сертификатов в PFX необходимо воспользоваться следующей командой:
openssl pkcs12 -export -out wildcard.[домен].pfx -inkey wildcard.[домен].key -in wildcard.[домен].crt
После выполнения команды openssl запросит ввести новый пароль и подтвердить его, после чего, будет создан сертификат в формате pfx.
Получившийся сертификат необходимо скопировать несколько раз (по количеству используемых компонентов ПО) и переименовать в соответствии с названиями сервисов:
cp wildcard.[домен].pfx EXEMESMiddleware.pfx
cp wildcard.[домен].pfx EXEMESClient.pfx
cp wildcard.[домен].pfx EXEReport.pfx
Затем необходимо сгенерировать jks сертификат
Сначала требуется создать сертификат в формате PKCS#12 с помощью OpenSSL:
openssl pkcs12 -export -in wildcard.[домен].crt -inkey wildcard.[домен].key -out wildcard.[домен].p12
После выполнения команды openssl запросит ввести новый пароль и подтвердить его, после чего будет сгенерирован сертификат.
Далее, необходимо выполнить команду используя keytool:
keytool -importkeystore -srckeystore wildcard.[домен].p12 \
-srcstoretype PKCS12 \
-destkeystore wildcard.[домен].jks \
-deststoretype JKS
Для выполнения команды необходимо ввести пароль для хранилища JKS и пароль от ключа, введенного на предыдущем шаге.
После выполнения указанных операций, в папке появится хранилище ключей wildcard.[домен].jks
При установке в Docker необходимо внести правки в docker-compose.yaml в строке
source: ./crt/wildcard.[домен].crt
Для pfx сертификатов, необходимо изменить пароль в следующих строках:
ASPNETCORE_Kestrel__Certificates__Default__Password: "пароль указанный при генерации pfx сертификата"