9.5. SSL 구성 마이그레이션


Elytron을 사용하여 다음 정보를 사용하도록 애플리케이션에서 SSL 구성을 마이그레이션합니다.

간단한 SSL 구성을 Elytron으로 마이그레이션

보안 영역을 사용하여 JBoss EAP 서버에 대한 HTTP 연결을 보호한 경우 이 섹션에 제공된 정보를 사용하여 SSL 구성을 Elytron으로 마이그레이션합니다.

사전 요구 사항

보안 영역을 사용하여 JBoss EAP 서버에 대한 보안 HTTP 연결을 준비합니다.

다음 예제에서는 security-realm 에 다음 키 저장소가 구성되어 있다고 가정합니다.

예: Security Cryostat 키 저장소를 사용한 SSL 구성

<security-realm name="ApplicationRealm">
  <server-identities>
    <ssl>
      <keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="keystore_password" alias="server" key-password="key_password" />
    </ssl>
  </server-identities>
</security-realm>

Elytron을 사용하여 동일한 구성을 수행하려면 다음 단계를 완료합니다.

프로세스

  1. 키 저장소 의 위치와 암호화된 암호를 지정하는 elytron 하위 시스템에 키 저장소를 생성합니다. 이 명령은 keytool 명령을 사용하여 키 저장소가 생성되었으며 해당 유형은 JKS 라고 가정합니다.

    /subsystem=elytron/key-store=LocalhostKeyStore:add(path=server.keystore,relative-to=jboss.server.config.dir,credential-reference={clear-text="keystore_password"},type=JKS)
  2. 이전 단계에서 정의된 키 저장소, 별칭 및 키 암호를 지정하는 elytron 하위 시스템에 key- manager 를 생성합니다.

    /subsystem=elytron/key-manager=LocalhostKeyManager:add(key-store=LocalhostKeyStore,alias-filter=server,credential-reference={clear-text="key_password"})
  3. 이전 단계에서 정의한 key-manager 를 참조하는 elytron 하위 시스템에서 server-ssl-context 를 생성합니다.

    /subsystem=elytron/server-ssl-context=LocalhostSslContext:add(key-manager=LocalhostKeyManager)
  4. 기존 security-realm 에서 새로 생성된 Elytron ssl-contexthttps-listener 를 전환합니다.

    batch
    /subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)
    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=LocalhostSslContext)
    run-batch
  5. 서버를 다시 로드합니다.

    reload

그러면 서버 구성 파일에 다음과 같은 elytron 하위 시스템 구성이 생성됩니다.

<subsystem xmlns="urn:wildfly:elytron:4.0" ...>
  ...
  <tls>
    <key-stores>
      <key-store name="LocalhostKeyStore">
        <credential-reference clear-text="keystore_password"/>
        <implementation type="JKS"/>
        <file path="server.keystore" relative-to="jboss.server.config.dir"/>
      </key-store>
    </key-stores>
    <key-managers>
      <key-manager name="LocalhostKeyManager" key-store="LocalhostKeyStore"  alias-filter="server">
        <credential-reference clear-text="key_password"/>
      </key-manager>
    </key-managers>
    <server-ssl-contexts>
      <server-ssl-context name="LocalhostSslContext" key-manager="LocalhostKeyManager"/>
    </server-ssl-contexts>
  </tls>
</subsystem>

그러면 서버 구성 파일에 다음과 같은 undertow 하위 시스템 구성이 생성됩니다.

<https-listener name="https" socket-binding="https" ssl-context="LocalhostSslContext" enable-http2="true"/>

자세한 내용은 Elytron Cryostat 및 How to Secure the Management Interfaces in the JBoss EAP 7.4 How to Configure Server Security 를 참조하십시오.

9.5.1. CLIENT-CERT SSL 인증을 Elytron으로 마이그레이션

CLIENT-CERT SSL 인증을 활성화하려면 인증 요소에 truststore 요소를 추가합니다.

<security-realm name="ManagementRealm">
  <server-identities>
    <ssl>
      <keystore path="server.keystore" relative-to="jboss.server.config.dir" keystore-password="KEYSTORE_PASSWORD" alias="server" key-password="key_password" />
    </ssl>
  </server-identities>
  <authentication>
    <truststore path="server.truststore" relative-to="jboss.server.config.dir" keystore-password="TRUSTSTORE_PASSWORD" />
    <local default-user="$local"/>
    <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
  </authentication>
