2.4. 원격#159 SSL 활성화

2.4.1. 개요

Red Hat JBoss Fuse는 Cryostat를 사용하여 Karaf 컨테이너의 원격 모니터링 및 관리를 허용하는 Cryostat 포트를 제공합니다. 그러나 기본적으로 Cryostat 연결을 통해 보내는 자격 증명은 암호화되지 않고 스누핑에 취약합니다. Cryostat 연결을 암호화하고 암호 스누핑으로부터 보호하려면 SSL을 통해 Cryostat 통신을 보호해야 합니다.

SSL을 통해 Cryostat를 구성하려면 다음 단계를 수행합니다.

SSL 액세스를 통해 Cryostat를 구성한 후에는 연결을 테스트해야 합니다.

주의

SSL/TLS 보안을 활성화하려면 Poodle 취약점(CVE-2014-3566) 으로부터 보호하기 위해 SSLv3 프로토콜을 명시적으로 비활성화해야 합니다. 자세한 내용은 JBoss Fuse 6.x 및 JBoss A-MQ 6.x에서 SSLv3 비활성화 를 참조하십시오.

참고

Red Hat JBoss Fuse가 실행되는 동안 SSL을 통해 Cryostat를 구성하는 경우 다시 시작해야 합니다.

2.4.2. 사전 요구 사항

아직 수행하지 않은 경우 다음을 수행해야 합니다.

  • JAVA_HOME 환경 변수 설정
  • admin 역할을 사용하여 Karaf 사용자 구성

    InstallDir/etc/users.properties 파일을 편집하고 한 줄에 다음 항목을 추가합니다.

    admin=YourPassword,admin

    그러면 사용자 이름, admin, password, YourPassword, admin 역할이 있는 새 사용자가 생성됩니다.

2.4.3. jbossweb.keystore 파일 생성

명령 프롬프트를 열고 Karaf 설치의 etc/ 디렉토리에 있는지 확인합니다.

cd etc

명령줄에서 애플리케이션에 적합한 -dname 값(별시 이름)을 사용하여 다음 명령을 입력합니다.

$JAVA_HOME/bin/keytool -genkey -v -alias jbossalias -keyalg RSA -keysize 1024 -keystore jbossweb.keystore -validity 3650 -keypass JbossPassword -storepass JbossPassword -dname "CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, S=Mass, C=USA"
중요

단일 명령줄에 전체 명령을 입력합니다.

이 명령은 다음과 같은 출력을 반환합니다.

Generating 1,024 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 3,650 days
	for: CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, ST=Mass, C=USA
