8.4. Red Hat Single Sign-On 서버에 HTTPS/SSL 활성화
역방향 프록시 또는 로드 밸런서를 사용하여 HTTPS 트래픽을 처리하지 않는 경우 Red Hat Single Sign-On 서버에 대해 HTTPS를 활성화해야 합니다. 여기에는 다음이 포함됩니다.
- SSL/HTTP 트래픽을 위한 개인 키 및 인증서가 포함된 키 저장소 가져오기 또는 생성
- 이 키 쌍과 인증서를 사용하도록 Red Hat Single Sign-On 서버 구성.
8.4.1. 인증서 및 Java 키 저장소 생성
HTTPS 연결을 허용하려면 자체 서명된 인증서 또는 타사 서명된 인증서를 가져와 Red Hat Single Sign-On Server를 배포하는 웹 컨테이너에서 HTTPS를 활성화하기 전에 Java 키 저장소로 가져와야 합니다.
8.4.1.1. 자체 서명된 인증서
개발 시 Red Hat Single Sign-On 배포를 테스트하는 데 사용할 수 있는 타사 서명 인증서가 없으므로 Java JDK와 함께 제공되는 keytool
유틸리티를 사용하여 자체 서명된 인증서를 생성해야 합니다.
keytool -genkey -alias localhost -keyalg RSA -keystore keycloak.jks -validity 10950
$ keytool -genkey -alias localhost -keyalg RSA -keystore keycloak.jks -validity 10950
Enter keystore password: secret
Re-enter new password: secret
What is your first and last name?
[Unknown]: localhost
What is the name of your organizational unit?
[Unknown]: Keycloak
What is the name of your organization?
[Unknown]: Red Hat
What is the name of your City or Locality?
[Unknown]: Westford
What is the name of your State or Province?
[Unknown]: MA
What is the two-letter country code for this unit?
[Unknown]: US
Is CN=localhost, OU=Keycloak, O=Test, L=Westford, ST=MA, C=US correct?
[no]: yes
무엇이 첫 번째이자 마지막 이름인지 질문이 표시되면 서버를 설치하는 시스템의 DNS 이름을 제공하십시오
. 테스트를 위해 localhost
를 사용해야 합니다. 이 명령을 실행하면 에서 keytool
명령을 실행한 것과 동일한 디렉터리에 keycloak.jks
파일이 생성됩니다.
타사 서명 인증서를 원하지만 존재하지 않는 경우 cacert.org 에서 무료로 사용할 수 있습니다. 그러나 먼저 다음 절차를 사용해야 합니다.
절차
인증서 요청을 생성합니다.
keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
$ keytool -certreq -alias yourdomain -keystore keycloak.jks > keycloak.careq
Copy to Clipboard Copied! 여기서
yourdomain
은 이 인증서가 생성되는 DNS 이름입니다. keytool은 요청을 생성합니다.-----BEGIN NEW CERTIFICATE REQUEST----- MIIC2jCCAcICAQAwZTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMREwDwYDVQQHEwhXZXN0Zm9y ZDEQMA4GA1UEChMHUmVkIEhhdDEQMA4GA1UECxMHUmVkIEhhdDESMBAGA1UEAxMJbG9jYWxob3N0 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr7kck2TaavlEOGbcpi9c0rncY4HhdzmY Ax2nZfq1eZEaIPqI5aTxwQZzzLDK9qbeAd8Ji79HzSqnRDxNYaZu7mAYhFKHgixsolE3o5Yfzbw1 29RvyeUVe+WZxv5oo9wolVVpdSINIMEL2LaFhtX/c1dqiqYVpfnvFshZQaIg2nL8juzZcBjj4as H98gIS7khql/dkZKsw9NLvyxgJvp7PaXurX29fNf3ihG+oFrL22oFyV54BWWxXCKU/GPn61EGZGw Ft2qSIGLdctpMD1aJR2bcnlhEjZKDksjQZoQ5YMXaAGkcYkG6QkgrocDE2YXDbi7GIdf9MegVJ35 2DQMpwIDAQABoDAwLgYJKoZIhvcNAQkOMSEwHzAdBgNVHQ4EFgQUQwlZJBA+fjiDdiVzaO9vrE/i n2swDQYJKoZIhvcNAQELBQADggEBAC5FRvMkhal3q86tHPBYWBuTtmcSjs4qUm6V6f63frhveWHf PzRrI1xH272XUIeBk0gtzWo0nNZnf0mMCtUBbHhhDcG82xolikfqibZijoQZCiGiedVjHJFtniDQ 9bMDUOXEMQ7gHZg5q6mJfNG9MbMpQaUVEEFvfGEQQxbiFK7hRWU8S23/d80e8nExgQxdJWJ6vd0X MzzFK6j4Dj55bJVuM7GFmfdNC52pNOD5vYe47Aqh8oajHX9XTycVtPXl45rrWAH33ftbrS8SrZ2S vqIFQeuLL3BaHwpl3t7j2lMWcK1p80laAxEASib/fAwrRHpLHBXRcq6uALUOZl4Alt8= -----END NEW CERTIFICATE REQUEST-----
-----BEGIN NEW CERTIFICATE REQUEST----- MIIC2jCCAcICAQAwZTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMREwDwYDVQQHEwhXZXN0Zm9y ZDEQMA4GA1UEChMHUmVkIEhhdDEQMA4GA1UECxMHUmVkIEhhdDESMBAGA1UEAxMJbG9jYWxob3N0 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr7kck2TaavlEOGbcpi9c0rncY4HhdzmY Ax2nZfq1eZEaIPqI5aTxwQZzzLDK9qbeAd8Ji79HzSqnRDxNYaZu7mAYhFKHgixsolE3o5Yfzbw1 29RvyeUVe+WZxv5oo9wolVVpdSINIMEL2LaFhtX/c1dqiqYVpfnvFshZQaIg2nL8juzZcBjj4as H98gIS7khql/dkZKsw9NLvyxgJvp7PaXurX29fNf3ihG+oFrL22oFyV54BWWxXCKU/GPn61EGZGw Ft2qSIGLdctpMD1aJR2bcnlhEjZKDksjQZoQ5YMXaAGkcYkG6QkgrocDE2YXDbi7GIdf9MegVJ35 2DQMpwIDAQABoDAwLgYJKoZIhvcNAQkOMSEwHzAdBgNVHQ4EFgQUQwlZJBA+fjiDdiVzaO9vrE/i n2swDQYJKoZIhvcNAQELBQADggEBAC5FRvMkhal3q86tHPBYWBuTtmcSjs4qUm6V6f63frhveWHf PzRrI1xH272XUIeBk0gtzWo0nNZnf0mMCtUBbHhhDcG82xolikfqibZijoQZCiGiedVjHJFtniDQ 9bMDUOXEMQ7gHZg5q6mJfNG9MbMpQaUVEEFvfGEQQxbiFK7hRWU8S23/d80e8nExgQxdJWJ6vd0X MzzFK6j4Dj55bJVuM7GFmfdNC52pNOD5vYe47Aqh8oajHX9XTycVtPXl45rrWAH33ftbrS8SrZ2S vqIFQeuLL3BaHwpl3t7j2lMWcK1p80laAxEASib/fAwrRHpLHBXRcq6uALUOZl4Alt8= -----END NEW CERTIFICATE REQUEST-----
Copy to Clipboard Copied! 이 CA 요청을 CA(인증 기관)로 보냅니다.
CA는 서명된 인증서를 발행하여 사용자에게 보냅니다.
CA의 루트 인증서를 가져와 가져옵니다.
CA(즉, root.crt)에서 인증서를 다운로드하고 다음과 같이 가져올 수 있습니다.
keytool -import -keystore keycloak.jks -file root.crt -alias root
$ keytool -import -keystore keycloak.jks -file root.crt -alias root
Copy to Clipboard Copied! 새 CA 생성 인증서를 키 저장소로 가져옵니다.
keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
$ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
Copy to Clipboard Copied!
8.4.2. 키 저장소를 사용하도록 Red Hat Single Sign-On 구성
이제 적절한 인증서가 있는 Java 키 저장소가 있으므로 이를 사용하도록 Red Hat Single Sign-On 설치를 구성해야 합니다. 설치에 적용되는 구성 절차를 사용합니다.
8.4.2.1. JBoss Security Legacy
절차
- 키 저장소를 사용하고 HTTPS를 활성화하도록 standalone.xml,standalone-ha.xml 또는 host.xml 파일을 편집합니다.
키 저장소 파일을 배포의 구성 디렉터리 또는 선택한 위치에 있는 파일로 이동하여 절대 경로를 제공합니다.
절대 경로를 사용하는 경우 구성에서 선택적
relative-to
매개 변수를 제거합니다( 운영 모드참조).-
JBoss EAP의
bin
디렉토리에sso_legacy.cli
라는 배치 파일을 만듭니다. 배치 파일에 다음 내용을 추가합니다.
Start batching commands Run the batch commands
# Start batching commands batch /core-service=management/security-realm=UndertowRealm:add() /core-service=management/security-realm=UndertowRealm/server-identity=ssl:add(keystore-path=keycloak.jks, keystore-relative-to=jboss.server.config.dir, keystore-password=secret) /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=security-realm, value=UndertowRealm) # Run the batch commands run-batch
Copy to Clipboard Copied! - Red Hat Single Sign-On 서버를 시작합니다.
-
JBoss EAP의
bin
디렉토리로 변경합니다. 다음 스크립트를 실행합니다.
sh jboss-cli.sh --connect --file=sso_legacy.cli
$ sh jboss-cli.sh --connect --file=sso_legacy.cli The batch executed successfully process-state: reload-required
Copy to Clipboard Copied! -
sso_legacy.cli
변경 사항이 적용되도록 Red Hat Single Sign-On 서버를 다시 시작합니다.
8.4.2.2. Elytron TLS v1.2
절차
-
JBoss EAP의
bin
디렉토리에sso.cli
라는 배치 파일을 생성합니다. 배치 파일에 다음 내용을 추가합니다.
Start batching commands Add the keystore, key manager and ssl context configuration in the elytron subsystem Change the undertow subsystem configuration to use the ssl context defined in the previous step for https Run the batch commands
# Start batching commands batch # Add the keystore, key manager and ssl context configuration in the elytron subsystem /subsystem=elytron/key-store=httpsKS:add(relative-to=jboss.server.config.dir,path=keycloak.jks,credential-reference={clear-text=secret},type=JKS) /subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=secret}) /subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=["TLSv1.2"]) # Change the undertow subsystem configuration to use the ssl context defined in the previous step for https /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=httpsSSC) # Run the batch commands run-batch
Copy to Clipboard Copied! - Red Hat Single Sign-On 서버를 시작합니다.
-
JBoss EAP의
bin
디렉토리로 변경합니다. 다음 스크립트를 실행합니다.
sh jboss-cli.sh --connect --file=sso.cli
$ sh jboss-cli.sh --connect --file=sso.cli The batch executed successfully process-state: reload-required
Copy to Clipboard Copied! -
sso.cli
변경 사항이 적용되도록 Red Hat Single Sign-On 서버를 다시 시작합니다.
TLS 구성에 대한 자세한 내용은 WildFly 문서를 참조하십시오.
8.4.2.3. Elytron TLS 1.3
절차
-
JBoss EAP의
bin
디렉토리에sso.cli
라는 배치 파일을 생성합니다. 배치 파일에 다음 내용을 추가합니다.
batch # Add the keystore, key manager and ssl context configuration in the elytron subsystem /subsystem=elytron/key-store=httpsKS:add(relative-to=jboss.server.config.dir,path=keycloak.jks,credential-reference={clear-text=secret},type=JKS) /subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=secret}) /subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=["TLSv1.3"]) /subsystem=elytron/server-ssl-context=httpsSSC:write-attribute(name=cipher-suite-names,value=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256) # Change the undertow subsystem configuration to use the ssl context defined in the previous step for https /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=httpsSSC) # Run the batch commands run-batch
batch # Add the keystore, key manager and ssl context configuration in the elytron subsystem /subsystem=elytron/key-store=httpsKS:add(relative-to=jboss.server.config.dir,path=keycloak.jks,credential-reference={clear-text=secret},type=JKS) /subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS,credential-reference={clear-text=secret}) /subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM,protocols=["TLSv1.3"]) /subsystem=elytron/server-ssl-context=httpsSSC:write-attribute(name=cipher-suite-names,value=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256) # Change the undertow subsystem configuration to use the ssl context defined in the previous step for https /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=httpsSSC) # Run the batch commands run-batch
Copy to Clipboard Copied! - Red Hat Single Sign-On 서버를 시작합니다.
-
JBoss EAP의
bin
디렉토리로 변경합니다. 다음 스크립트를 실행합니다.
sh jboss-cli.sh --connect --file=sso.cli
$ sh jboss-cli.sh --connect --file=sso.cli The batch executed successfully process-state: reload-required
Copy to Clipboard Copied! -
sso.cli
변경 사항이 적용되도록 Red Hat Single Sign-On 서버를 다시 시작합니다.
TLS 구성에 대한 자세한 내용은 WildFly 문서를 참조하십시오.