4.2. 기본 SSL 컨텍스트를 로드하는 클라이언트 생성 예


다음 예제에서는 Ely tron 클라이언트에서 초기화한 SSLContext.getDefault() 메서드를 프로그래밍 방식으로 사용하고 사용하는 WildFlytronClientDefaultSSLContextProvider 공급자 를 등록하는 방법을 보여줍니다. 이 예제에서는 공급자에 대한 인수로 제공된 정적 클라이언트 구성을 사용합니다.

4.2.1. JBoss EAP 클라이언트용 Maven 프로젝트 생성

JBoss EAP에 배포된 애플리케이션에 대한 클라이언트를 생성하려면 필요한 종속성과 디렉터리 구조가 포함된 Maven 프로젝트를 생성합니다.

사전 요구 사항

프로세스

  1. mvn 명령을 사용하여 Maven 프로젝트를 설정합니다. 명령은 프로젝트에 대한 디렉터리 구조와 pom.xml 구성 파일을 생성합니다.

    $ mvn archetype:generate \
    -DgroupId=com.example.client \
    -DartifactId=client-ssl-context \
    -DarchetypeGroupId=org.apache.maven.archetypes \
    -DarchetypeArtifactId=maven-archetype-quickstart \
    -DinteractiveMode=false
  2. 애플리케이션 루트 디렉터리로 이동합니다.

    $ cd client-ssl-context
  3. 생성된 pom.xml 파일의 내용을 다음 텍스트로 바꿉니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.example.client</groupId>
      <artifactId>client-ssl-context</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <name>client-ssl-context</name>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
      </properties>
    
      <repositories>
        <repository>
          <id>jboss-public-maven-repository</id>
          <name>JBoss Public Maven Repository</name>
          <url>https://repository.jboss.org/nexus/content/groups/public/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </snapshots>
          <layout>default</layout>
        </repository>
        <repository>
          <id>redhat-ga-maven-repository</id>
          <name>Red Hat GA Maven Repository</name>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </snapshots>
          <layout>default</layout>
        </repository>
      </repositories>
    
      <dependencies>
        <dependency>                                         
    1
    
          <groupId>org.wildfly.security</groupId>
          <artifactId>wildfly-elytron-client</artifactId>
          <version>2.0.0.Final-redhat-00001</version>
        </dependency>
        <dependency>                                         
    2
    
          <groupId>org.wildfly.client</groupId>
          <artifactId>wildfly-client-config</artifactId>
          <version>1.0.1.Final-redhat-00001</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.4.0</version>
            <configuration>
              <mainClass>com.example.client.App</mainClass>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    1
    wildfly-elytron-client 에 대한 종속성입니다.
    2
    wildfly-client-config 에 대한 종속성입니다.
  4. src/test 디렉토리를 삭제합니다.

    $ rm -rf src/test/

검증

  • 애플리케이션 루트 디렉터리에 다음 명령을 입력합니다.

    $ mvn install

    다음과 유사한 출력이 표시됩니다.

    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.682 s
    [INFO] Finished at: 2023-10-31T01:32:17+05:30
    [INFO] ------------------------------------------------------------------------

4.2.2. 기본 SSLContext를 로드하는 클라이언트 생성

SSLContext.getDefault() 메서드를 사용하여 SSLContext 를 로드하는 JBoss EAP에 배포된 애플리케이션에 대한 클라이언트를 생성합니다.

이 절차에서 &lt ;application_home >은 애플리케이션의 pom.xml 구성 파일이 포함된 디렉터리를 나타냅니다.

사전 요구 사항

프로세스

  1. Java 파일을 저장할 디렉터리를 만듭니다.

    $ mkdir -p <application_home>/src/main/java/com/example/client
  2. 새 디렉터리로 이동합니다.

    $ cd <application_home>/src/main/java/com/example/client
  3. 다음 콘텐츠를 사용하여 Java 파일 App.java 를 생성합니다.

    package com.example.client;
    
    import java.io.IOException;
    import java.net.URI;
    import java.net.http.HttpClient;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.net.http.HttpResponse.BodyHandlers;
    import java.security.NoSuchAlgorithmException;
    import java.security.Security;
    import java.util.Properties;
    import javax.net.ssl.SSLContext;
    import org.wildfly.security.auth.client.WildFlyElytronClientDefaultSSLContextProvider;
    
    public class App  {
    
      public static void main( String[] args )  {
      String url = "https://localhost:8443/";                                                                                   
    1
    
      try {
        Security.insertProviderAt(new WildFlyElytronClientDefaultSSLContextProvider("src/wildfly-config-two-way-tls.xml"), 1);  
    2
    
        HttpClient httpClient = HttpClient.newBuilder().sslContext(SSLContext.getDefault()).build();
        HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(url))
                    .GET()
                    .build();
        HttpResponse<Void> httpRresponse = httpClient.send(request, BodyHandlers.discarding());
        String sslContext = SSLContext.getDefault().getProvider().getName();                                                    
    3
    
        System.out.println ("\nSSL Default SSLContext is: " + sslContext);
    
      } catch (NoSuchAlgorithmException | IOException | InterruptedException e) {
          e.printStackTrace();
        }
    
      System.exit(0);
      }
    }
    1
    JBoss EAP 홈 페이지 URL을 정의합니다.
    2
    보안 공급자를 등록합니다. 1 이 공급자의 우선 순위를 정의합니다. 공급자를 정적으로 등록하려면 java.security 파일의 공급자를 security.provider. 1=org.wildfly.security.auth.client.wildFlytronClientDefaultSSLContextProvider < PATH> / <TO> / <TO> /wildfly-two-way-tls.xml로 추가할 수 있습니다.
    3
    기본 SSL 컨텍스트를 가져옵니다.
  4. < application_home> /src 디렉터리에 "wildfly-config-two-way-tls.xml"이라는 클라이언트 구성 파일을 만듭니다.

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration>
        <authentication-client xmlns="urn:elytron:client:1.7">
            <key-stores>
                <key-store name="truststore" type="PKCS12">
                    <file name="${path_to_client_truststore}/client.truststore.p12"/>
                    <key-store-clear-password password="secret"/>
                </key-store>
                <key-store name="keystore" type="PKCS12">
                    <file name="${path_to_client_keystore}/exampleclient.keystore.pkcs12"/>
                    <key-store-clear-password password="secret"/>
                </key-store>
            </key-stores>
            <ssl-contexts>
                <ssl-context name="client-context">
                    <trust-store key-store-name="truststore"/>
                    <key-store-ssl-certificate key-store-name="keystore" alias="exampleclientkeystore">
                        <key-store-clear-password password="secret"/>
                    </key-store-ssl-certificate>
                </ssl-context>
            </ssl-contexts>
            <ssl-context-rules>
                <rule use-ssl-context="client-context"/>
            </ssl-context-rules>
        </authentication-client>
    </configuration>

    다음 위치 소유자 값을 실제 경로로 바꿉니다.

    • ${path_to_client_truststore}
    • ${path_to_client_keystore}

검증

  1. < application_home> 디렉터리 로 이동합니다.
  2. 애플리케이션을 실행합니다.

    $ mvn compile exec:java

    출력 예

    INFO: ELY00001: WildFly Elytron version 2.0.0.Final-redhat-00001
    
    SSL Default SSLContext is: WildFlyElytronClientDefaultSSLContextProvider

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동