← Навигация по документации

Обзор

Эта страница объясняет, как настроить Keystore, LDAP и WildFly для выполнения тестов TLS Handshake.

Создание серверного Keystore.p12

Для генерации нового файла keystore.p12 с алгоритмом ключа RSA используется следующая утилита:

keytool -genkeypair -keyalg RSA -keystore keystore.p12

После ввода команды пользователю будет предложено ввести данные, как показано ниже:

Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:
What is the name of your organizational unit?
  [Unknown]:
What is the name of your organization?
  [Unknown]:  dcm4che
What is the name of your City or Locality?
  [Unknown]:  Vienna
What is the name of your State or Province?
  [Unknown]:  Vienna
What is the two-letter country code for this unit?
  [Unknown]:  AT
Is CN=Unknown, OU=Unknown, O=dcm4che, L=Vienna, ST=Vienna, C=AT correct?
  [no]:  yes

Enter key password for <mykey>
        (RETURN if same as keystore password):
Re-enter new password:

Введённый пароль потребуется в описанной ниже конфигурации LDAP.

Создание серверного и клиентского Truststore

Создайте клиентский truststore (требуется в конфигурации WildFly) из clientKey, полученного со стороны клиента.

   keytool -importcert -file clientKey.pem -keystore client.truststore

Создайте серверный truststore (требуется в конфигурации WildFly).

   keytool -importcert -file keystore.pem -keystore server.truststore

Конфигурация LDAP для тестов TLS Handshake

  1. Поместите созданный файл keystore.p12 в расположение wildfly: $WILDFLY_HOME/standalone/configuration/dcm4chee-arc/keystore.p12
  2. На уровне устройства dcm4chee-arc добавьте атрибут dcmKeystoreURL; его значение должно указывать на расположение выше.
  3. На уровне устройства dcm4chee-arc добавьте ещё один атрибут — dcmKeystorePin. Значение должно быть паролем, использованным при генерации keystore.p12, как показано выше в разделе Creation of keystore.p12.
  4. На уровне устройства dcm4chee-arc измените значение userCertificate;binary так, чтобы оно указывало на серверный сертификат.
  5. Чтобы добавить клиентский сертификат в конфигурацию LDAP, можно добавить следующие атрибуты в новое устройство либо обновить существующее неиспользуемое устройство:
       objectClass: pkiUser
       userCertificate;binary: <add client certificate here>
    
    1. На уровне устройства dcm4chee-arc добавьте новую ссылку dicomAuthorizedNodeCertificateReference и укажите в качестве её значения устройство (недавно добавленное или обновлённое согласно п. 5), в котором содержится информация о клиентском сертификате.

Перейдите на вкладку Control на странице Configuration в UI архива и перезагрузите конфигурацию.

Конфигурация WildFly

  1. Измените файл $WILDFLY_HOME/standalone/configuration/application-roles.properties

       CN\=client,\ OU\=<authentication>,\ O\=JBoss,\ ST\=UP,\ C\=IN=JBossAdmin
       admin=JBossAdmin
    
  2. Добавьте приведённые ниже фрагменты кода в $WILDFLY_HOME/standalone/configuration/dcm4chee-arc.xml

....
....
<management>
        <security-realms>
        ....
        ....
        <security-realm name="UndertowRealm">
                <server-identities>
                    <ssl>
                        <keystore path="keystore.p12" relative-to="jboss.server.config.dir" keystore-password="myPass" alias="myAlias" key-password="myPass"/>
                    </ssl>
                </server-identities>
                <authentication>
                    <truststore path="client.truststore" relative-to="jboss.server.config.dir" keystore-password="clientPass"/>
                    <local default-user="$local" skip-group-loading="true"/>
                    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
                </authentication>
            </security-realm>
....
....
<subsystem xmlns="urn:jboss:domain:security:1.2">
            <security-domains>
            ....
            ....
            <security-domain name="client_cert_domain" cache-type="default">
                    <authentication>
                        <login-module code="CertificateRoles" flag="required">
                            <module-option name="verifier" value="org.jboss.security.auth.certs.AnyCertVerifier"/>
                            <module-option name="securityDomain" value="client_cert_domain"/>
                            <module-option name="rolesProperties" value="file:${jboss.server.config.dir}/application-roles.properties"/>
                        </login-module>
                    </authentication>
                    <jsse keystore-password="myPass" keystore-url="file:${jboss.server.config.dir}/keystore.p12" truststore-password="myPass" truststore-url="file:${jboss.server.config.dir}/server.truststore" cipher-suites="TLS_RSA_WITH_AES_128_CBC_SHA" client-auth="true" protocols="SSLv3, TLSv1"/>
                </security-domain>
....
....
<subsystem xmlns="urn:jboss:domain:undertow:3.0">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" max-post-size="100000000" socket-binding="http"/>
                <https-listener name="https" max-post-size="100000000" verify-client="REQUIRED" security- realm="UndertowRealm" socket-binding="https"/>
....
....