A.6. Elytron 客户端方双向示例

配置服务器 SSL 上下文后,如果可能,务必要测试配置。Elytron 客户端 SSL 上下文可以放在配置文件中,然后从管理 CLI 执行,从而能够测试服务器配置。这些步骤假定已完成服务器端配置,并且服务器已重新加载(如有必要)。

  1. 如果服务器和客户端密钥存储已存在,则继续下一步;否则,创建服务器和客户端密钥存储。

    $ keytool -genkeypair -alias localhost -keyalg RSA -keysize 1024 -validity 365 -keystore server.keystore.jks -dname "CN=localhost" -keypass secret -storepass secret
    $ keytool -genkeypair -alias client -keyalg RSA -keysize 1024 -validity 365 -keystore client.keystore.jks -dname "CN=client" -keypass secret -storepass secret
  2. 如果已经导出了服务器和客户端证书,则继续下一步;否则,导出服务器和客户端证书。

    $ keytool -exportcert  -keystore server.keystore.jks -alias localhost -keypass secret -storepass secret -file server.cer
    $ keytool -exportcert  -keystore client.keystore.jks -alias client -keypass secret -storepass secret -file client.cer
  3. 将服务器证书导入到客户端的信任存储中。

    $ keytool -importcert -keystore client.truststore.jks -storepass secret -alias localhost -trustcacerts -file server.cer
  4. 将客户端证书导入到服务器的信任存储中。

    $ keytool -importcert -keystore server.truststore.jks -storepass secret -alias client -trustcacerts -file client.cer
  5. example-security.xml 中定义客户端 SSL 上下文。此配置文件包含一个 Elytron authentication-client,它定义了用于出站连接的身份验证和 SSL 配置。以下 文件演示了定义客户端 SSL 上下文和密钥存储:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration>
        <authentication-client xmlns="urn:elytron:client:1.2">
            <key-stores>
                <key-store name="clientStore" type="jks" >
                    <file name="/path/to/client.truststore.jks"/>
                    <key-store-clear-password password="secret" />
                </key-store>
            </key-stores>
            <key-store name="clientKeyStore" type="jks" >
                <file name="/path/to/client.keystore.jks"/>
                <key-store-clear-password password="secret" />
            </key-store>
            <ssl-contexts>
                <ssl-context name="client-SSL-context">
                    <trust-store key-store-name="clientStore" />
                    <key-store-ssl-certificate key-store-name="clientKeyStore" alias="client">
                        <key-store-clear-password password="secret" />
                    </key-store-ssl-certificate>
                </ssl-context>
            </ssl-contexts>
            <ssl-context-rules>
                <rule use-ssl-context="client-SSL-context" />
            </ssl-context-rules>
        </authentication-client>
    </configuration>
  6. 使用管理 CLI,引用新创建的文件并尝试访问服务器。以下命令访问管理界面并执行 whoami 命令。

    $ EAP_HOME/bin/jboss-cli.sh -c --controller=remote+https://127.0.0.1:9993 -Dwildfly.config.url=/path/to/example-security.xml :whoami





更新于 2024-02-09