7.3. HTTPS/SSL 설정
Red Hat Single Sign-On은 기본적으로 SSL/HTTPS를 처리하도록 설정되어 있지 않습니다. Red Hat Single Sign-On 서버 자체에서 또는 Red Hat Single Sign-On 서버 앞에 있는 역방향 프록시에서 SSL을 활성화하는 것이 좋습니다.
이 기본 동작은 각 Red Hat Single Sign-On 영역의 SSL/HTTPS 모드로 정의됩니다. 이 내용은 서버 관리 가이드에서 자세히 설명하지만 이러한 모드에 대한 몇 가지 컨텍스트와 간략한 개요를 제공합니다.
- 외부 요청
-
Red Hat Single Sign-On은
localhost,127.0.0.1,10.0.x.x,192.168.x.x,172.16.x.x와 같은 개인 IP 주소를 고정하면 SSL 없이 즉시 실행할 수 있습니다. 서버에 SSL/HTTPS가 구성되어 있지 않거나 비개인 IP 주소에서 HTTP를 통해 Red Hat Single Sign-On에 액세스하려고 하면 오류가 발생합니다. - none
- Red Hat Single Sign-On에는 SSL이 필요하지 않습니다. 이것은 실제로 사물과 함께 플레이 할 때 개발에만 사용해야합니다.
- 모든 요청
- Red Hat Single Sign-On은 모든 IP 주소에 대해 SSL이 필요합니다.
각 영역의 SSL 모드는 Red Hat Single Sign-On 관리 콘솔에서 구성할 수 있습니다.
7.3.1. Red Hat Single Sign-On 서버에 대해 SSL/HTTPS 활성화 링크 복사링크가 클립보드에 복사되었습니다!
HTTPS 트래픽을 처리하기 위해 역방향 프록시 또는 로드 밸런서를 사용하지 않는 경우 Red Hat Single Sign-On 서버에 HTTPS를 활성화해야 합니다. 여기에는 다음이 포함됩니다.
- SSL/HTTP 트래픽에 대한 개인 키 및 인증서가 포함된 키 저장소 가져오기 또는 생성
- 이 키 쌍 및 인증서를 사용하도록 Red Hat Single Sign-On 서버 구성.
7.3.1.1. 인증서 및 Java 키 저장소 생성 링크 복사링크가 클립보드에 복사되었습니다!
HTTPS 연결을 허용하려면 Red Hat Single Sign-On 서버를 배포하는 웹 컨테이너에서 HTTPS를 활성화하기 전에 자체 서명된 인증서 또는 타사 서명된 인증서를 가져와서 Java 키 저장소로 가져와야 합니다.
7.3.1.1.1. 자체 서명된 인증서 링크 복사링크가 클립보드에 복사되었습니다!
개발 중에 Red Hat Single Sign-On 배포를 테스트할 수 있는 타사 서명된 인증서가 없으므로 Java JDK와 함께 제공되는 keytool 유틸리티를 사용하여 자체 서명된 인증서를 생성해야 합니다.
$ 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
여기서 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-----
이 ca 요청을 CA로 보냅니다. CA는 서명된 인증서를 발급하여 사용자에게 보냅니다. 새 인증서를 가져오기 전에 CA의 루트 인증서를 가져와서 가져와야 합니다. 다음과 같이 CA에서 인증서를 다운로드하고 (예: root.crt) 가져올 수 있습니다.
$ keytool -import -keystore keycloak.jks -file root.crt -alias root
마지막 단계는 새 CA가 생성한 인증서를 키 저장소로 가져오는 것입니다.
$ keytool -import -alias yourdomain -keystore keycloak.jks -file your-certificate.cer
7.3.1.2. 키 저장소를 사용하도록 Red Hat Single Sign-On 구성 링크 복사링크가 클립보드에 복사되었습니다!
이제 적절한 인증서가 있는 Java 키 저장소가 있으므로 이를 사용하려면 Red Hat Single Sign-On 설치를 구성해야 합니다. 첫 번째 단계는 키 저장소 파일을 배포의 구성/ 디렉터리로 이동하고 standalone.xml,standalone-ha.xml 또는 domain.xml 파일을 편집하여 키 저장소를 사용하고 HTTPS를 활성화하는 것입니다. ( 운영 모드를참조하십시오.
독립 실행형 또는 도메인 구성 파일에서 security-realms 요소를 검색하고 다음을 추가합니다.
<security-realm name="UndertowRealm">
<server-identities>
<ssl>
<keystore path="keycloak.jks" relative-to="jboss.server.config.dir" keystore-password="secret" />
</ssl>
</server-identities>
</security-realm>
요소 서버 name="default-server"( system xmlns="urn:jboss:domain:undertow:4.0"의 하위요소)를 찾아 다음을 추가합니다.
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/>
...
</subsystem>