</security-realm>
참고

CLIENT-CERT 인증이 발생하지 않으면 클라이언트가 로컬 메커니즘 또는 사용자 이름/암호 인증 메커니즘을 사용하도록 대체할 수 있습니다. CLIENT-CERT 기반 인증을 필수로 만들려면 로컬속성 요소를 제거합니다.

레거시 신뢰 저장소 는 다음 두 가지 방법으로 사용할 수 있습니다.

9.5.1.1. 기존 truststore 만 CA 포함

다음 단계에 따라 유효한 인증서 및 개인 키가 없는 사용자가 Elytron을 사용하여 서버에 액세스하지 못하도록 서버를 구성합니다.

프로세스

  1. 키 저장소 의 위치와 암호화된 암호를 지정하는 elytron 하위 시스템에 키 저장소를 생성합니다. 이 명령은 keytool 명령을 사용하여 키 저장소가 생성되었으며 해당 유형은 JKS 라고 가정합니다.

    /subsystem=elytron/key-store=LocalhostKeyStore:add(path=server.keystore,relative-to=jboss.server.config.dir,credential-reference={clear-text="keystore_password"},type=JKS)
  2. 신뢰 저장소의 위치와 암호화된 암호를 지정하는 elytron 하위 시스템에 키 저장소를 생성합니다. 이 명령은 keytool 명령을 사용하여 키 저장소가 생성되었으며 해당 유형은 JKS 라고 가정합니다.

    /subsystem=elytron/key-store=TrustStore:add(path=server.truststore,relative-to=jboss.server.config.dir,credential-reference={clear-text="truststore_password"},type=JKS)
  3. 이전에 정의된 LocalhostKeyStore 키 저장소, 별칭 및 키 암호를 지정하는 elytron 하위 시스템에 key-manager 를 생성합니다.

    /subsystem=elytron/key-manager=LocalhostKeyManager:add(key-store=LocalhostKeyStore,alias-filter=server,credential-reference={clear-text="key_password"})
  4. 이전에 생성한 신뢰 저장소의 키 저장소를 지정하는 elytron 하위 시스템에 trust- manager 를 생성합니다.

    /subsystem=elytron/trust-manager=TrustManager:add(key-store=TrustStore)
  5. 이전에 정의한 key-manager 를 참조하는 elytron 하위 시스템에서 server-ssl-context 를 생성하고, trust-manager 속성을 설정하고, 클라이언트 인증을 활성화합니다.

    /subsystem=elytron/server-ssl-context=LocalhostSslContext:add(key-manager=LocalhostKeyManager,trust-manager=TrustManager,need-client-auth=true)
  6. https-listener 를 새로 생성된 Elytron ssl-context 로 업데이트합니다.

    /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context,value=LocalhostSslContext)
  7. 서버를 다시 로드합니다.

    reload

그러면 서버 구성 파일에 다음과 같은 elytron 하위 시스템 구성이 생성됩니다.

<subsystem xmlns="urn:wildfly:elytron:4.0"...>
  ...
  <tls>
    <key-stores>
      <key-store name="LocalhostKeyStore">
        <credential-reference clear-text="keystore_password"/>
        <implementation type="JKS"/>
        <file path="server.keystore" relative-to="jboss.server.config.dir"/>
      </key-store>
      <key-store name="TrustStore">
        <credential-reference clear-text="truststore_password"/>
        <implementation type="JKS"/>
        <file path="server.truststore" relative-to="jboss.server.config.dir"/>
      </key-store>
    </key-stores>
    <key-managers>
      <key-manager name="LocalhostKeyManager" key-store="LocalhostKeyStore" alias-filter="server">
        <credential-reference clear-text="key_password"/>
      </key-manager>
    </key-managers>
    <trust-managers>
      <trust-manager name="TrustManager" key-store="TrustStore"/>
    </trust-managers>
    <server-ssl-contexts>
      <server-ssl-context name="LocalhostSslContext" need-client-auth="true" key-manager="LocalhostKeyManager" trust-manager="TrustManager"/>
    </server-ssl-contexts>
  </tls>
