Для использования защищенных протоколов 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 используя команду
|
Если файл в двоичном формате, то преобразовать его можно используя следующую команду:
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):
|
Сначала требуется создать сертификат в формате 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 сертификата" |