Liberty의 SSL 기본값

Liberty의 기본 SSL 인증서, 키 저장소 및 구성을 지정합니다.

기본 인증서 및 키 저장소

개발자가 구동 및 실행하는 데 도움이 되는 편리한 도구로서, 사용자는 securityUtility 명령에서 createSSLCertificate 매개변수를 사용하여 자체 서명된 인증서를 작성할 수 있습니다. 사용자는 명령행에서 직접 도구를 호출할 수 있습니다. 또는 서버가 이를 호출하여 서버 시작 시에 기본 인증서와 키 저장소를 작성하도록 할 수도 있습니다.

사용자가 server.xml 파일에 defaultKeyStore라고 하는 키 저장소 요소를 보유하는 경우, 서버는 기본 키 저장소와 인증서를 작성합니다. 예:
<keyStore id="defaultKeyStore" password="yourPassword" />

defaultKeyStore의 키 저장소 구성이 제 위치에 있고 서버를 시작할 때 키 저장소가 존재하지 않는 경우 서버가 createSSLCertificate 매개변수를 호출합니다. 이 매개변수는 구성에 지정된 비밀번호로 키 저장소를 작성합니다.

기본 키 저장소 세부사항:
  • 위치: 키 저장소 파일은 key.jks라고 불리며, 서버 또는 클라이언트 resources/security 디렉토리에 있습니다.
  • 키 저장소 유형: 키 저장소 유형은 JKS입니다.
  • 비밀번호: 구성에서 제공되는 비밀번호입니다.
Liberty가 작성한 기본 인증서 세부사항:
  • 유형: 인증서는 자체 서명 인증서입니다.
  • 크기: 기본 인증서 크기는 2048입니다.
  • 서명 알고리즘: 인증서의 서명 알고리즘은 SHA256WITHRSA입니다.
  • 유효성: 인증서는 365일 동안 유효합니다.
  • SubjectDN: 인증서는 CN=<hostname>,OU=<client or server name>,O=ibm,C=US as the SubjectDN으로 작성됩니다.

사용자가 인증서를 사용자 정의하고자 하는 경우, createSSLCertificate 매개변수가 명령행에서 호출될 수 있습니다.

참고: 집합체 제어기의 사용이 실용적이지 않은 경우(예를 들어, 한두 개의 Liberty 서버만 있는 경우) 자체 서명된 인증서를 사용하여 Liberty 멤버 서버에 연결할 수 있는 클라이언트 수를 제한할 수 있습니다. IHS 서버는 Liberty 서버 앞에 사용하는 것이 좋습니다. 여기서 CN 화이트리스트 작성과 함께 적절한 CA 서명 인증서를 사용하여 HIS에 연결할 수 있는 클라이언트를 제어할 수 있습니다. IHS와 Liberty 멤버 서버 간의 신뢰 채널은 자체 서명된 인증서를 사용하여 유지보수할 수 있습니다.

기본 SSL 구성

SSL에 필요한 최소 구성은 defaultKeyStore라고 하는 단일 키 저장소 요소입니다. defaultKeyStore가 구성에 존재하는 경우 런타임은 주변에 defaultSSLConfig라고 하는 SSL 구성을 빌드합니다.

defaultSSLConfig 세부사항:

  • 프로토콜: IBM® JRE가 사용되는 경우, 프로토콜은 기본적으로 SSL_TLSv2로 설정됩니다. Oracle JRE가 사용되는 경우 SSL이 프로토콜로 사용됩니다.
  • 암호: 암호 목록은 기본 JRE에서 지원되는 암호의 목록을 가져옴으로써 빌드됩니다. 기본적으로 목록은 128비트 이상 또는 3DES인 모든 암호로 축소됩니다. RC4는 사용으로 설정하면 안전하지 않은 것으로 간주되므로 삭제됩니다. 지원하지 않는 서버로 이동하는 경우 오류가 발생할 수 있으므로 ECDHE 암호가 제거됩니다. 이를 포함하도록 암호 목록을 사용자 정의할 수 있습니다.
  • 클라이언트 인증: 기본적으로, clientAuthenticationclientAuthenticationSupported는 사용되지 않습니다.
  • 키 저장소: 기본 구성에서 defaultKeyStore는 키 및 신뢰 저장소 모두로 사용됩니다.

SSL 구성 특성의 사용자 정의를 위해 defaultSSLConfig라고 하는 SSL 요소를 server.xml 파일에 입력할 수 있습니다. defaultSSLConfig라고 하는 사용자 정의된 ssl 요소는 다른 SSL 구성이 기본값으로 식별되지 않으면 계속해서 기본 SSL 구성처럼 처리됩니다. 자세한 정보는 SSL 구성 속성을 참조하십시오.

기본 SSL 구성으로서 구성의 다른 ssl 요소를 지정하기 위해, 사용자는 이를 sslDefault 요소로 식별할 수 있습니다.
<sslDefault sslRef="customSSLConfiguration" />

[17.0.0.1 and later](transportSecurity-1.0)(ssl-1.0) 둘 다 보안 처리 동작입니다. 수정팩 17.0.0.1 이상에서는 transportSecurity-1.0 동작이 ssl-1.0 동작을 대체합니다. 아웃바운드 연결에 대해 SSL 옵션을 채택하려면 transportSecurity-1.0 동작을 사용하십시오. 보안 구성이 아웃바운드 연결에 대한 옵션을 포함하지 않는 경우, ssl-1.0 동작을 계속 사용할 수 있습니다.

(transportSecurity-1.0) 동작