</subsystem>

그러면 서버 구성 파일에 다음과 같은 undertow 하위 시스템 구성이 생성됩니다.

<subsystem xmlns="urn:jboss:domain:undertow:14.0">
...
<https-listener name="https" socket-binding="https" ssl-context="LocalhostSslContext" enable-http2="true"/>
...
</subsystem>

9.5.1.2. Security Cryostat 및 Domains

보안 영역은 다음 두 가지 상황에서 사용됩니다.

  • 인증서 인증에 실패하면 암호 폴백 케이스에서 보안 영역이 사용됩니다.
  • 암호 및 인증서에 대한 권한 부여가 완료되면 영역은 개별 사용자의 역할을 제공합니다.

사전 정의된 Elytron ManagementDomain 보안 도메인 및 ManagementRealm 보안 영역을 사용할 수 있도록 사용자는 표준 속성 파일에 저장됩니다.

<security-domains>
    <security-domain name="ManagementDomain" default-realm="ManagementRealm" permission-mapper="default-permission-mapper">
        <realm name="ManagementRealm" role-decoder="groups-to-roles"/>
        <realm name="local"/>
    </security-domain>
</security-domains>
<security-realms>
    <properties-realm name="ManagementRealm">
        <users-properties path="mgmt-users.properties" relative-to="jboss.server.config.dir" digest-realm-name="ManagementRealm"/>
        <groups-properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/>
    </properties-realm>
</security-realms>

따라서 모든 클라이언트 인증서의 경우 사용자가 보안 영역에 있어야 합니다.

9.5.1.3. 주체 Decoder

인증서 인증이 사용되고 보안 영역에서 사용자 이름을 수락하여 ID를 확인하는 경우 클라이언트 인증서에서 사용자 이름을 가져오는 데 정의된 방법이 있어야 합니다.

이 경우 CN 속성은 인증서 제목에서 사용됩니다.

/subsystem=elytron/x500-attribute-principal-decoder=x500-decoder:add(attribute-name=CN)

9.5.1.4. HTTP 인증 internal

HTTP 연결의 경우 이전에 정의된 리소스를 사용하여 HTTP 인증 팩토리를 정의합니다. CLIENT_CERT 및 vmwareG EST 인증을 지원하도록 구성되어 있습니다.

속성 영역은 암호만 확인하고 클라이언트 인증서를 확인할 수 없으므로 먼저 구성 메커니즘 팩토리를 추가해야 합니다. 이렇게 하면 보안 영역에 대한 인증서 확인이 비활성화됩니다.

/subsystem=elytron/configurable-http-server-mechanism-factory=configured-cert:add(http-server-mechanism-factory=global, properties={org.wildfly.security.http.skip-certificate-verification=true})

HTTP 인증은 다음과 같이 생성할 수 있습니다.

./subsystem=elytron/http-authentication-factory=client-cert-digest:add(http-server-mechanism-factory=configured-cert,security-domain=ManagementDomain,mechanism-configurations=[{mechanism-name=CLIENT_CERT,pre-realm-principal-transformer=x500-decoder},{mechanism-name=DIGEST, mechanism-realm-configurations=[{realm-name=ManagementRealm}]}])

위의 명령은 다음과 같습니다.

<subsystem xmlns="urn:wildfly:elytron:4.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
  ...
  <http>
    ...
    <http-authentication-factory name="client-cert-digest" http-server-mechanism-factory="configured-cert" security-domain="ManagementDomain">
      <mechanism-configuration>
        <mechanism mechanism-name="CLIENT_CERT" pre-realm-principal-transformer="x500-decoder"/>
        <mechanism mechanism-name="DIGEST">
          <mechanism-realm realm-name="ManagementRealm"/>
        </mechanism>
      </mechanism-configuration>
    </http-authentication-factory>
    ...
    <configurable-http-server-mechanism-factory name="configured-cert" http-server-mechanism-factory="configured-cert">
        <properties>
            <property name="org.wildfly.security.http.skip-certificate-verification" value="true"/>
        </properties>
    </configurable-http-server-mechanism-factory>
    ...
  </http>
  ...
</subsystem>
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동