Эта страница объясняет, как настроить Keystore, LDAP и WildFly для выполнения тестов TLS Handshake.
Для генерации нового файла 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 (требуется в конфигурации WildFly) из clientKey, полученного со стороны клиента.
keytool -importcert -file clientKey.pem -keystore client.truststore
Создайте серверный truststore (требуется в конфигурации WildFly).
keytool -importcert -file keystore.pem -keystore server.truststore
objectClass: pkiUser
userCertificate;binary: <add client certificate here>
Перейдите на вкладку Control на странице Configuration в UI архива и перезагрузите конфигурацию.
Измените файл $WILDFLY_HOME/standalone/configuration/application-roles.properties
CN\=client,\ OU\=<authentication>,\ O\=JBoss,\ ST\=UP,\ C\=IN=JBossAdmin
admin=JBossAdmin
Добавьте приведённые ниже фрагменты кода в $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"/>
....
....