New certificate (self-signed):
[
[
  Version: V3
  Subject: CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, ST=Mass, C=USA
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 1024 bits
  modulus: 1123086025790567043604962990501918169461098372864273201795342440080393808
     1594100776075008647459910991413806372800722947670166407814901754459100720279046
     3944621813738177324031064260382659483193826177448762030437669318391072619867218
     036972335210839062722456085328301058362052369248473659880488338711351959835357
  public exponent: 65537
  Validity: [From: Thu Jun 05 12:19:52 EDT 2014,
               To: Sun Jun 02 12:19:52 EDT 2024]
  Issuer: CN=127.0.0.1, OU=RedHat Software Unit, O=RedHat, L=Boston, ST=Mass, C=USA
  SerialNumber: [    4666e4e6]

Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: AC 44 A5 F2 E6 2F B2 5A   5F 88 FE 69 60 B4 27 7D  .D.../.Z_..i`.'.
0010: B9 81 23 9C                                        ..#.
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 01 1D 95 C0 F2 03 B0 FD   CF 3A 1A 14 F5 2E 04 E5  .........:......
0010: DD 18 DD 0E 24 60 00 54   35 AE FE 36 7B 38 69 4C  ....$`.T5..6.8iL
0020: 1E 85 0A AF AE 24 1B 40   62 C9 F4 E5 A9 02 CD D3  .....$.@b.......
0030: 91 57 60 F6 EF D6 A4 84   56 BA 5D 21 11 F7 EA 09  .W`.....V.]!....
0040: 73 D5 6B 48 4A A9 09 93   8C 05 58 91 6C D0 53 81  s.kHJ.....X.l.S.
0050: 39 D8 29 59 73 C4 61 BE   99 13 12 89 00 1C F8 38  9.)Ys.a........8
0060: E2 BF D5 3C 87 F6 3F FA   E1 75 69 DF 37 8E 37 B5  ...<..?..ui.7.7.
0070: B7 8D 10 CC 9E 70 E8 6D   C2 1A 90 FF 3C 91 84 50  .....p.m....<..P

]
[Storing jbossweb.keystore]

InstallDir/etc 에 파일 jbossweb.keystore 가 포함되어 있는지 확인합니다.

2.4.4. keystore.xml 파일을 생성하고 배포합니다.

  1. 즐겨 찾는 XML 편집기를 사용하여 < installDir> /jboss-fuse-7.8.0.fuse-780038-redhat-00001/etc 디렉터리에 keystore.xml 파일을 생성하고 저장합니다.
  2. 이 텍스트를 파일에 포함합니다.

    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:jaas="http://karaf.apache.org/xmlns/jaas/v1.0.0">
    <jaas:keystore name="sample_keystore"
    rank="1"
    path="file:etc/jbossweb.keystore"
    keystorePassword="JbossPassword"
    keyPasswords="jbossalias=JbossPassword" />
    </blueprint>
  3. InstallDir/deploy 디렉터리( hot deploy 디렉터리)에 복사하여 keystore.xml 파일을 Karaf 컨테이너에 배포합니다.

    참고

    이후 keystore.xml 파일 배포를 취소해야 하는 경우 Karaf 컨테이너가 실행되는 동안 deploy/ 디렉토리에서 keystore.xml 파일을 삭제하여 이를 수행할 수 있습니다.

2.4.5. org.apache.karaf.management.cfg에 필요한 속성을 추가합니다.

InstallDir/etc/org.apache.karaf.management.cfg 파일을 편집하여 파일 끝에 이러한 속성을 포함합니다.

secured = true
secureProtocol = TLSv1
keyAlias = jbossalias
keyStore = sample_keystore
trustStore = sample_keystore
중요

Poodle 취약점 (CVE-2014-3566)으로부터 보호하려면 secureProtocolTLSv1 로 설정해야 합니다.

참고

선택적으로 enabledCipherSuites 속성을 설정하여 Cryostat TLS 연결에 사용할 특정 암호화 제품군을 나열할 수 있습니다. 이 속성을 설정하면 기본 암호화 제품군이 재정의됩니다.

2.4.6. Karaf 컨테이너를 다시 시작

새 Cryostat SSL/TLS 설정을 적용하려면 Karaf 컨테이너를 다시 시작해야 합니다.

2.4.7. Secure Cryostat 연결 테스트

  1. 명령 프롬프트를 열고 Fuse 설치의 etc/ 디렉터리에 있는지 확인합니다.

    cd <installDir>/jboss-fuse-7.8.0.fuse-780038-redhat-00001/etc
  2. 터미널을 열고 다음 명령을 입력하여 JConsole을 시작합니다.

    jconsole -J-Djavax.net.debug=ssl -J-Djavax.net.ssl.trustStore=jbossweb.keystore -J-Djavax.net.ssl.trustStoreType=JKS -J-Djavax.net.ssl.trustStorePassword=JbossPassword

    J-Djavax.net.ssl.trustStore 옵션이 jbossweb.keystore 파일의 위치를 지정합니다(이 위치가 올바르게 지정되었는지 확인하거나 SSL/TLS 핸드셰이크는 실패합니다). -J-Djavax.net.debug=ssl 설정을 사용하면 SSL/TLS 핸드셰이크 메시지를 로깅할 수 있으므로 SSL/TLS가 성공적으로 활성화되었는지 확인할 수 있습니다.

    중요

    동일한 명령줄에 전체 명령을 입력합니다.

  3. JConsole이 열리면 새 연결 마법사에서 Remote Process 옵션을 선택합니다.
  4. Remote Process 옵션에서 service:jmx:<protocol>:<sap > 연결 URL에 대해 다음 값을 입력합니다.

    service:jmx:rmi://localhost:44444/jndi/rmi://localhost:1099/karaf-root

    그리고 유효한 JAAS 인증 정보( etc/users.properties 파일에 설정된)를 사용하여 UsernamePassword 필드를 작성합니다.

    Username: admin
    Password: YourPassword