============================================= Настройка Wildfly для подключения к БД по SSL ============================================= :ref:`Введение ` :ref:`Создание клиентских trustore и keystore ` :ref:`Конфигурация datasource ` :ref:`Переменные среды JVM ` :ref:`Полезные ссылки ` .. _introduction: Введение -------- Перед настройкой защищенного соединения сначала необходимо настроить БД на работу по SSL и проверку клиентских сертификатов. Описание на странице :doc:`Настройка PostgreSQL на аутентификацию клиентов только по сертификату `. В статье описано как получить необходимые сертификаты и ключи: **postgresql.crt**, **postgresql.key**, **pg-client.crt**, **pg-client.key**. Сервер приложений Wildfly для подключения будет использовать клиентские сертификат и ключ, полученные при настройке БД. .. _trustore_keystore: Создание клиентских trustore и keystore --------------------------------------- Wildfly будет использовать truststore для валидации сертификата БД, а keystore для хранения клиентского ключа и сертификата. 1\) С помощью утилиты keytool создаем wildfly.truststore и добавляем в него доверенный сертификат postgresql.crt: :: keytool -import -file postgresql.crt -alias postgresql -keystore wildfly.truststore -storepass secret Будет спрошено доверять ли сертификату: ``Trust this certificate? [no]: yes`` 2\) С помощью OpenSSL создаем контейнер pkcs12 для клиентского ключа и сертификата: :: openssl pkcs12 -export -in pg-client.crt -inkey pg-client.key -out pg-client.p12 -name pg-client 3\) Создаем wildfly.keystore из полученного pkcs12: :: keytool -importkeystore -deststorepass secret -destkeystore wildfly.keystore -srckeystore pg-client.p12 -srcstoretype PKCS12 -srcstorepass secret -alias pg-client 4\) размещаем полученные truststore и keystore в нужном месте на хосте .. _datasource: Конфигурация datasource ----------------------- Настройка datasource описана на странице `Настройка Datasource `_ Для включения SSL в *connection-url* добавляются соответствующие параметры: :: jdbc:postgresql://localhost:5432/robin?currentSchema=orchestrator&ssl=true&sslmode=verify-full&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory ``ssl=true`` - использовать SSL соединение с БД ``sslmode=verify-full`` - шифрование данных, аутентификация по сертификату ``sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory`` - использовать keystore и truststore JVM для установления защищенного соединения (см. :ref:`Переменные среды JVM `) Исправить существующие datasource можно через веб консоль Wildfly, в файле standalone.xml или с помощью Wildfly CLI: :: /subsystem=datasources/data-source=OrchestratorDS/:write-attribute(name=connection-url,value="jdbc:postgresql://localhost:5432/robin?currentSchema=orchestrator&ssl=true&sslmode=verify-full&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory") /subsystem=datasources/data-source=QuartzDS/:write-attribute(name=connection-url,value="jdbc:postgresql://localhost:5432/robin?currentSchema=quartz&ssl=true&sslmode=verify-full&sslfactory=org.postgresql.ssl.DefaultJavaSSLFactory") .. _java_opts: Переменные среды JVM -------------------- Нужно добавить переменные JAVA_OPTS сервера Wildfle и указать путь к полученным клиентским хранилищам. Для Linux (файл JBOSS_HOME/bin/standalone.conf): :: JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.keyStore=C:\wildfly-16.0.0.Final\standalone\configuration\wildfly.keystore -Djavax.net.ssl.keyStorePassword=secret" JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=C:\wildfly-16.0.0.Final\standalone\configuration\wildfly.truststore -Djavax.net.ssl.trustStorePassword=secret" Для Windows (файл JBOSS_HOME/bin/standalone.conf.bat) : :: set "JAVA_OPTS=%JAVA_OPTS% -Djavax.net.ssl.keyStore=C:\wildfly-16.0.0.Final\standalone\configuration\wildfly.keystore -Djavax.net.ssl.keyStorePassword=secret" set "JAVA_OPTS=%JAVA_OPTS% -Djavax.net.ssl.trustStore=C:\wildfly-16.0.0.Final\standalone\configuration\wildfly.truststore -Djavax.net.ssl.trustStorePassword=secret" .. _useful_links: Полезные ссылки --------------- Пример настройки защищенного соединения между WildFly и БД: https://mirocupak.com/secure-database-connection-with-wildfly/ Настройка SSL на WildFly: http://www.mastertheboss.com/jboss-server/jboss-security/complete-tutorial-for-configuring-ssl-https-on-wildfly Документация postgresql по ssl: https://www.postgresql.org/docs/11/libpq-ssl.html Параметры JDBC драйвера postgresql: https://jdbc.postgresql.org/documentation/head/connect.html