1.2. JBoss EAP에 배포된 애플리케이션에 대해 단방향 SSL/TLS 활성화
JBoss EAP에 배포된 애플리케이션에 대해 단방향 SSL/TLS를 활성화하여 웹 브라우저와 같은 애플리케이션과 클라이언트 간의 통신이 안전합니다.
JBoss EAP에 배포된 애플리케이션에 대해 단방향 SSL/TLS를 활성화하려면 다음 절차를 사용하면 됩니다.
- 자동으로 생성된 자체 서명 인증서를 사용하여 애플리케이션에 대해 SSL/TLS 활성화: 개발 또는 테스트 환경에서만 이 절차를 사용하십시오. 이 절차에서는 구성을 수행하지 않고도 애플리케이션에 대해 SSL/TLS를 빠르게 활성화하는 데 도움이 됩니다.
- 마법사 를 사용하여 JBoss EAP에 배포된 애플리케이션에 대해 단방향 SSL/TLS를 활성화합니다. CLI 기반 마법사 를 사용하여 SSL/TLS를 신속하게 설정하려면 이 절차를 사용하십시오. Elytron은 마법사 입력을 기반으로 필요한 리소스를 만듭니다.
- 하위 시스템 명령을 사용하여 애플리케이션에 대해 단방향 SSL/TLS 활성화: 이 방법을 사용하여 수동으로 SSL/TLS를 활성화하는 데 필요한 리소스를 구성합니다. 리소스를 수동으로 구성하면 서버 구성을 보다 쉽게 제어할 수 있습니다.
또한 보안 명령을 사용하여 애플리케이션에 SSL/TLS 비활성화 절차를 사용하여 JBoss EAP에 배포된 애플리케이션의 SSL/TLS를 비활성화 할 수 있습니다.
1.2.1. Elytron의 기본 SSL 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
개발자가 애플리케이션에 대한 단방향 SSL/TLS를 빠르게 설정할 수 있도록 elytron 하위 시스템에는 기본적으로 개발 또는 테스트 환경에서 사용할 준비가 된 단방향 SSL/TLS가 포함되어 있습니다.
기본적으로 다음 리소스가 제공됩니다.
-
applicationKS라는키 저장소입니다. -
키
저장소를 참조하는.applicationKM이라는key-manager -
key-manager를 참조하는applicationSSC라는server-ssl-context.
기본 TLS 구성
...
<tls>
<key-stores>
<key-store name="applicationKS">
<credential-reference clear-text="password"/>
<implementation type="JKS"/>
<file path="application.keystore" relative-to="jboss.server.config.dir"/>
</key-store>
</key-stores>
<key-managers>
<key-manager name="applicationKM" key-store="applicationKS" generate-self-signed-certificate-host="localhost">
<credential-reference clear-text="password"/>
</key-manager>
</key-managers>
<server-ssl-contexts>
<server-ssl-context name="applicationSSC" key-manager="applicationKM"/>
</server-ssl-contexts>
</tls>
...
기본 key-manager 인applicationKM 에는 localhost 값이 있는 generate-self-signed-certificate-host 속성이 포함되어 있습니다. generate-self-signed-certificate-host 속성은 이 key-manager 가 서버의 인증서를 가져오는 데 사용될 때 키 저장소를 백업하는 파일이 존재하지 않는 경우 키 관리자가 공통 이름으로 localhost 를 사용하여 자체 서명 인증서를 자동으로 생성해야 함을 나타냅니다. 생성된 자체 서명 인증서는 키 저장소를 백업하는 파일에 저장됩니다.
서버가 설치될 때 기본 키 저장소를 백업하는 파일이 존재하지 않으므로 서버에 https 요청을 전송하면 자체 서명된 인증서가 생성되고 애플리케이션에 대해 단방향 SSL/TLS를 활성화합니다. 자세한 내용은 자동으로 생성된 자체 서명 인증서를 사용하여 애플리케이션에 대해 SSL/TLS 활성화를 참조하십시오.
1.2.2. 자동으로 생성된 자체 서명 인증서를 사용하여 애플리케이션에 SSL/TLS 활성화 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP는 서버가 HTTPS 요청을 처음 수신할 때 자체 서명된 인증서를 자동으로 생성합니다. elytron 하위 시스템에는 기본적으로 개발 또는 테스트 환경에서 사용할 준비가 된 키 저장소,key-manager, server-ssl-context 리소스도 포함되어 있습니다. 따라서 JBoss EAP가 자체 서명된 인증서를 생성하는 즉시 인증서를 사용하여 애플리케이션이 보호됩니다.
프로덕션 환경에서는 자체 서명된 인증서를 사용하지 마십시오. CA(인증 기관)에서 서명한 인증서만 사용합니다.
사전 요구 사항
- JBoss EAP가 실행 중입니다.
프로세스
포트
8443에서 서버 URL로 이동합니다(예: https://localhost:8443 ).JBoss EAP는 이 요청을 수신할 때 자체 서명된 인증서를 생성합니다. 이 인증서에 대한 자세한 내용은 서버 로그를 볼 수 있습니다.
생성된 인증서가 자체 서명되므로 브라우저에서 연결에 비보안으로 플래그를 지정합니다.
검증
브라우저와 서버 로그의 인증서와 제공되는 인증서 JBoss EAP를 비교합니다.
서버 로그 예
17:50:24,086 WARN [org.wildfly.extension.elytron] (default task-1) WFLYELY01085: Generated self-signed certificate at /home/user1/Downloads/wildflies/wildfly-27.0.1.Final/standalone/configuration/application.keystore. Please note that self-signed certificates are not secure and should only be used for testing purposes. Do not use this self-signed certificate in production. SHA-1 fingerprint of the generated key is 11:2f:e7:8c:18:b7:2c:c1:b0:5a:ad:ea:83:e0:32:59:ba:73:91:e2 SHA-256 fingerprint of the generated key is b2:a4:ed:b0:5c:c2:a1:4c:ca:39:03:e8:3a:11:e4:c5:c4:81:9d:46:97:7c:e6:6f:0c:45:f6:5d:64:3f:0d:64브라우저에 제공된 인증서 예
SHA-256 Fingerprint B2 A4 ED B0 5C C2 A1 4C CA 39 03 E8 3A 11 E4 C5 C4 81 9D 46 97 7C E6 6F 0C 45 F6 5D 64 3F 0D 64 SHA-1 Fingerprint 11 2F E7 8C 18 B7 2C C1 B0 5A AD EA 83 E0 32 59 BA 73 91 E2- 예와 같이 지문이 일치하는 경우 페이지로 이동할 수 있습니다.
애플리케이션에 대해 SSL/TLS가 활성화되어 있습니다.
1.2.3. 마법사를 사용하여 JBoss EAP에 배포된 애플리케이션에 대해 단방향 SSL/TLS 활성화 링크 복사링크가 클립보드에 복사되었습니다!
Elytron은 SSL/TLS를 신속하게 설정하는 마법사를 제공합니다. 인증서가 포함된 기존 키 저장소를 사용하거나 마법사에서 생성한 키 저장소 및 자체 서명 인증서를 사용하여 SSL/TLS를 활성화할 수 있습니다. --lets-encrypt 옵션을 사용하여 Let's Encrypt 인증 기관에서 인증서를 확보하고 사용할 수도 있습니다. Let's Encrypt에 대한 자세한 내용은 Let's Encrypt 설명서를 참조하십시오.
마법사에서 생성하는 자체 서명된 인증서를 사용하여 테스트 및 개발을 위해서만 SSL/TLS를 활성화합니다. 프로덕션 환경의 경우 항상 CA(인증 기관) 서명 인증서를 사용합니다.
프로덕션 환경에서는 자체 서명된 인증서를 사용하지 마십시오. CA(인증 기관)에서 서명한 인증서만 사용합니다.
마법사는 애플리케이션에 대해 SSL/TLS를 활성화하는 데 필요한 다음 리소스를 구성합니다.
-
key-store -
key-manager -
server-ssl-context -
그런 다음
server-ssl-context가https-listener에 적용됩니다.
Elytron은 각 리소스의 이름을 resource-type-UUID 로 지정합니다. 예를 들어 키 저장소-9e35a3be-62bb-4fff-afc2-2d8d141b82bc입니다. UUID(Universally unique identifier)는 리소스의 이름 충돌을 방지하는 데 도움이 됩니다.
사전 요구 사항
- JBoss EAP가 실행 중입니다.
프로세스
관리 CLI에 다음 명령을 입력하여 애플리케이션의 단방향 SSL/TLS를 구성하려면 마법사를 시작합니다.
구문
security enable-ssl-http-server --interactive메시지가 표시되면 필요한 정보를 입력합니다.
Let's Encrypt 인증 기관에서 인증서를 가져오고 사용하려면
--lets-encrypt옵션을 사용합니다.server-ssl-context가 이미 존재하는 경우 마법사는 다음 메시지와 함께 종료됩니다.An SSL server context already exists on the HTTPS listener, use --override-ssl-context option to overwrite the existing SSL context참고elytron하위 시스템에는 기본적으로 이미 구성된server-ssl-context리소스가 포함되어 있습니다. 따라서 새로 설치한 후 마법사를 처음 시작할 때--override-ssl-context옵션을 사용해야 합니다.자세한 내용은 Elytron의 기본 SSL 컨텍스트를 참조하십시오.
기존
server-ssl-context를 재정의하면 Elytron은 마법사에서 생성한server-ssl-context를 사용하여 SSL을 활성화합니다.참고단방향 SSL/TLS를 활성화하려면 SSL 상호 인증을 활성화하라는 메시지가 표시되면
n또는 blank를 입력합니다. 상호 인증을 설정하면 양방향 SSL/TLS가 활성화됩니다.마법사 시작 예
security enable-ssl-http-server --interactive --override-ssl-context마법사 프롬프트에 대한 입력 예
Please provide required pieces of information to enable SSL: Certificate info: Key-store file name (default default-server.keystore): exampleKeystore.pkcs12 Password (blank generated): secret What is your first and last name? [Unknown]: localhost What is the name of your organizational unit? [Unknown]: What is the name of your organization? [Unknown]: What is the name of your City or Locality? [Unknown]: What is the name of your State or Province? [Unknown]: What is the two-letter country code for this unit? [Unknown]: Is CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct y/n [y]?y Validity (in days, blank default): 365 Alias (blank generated): localhost Enable SSL Mutual Authentication y/n (blank n):n //For one way SSL/TLS enter blank or n here SSL options: keystore file: exampleKeystore.pkcs12 distinguished name: CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown password: secret validity: 365 alias: localhost Server keystore file exampleKeystore.pkcs12, certificate file exampleKeystore.pem and exampleKeystore.csr file will be generated in server configuration directory. Do you confirm y/n :yy를 입력하면 서버는 다음 출력으로 다시 로드됩니다.Server reloaded. SSL enabled for default-server ssl-context is ssl-context-4cba6678-c464-4dcc-90ff-9295312ac395 key-manager is key-manager-4cba6678-c464-4dcc-90ff-9295312ac395 key-store is key-store-4cba6678-c464-4dcc-90ff-9295312ac395
검증
https://localhost:8443 로 이동합니다.
자체 서명된 인증서를 사용한 경우 브라우저에서 서버에서 제공하는 인증서를 알 수 없다는 경고가 표시됩니다.
인증서를 검사하고 브라우저에 표시된 지문이 키 저장소의 인증서 지문과 일치하는지 확인합니다. 다음 명령을 사용하여 생성한 인증서를 볼 수 있습니다.
구문
/subsystem=elytron/key-store=<server_keystore_name>:read-alias(alias=<alias>)예제
/subsystem=elytron/key-store=key-store-4cba6678-c464-4dcc-90ff-9295312ac395:read-alias(alias="localhost")예를 들어 "key-store는 key-store-4cba6678-c464-4dcc-90ff-9295312ac395"와 같이 마법사 출력에서 키 저장소 이름을 가져올 수 있습니다.
출력 예
... "sha-1-digest" => "48:e3:6f:16:d1:af:4b:31:8f:9b:0b:7f:33:94:58:af:69:85:c 0:ea", "sha-256-digest" => "8f:3e:6b:b5:56:e0:d1:97:81:bc:f1:8d:c8:66:75:06:db:7d :4d:b6:b1:d3:34:dd:f5:6c:85:ca:c7:2b:5b:c7", ...
JBoss EAP에 배포된 애플리케이션에 대해 SSL/TLS가 활성화됩니다.
1.2.4. 하위 시스템 명령을 사용하여 애플리케이션에 대해 단방향 SSL/TLS 활성화 링크 복사링크가 클립보드에 복사되었습니다!
elytron 하위 시스템 명령을 사용하여 SSL/TLS를 사용하여 JBoss EAP에 배포된 애플리케이션을 보호합니다.
테스트 및 개발 목적으로 자체 서명된 인증서를 사용할 수 있습니다. 인증서가 포함된 기존 키 저장소를 사용하거나 키 저장소 리소스를 생성할 때 Elytron에서 생성하는 키 저장소를 사용할 수 있습니다. 프로덕션 환경의 경우 항상 CA(인증 기관) 서명 인증서를 사용합니다.
프로덕션 환경에서는 자체 서명된 인증서를 사용하지 마십시오. CA(인증 기관)에서 서명한 인증서만 사용합니다.
사전 요구 사항
- JBoss EAP가 실행 중입니다.
프로세스
인증서를 저장하도록 키 저장소를 구성합니다.
예를 들어 CA 서명 인증서가 포함된 키 저장소의 경로를 제공하거나 생성할 키 저장소의 경로를 제공할 수 있습니다.
/subsystem=elytron/key-store=<keystore_name>:add(path=<path_to_keystore>, credential-reference=<credential_reference>, type=<keystore_type>)예제
/subsystem=elytron/key-store=exampleKeyStore:add(path=exampleserver.keystore.pkcs12, relative-to=jboss.server.config.dir,credential-reference={clear-text=secret},type=PKCS12)키 저장소에 인증서가 포함되어 있지 않거나 위의 단계를 사용하여 키 저장소를 생성한 경우 인증서를 생성하고 인증서를 파일에 저장해야 합니다.
키 저장소에 키 쌍을 생성합니다.
구문
/subsystem=elytron/key-store=<keystore_name>:generate-key-pair(alias=<keystore_alias>,algorithm=<algorithm>,key-size=<key_size>,validity=<validity_in_days>,credential-reference=<credential_reference>,distinguished-name="<distinguished_name>")예제
/subsystem=elytron/key-store=exampleKeyStore:generate-key-pair(alias=localhost,algorithm=RSA,key-size=2048,validity=365,credential-reference={clear-text=secret},distinguished-name="CN=localhost")인증서를 파일에 저장합니다.
구문
/subsystem=elytron/key-store=<keystore_name>:store()예제
/subsystem=elytron/key-store=exampleKeyStore:store()
키
저장소를참조하는key-manager를 구성합니다.구문
/subsystem=elytron/key-manager=<key-manager_name>:add(key-store=<key-store_name>,credential-reference=<credential_reference>)예제
/subsystem=elytron/key-manager=exampleKeyManager:add(key-store=exampleKeyStore,credential-reference={clear-text=secret})중요elytron하위 시스템은KeyManagerFactory.getDefaultAlgorithm()을 사용하여 기본적으로 알고리즘을 결정하기 때문에 Red Hat은 알고리즘 속성을 지정하지 않았습니다. 그러나 알고리즘 특성을 지정할 수 있습니다.알고리즘 특성을 지정하려면 사용 중인 Java 개발 키트(JDK)에서 제공하는 키 관리자 알고리즘을 알아야 합니다. 예를 들어, JSSE(Java Secure Socket Extension)를 사용하는 JDK는 PKIX 및 SunX509 알고리즘을 제공합니다.
명령에서 SunX509를
키-manager알고리즘 속성으로 지정할 수 있습니다.key-manager를 참조하는server-ssl-context를 구성합니다.구문
/subsystem=elytron/server-ssl-context=<server-ssl-context_name>:add(key-manager=<key-manager_name>, protocols=<list_of_protocols>)예제
/subsystem=elytron/server-ssl-context=examplehttpsSSC:add(key-manager=exampleKeyManager, protocols=["TLSv1.2"])중요지원하려는 SSL/TLS 프로토콜을 결정해야 합니다. 예제 명령은 TLSv1.2를 사용합니다.
-
TLSv1.2 및 이전 버전의 경우
cipher-suite-filter인수를 사용하여 허용되는 암호화 제품군을 지정합니다. -
TLSv1.3의 경우
cipher-suite-names인수를 사용하여 허용되는 암호화 제품군을 지정합니다. TLSv1.3은 기본적으로 비활성화되어 있습니다.protocols속성 또는 지정된 세트에 TLSv1.3이 포함된 프로토콜을 지정하지 않으면cipher-suite-names를 구성하면 TLSv1.3을 활성화합니다.
use-cipher-suites-order인수를 사용하여 서버 암호화 제품군 순서를 준수합니다.use-cipher-suites-order속성은 기본적으로true로 설정됩니다. 이는 클라이언트 암호화 제품군 순서를 준수하는 레거시 보안 하위 시스템 동작과 다릅니다.-
TLSv1.2 및 이전 버전의 경우
구성된
server-ssl-context를 사용하도록 Cryostat를 업데이트합니다.구문
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=<server-ssl-context_name>)예제
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=examplehttpsSSC)서버를 다시 로드합니다.
reload
검증
https://localhost:8443 로 이동합니다.
자체 서명된 인증서를 사용한 경우 브라우저에서 서버에서 제공하는 인증서를 알 수 없다는 경고가 표시됩니다.
인증서를 검사하고 브라우저에 표시된 지문이 키 저장소의 인증서 지문과 일치하는지 확인합니다. 다음 명령을 사용하여 생성한 인증서를 볼 수 있습니다.
구문
/subsystem=elytron/key-store=<server_keystore_name>:read-alias(alias=<alias>)예제
/subsystem=elytron/key-store=exampleKeyStore:read-alias(alias=localhost)출력 예
... "sha-1-digest" => "cc:f1:82:59:c7:0d:f6:91:bc:3e:69:0a:38:fb:48:be:ec:7f:d 4:bd", "sha-256-digest" => "c0:f3:f9:8b:3c:f1:72:17:64:54:35:a6:bb:82:7e:51:b0:78 :30:cb:68:ef:04:0e:f5:2b:9d:62:ca:a7:f6:35", ...
JBoss EAP에 배포된 애플리케이션에 대해 SSL/TLS가 활성화됩니다.
1.2.5. 보안 명령을 사용하여 애플리케이션의 SSL/TLS 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
보안 명령을 사용하여 JBoss EAP에 배포된 애플리케이션의 SSL/TLS를 비활성화합니다. 명령을 사용하여 SSL/TLS를 비활성화해도 Elytron 리소스는 삭제되지 않습니다. 이 명령은 서버의 ssl-context 를 기본값 applicationSSC 로 설정합니다.
사전 요구 사항
- JBoss EAP가 실행 중입니다.
프로세스
관리 CLI에서
보안 disable-ssl-http-server명령을 사용합니다.security disable-ssl-http-server서버는 다음 출력으로 다시 로드됩니다.
... Server reloaded. SSL disabled for default-server
다음 절차 중 하나를 사용하여 JBoss EAP에 배포된 애플리케이션에 대해 SSL/TLS를 활성화할 수 있습니다.
- 자동으로 생성된 자체 서명 인증서를 사용하여 애플리케이션에 대해 SSL/TLS 활성화: 개발 또는 테스트 환경에서만 이 절차를 사용하십시오. 이 절차에서는 구성을 수행하지 않고도 애플리케이션에 대해 SSL/TLS를 빠르게 활성화하는 데 도움이 됩니다.
- 마법사 를 사용하여 JBoss EAP에 배포된 애플리케이션에 대해 단방향 SSL/TLS를 활성화합니다. CLI 기반 마법사 를 사용하여 SSL/TLS를 신속하게 설정하려면 이 절차를 사용하십시오. Elytron은 마법사 입력을 기반으로 필요한 리소스를 만듭니다.
- 하위 시스템 명령을 사용하여 애플리케이션에 대해 단방향 SSL/TLS 활성화: 이 방법을 사용하여 수동으로 SSL/TLS를 활성화하는 데 필요한 리소스를 구성합니다. 리소스를 수동으로 구성하면 서버 구성을 보다 쉽게 제어할 수 있습니다.