transportSecurity-1.0 기능을 사용할 수 있도록 설정한 경우, 아웃바운드 SSL 옵션이 사용 가능합니다. sslDefault 요소에 대해 outboundSSLRef 속성을 사용하여 아웃바운드 기본값을 설정하거나 SSL 구성에 대해 SSL 필터를 설정하여 동적 아웃바운드 연결을 허용할 수 있습니다. 필터는 호스트 또는 호스트 및 포트 조합으로 구성될 수 있습니다. 아웃바운드 연결의 호스트 및 포트를 기반으로 하여 아웃바운드 연결이 SSL 구성과 일치할 수 있습니다.

transportSecurity-1.0 기능을 사용할 수 있는 경우에는 SSL 런타임 코드가 SSLContext 프로세스 기본값을 설정하지 않습니다. SSL 런타임 코드는 ssl.SocketFactory.provider Java™ 보안 특성을 사용하여 사용자 정의 SSLSocketFactory 클래스를 설정합니다. SSLContext 프로세스 기본값은 키 및 신뢰에 대해 cacerts 파일을 사용하는 SSLContext Java Secure Socket Extension(JSSE) 기본값입니다.

프로그램은 javax.net.ssl.SSLSocketFactory.getDefault() 특성을 사용하여 SSLSocketFactory 클래스 기본값을 얻으려고 시도하는 모든 코드에 대해 Liberty 사용자 정의 SSL 소켓 팩토리를 리턴합니다. 사용자 정의 SSLSocketFactory 클래스는 아웃바운드 연결에 대해 적절한 SSL 구성을 분석할 수 있습니다.

Liberty에서 제공하는 기능은 Liberty SSL 구성을 사용합니다. 그러나 아웃바운드 SSL 호출을 작성하는 써드파티 API의 경우, Liberty 기능을 사용하기 위한 구성이 필요할 수 있습니다. transportSecurity-1.0 또는 ssl-1.0 기능을 사용할 수 있는 경우에는 Liberty SSL 런타임 코드가 SSLContext 프로세스 기본값을 설정하지 않습니다. 기본 SSL 컨텍스트에 종속된 써드파티 API는 Liberty SSL 구성의 장점을 활용할 수 없습니다. transportSecurity-1.0 기능을 사용할 수 있는 경우, Liberty SSL 런타임 코드는 ssl.SocketFactory.provider Java 보안 특성을 사용하여 사용자 정의 SSLSocketFactory 클래스를 설정합니다. 써드파티 API는 javax.net.ssl.SSLSocketFactory.getDefault() 특성을 호출하여 SocketFactory 기본값을 사용하여 Liberty SSL 구성의 장점을 활용할 수 있습니다.
참고: Liberty 사용자 정의 SSLSocketFactory 클래스는 javax.net.ssl.keystore 등의 Java 시스템 특성을 인식하지 않습니다.
(ssl-1.0) 동작

Liberty 기본 SSL 구성의 속성은 SSLContext를 작성하는 데 사용됩니다. 이 SSLContext는 Java API SSLContext.setDefault()를 사용하여 기본 SSLContext로서 프로세스에서 설정됩니다. 애플리케이션이 https URL과 함께 httpURLConnection()과 같은 API를 호출하고 SSL 정보를 제공하지 않는 경우, 애플리케이션은 프로세스의 기본 SSLContext를 선택합니다. 이 경우에는 Liberty 기본 SSL 구성으로 작성된 SSLContext입니다.

기본 SSL 구성이 Liberty에서 설정되지 않은 경우, Liberty는 JSSE의 기본 SSLContext를 사용합니다. JSSE의 기본 SSLContext는 키 저장소 및 신뢰 저장소에 대해 cacerts 파일을 사용합니다. SSL 기능이 정의되지 않았거나 존재하는 SSL 구성이 기본값으로 식별되지 않는 경우, Liberty에는 기본 SSL 구성이 없습니다. 기본 구성이 호출된 defaultSSLConfig(defaultKeyStore가 정의된 경우 이는 암시적일 수 있음)이거나 sslDefault 요소를 사용하여 대체 SSL 구성을 지정할 수도 있습니다.

javax 시스템 특성(javax.net.ssl.keystore)은 기본 SSL 컨텍스트에 대한 키 저장소 및 신뢰 저장소 정보를 설정하는 데 사용되며 사용되지 않아야 합니다. 특성이 프로세스에서 설정된 경우에는 SSLContext.setDefault()에 대한 호출이 이를 제거합니다.

[17.0.0.1 and later]SSL 요소가 아웃바운드 SSL 연결의 기본값으로 사용될 수 있도록, sslDefault 요소의 outboundSSLRef 속성을 사용할 수 있습니다.
<feature>transportSecurity-1.0</feature>
<sslDefault sslRef="mySSLConfig" outboundSSLRef="customSSLConfiguration" />
기본 아웃바운드 SSL 요소를 지정하려면 transportSecurity-1.0 기능을 사용해야 합니다. outboundSSLRef가 지정된 경우, 아웃바운드 SSL 연결은 기본적으로 해당 속성에서 지정하는 SSL 구성을 사용합니다. transportSecurity-1.0 기능이 누락되면 outboundSSLRef가 무시됩니다. outboundSSLRef 속성이 지정되지 않으면, sslRef가 SSL 구성을 참조하지 않는 경우 defaultSSLConfig 또는 sslRef 속성에서 지정하는 값을 아웃바운드 호출이 사용합니다.

주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_liberty_ssl_defaults.html