Для использования защищенных протоколов 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 сертификат

pem сертификат необходим только для ExeMES

Первым шагом проверьте, что ваши ключи и сертификаты сгенерированы в формате, отличном от PEM: если содержимое файла начинается с -----BEGIN и его можно прочитать в текстовом редакторе, в файле используется base64, который читается в ASCII, а не в двоичном формате, то сертификат/ключ уже в формате PEM. Для таких сертификатов достаточно просто сохранить файл с расширением .pem используя команду

cp wildcard.[домен].crt wildcard.[домен].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 сертификат

jks сертификат необходим только для ExeMES

Для конвертации в jks необходима утилита keytool которая входит в состав JDK. 

Пример команды для установки java (для CentOS):

sudo yum -y install java


 Сначала требуется создать сертификат в формате 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 сертификата"