SSL 구성 속성
SSL 구성은 Liberty 프로파일에서 서버 SSL 전송 계층의 동작을 제어하는 데 사용하는 속성을 포함합니다. 이 주제에서는 SSL 구성에 사용 가능한 모든 설정을 반복합니다.
SSL 기능
서버에서 SSL을 사용하려면 SSL 기능이 server.xml 파일에 포함되어 있어야 합니다.
<featureManager>
<feature>ssl-1.0</feature>
</featureManager>
SSL 기본값
구성된 여러 SSL 구성이 있을 수 있습니다. 둘 이상의 SSL 구성이 구성된 경우에는 sslDefault 서비스 구성을 사용하는 기본 SSL 구성을 server.xml 파일에서 지정해야 합니다.
속성 | 설명 | 기본값 |
---|---|---|
sslRef | sslRef 속성은 기본값으로 사용할 SSL 구성의 이름을 지정합니다. | 기본 SSL 구성 이름은 defaultSSLConfig입니다. |
<sslDefault sslRef="mySSLSettings" />
SSL 구성
SSL 구성 속성을 사용하여 사용자 요구를 충족하도록 SSL 환경을 사용자 정의할 수 있습니다. server.xml 파일에서 ssl 서버 구성 시 이러한 속성을 설정할 수 있습니다.
속성 | 설명 | 기본값 |
---|---|---|
id | id 속성은 SSL 구성 오브젝트에 고유 이름을 지정합니다. | 기본값이 없으며 고유 이름을 지정해야 합니다. |
keyStoreRef | keyStoreRef 속성은 SSL 구성 키 저장소를 정의하는 키 저장소 서비스 오브젝트의 이름을 지정합니다. 키 저장소는 SSL 연결을 작성하는 데 필요한 키를 보유합니다. | 기본값이 없으며 키 저장소 참조를 지정해야 합니다. |
trustStoreRef | trustStoreRef 속성은 SSL 구성 신뢰 저장소를 정의하는 키 저장소 서비스 오브젝트의 이름을 지정합니다. 신뢰 저장소는 서명 검증에 필요한 인증서를 보유합니다. | trustStoreRef는 선택적 속성입니다. 참조가 누락된 경우 keyStoreRef에 의해 지정되는 키 저장소가 사용됩니다. |
clientAuthentication | clientAuthentication 속성은 SSL 클라이언트 인증이 필수인지 여부를 판별합니다. | 기본값은 false입니다. |
clientAuthenticationSupported | clientAuthenticationSupported 속성은 SSL 클라이언트 인증이 지원되는지 여부를 판별합니다. 클라이언트는 클라이언트 인증서를 제공할 필요가 없습니다. clientAuthentication 속성이 true로 설정된 경우 clientAuthenticationSupported 속성 값이 겹쳐쓰여집니다. | 기본값은 false입니다. |
sslProtocol | sslProtocol 속성은 SSL 핸드쉐이크 프로토콜을 정의합니다. 프로토콜은 SDK 종속 항목일 수 있으므로, 프로토콜을 수정할 경우 실행 중인 SDK에서 해당 값이 지원되는지 확인하십시오. | 기본값은 SSL_TLS입니다. |
securityLevel | securityLevel 속성은 SSL 핸드쉐이크에 사용되는
암호 스위트 그룹을 판별합니다.
속성에는 다음 값 중 하나의 값이 있습니다.
|
기본값은 HIGH입니다. |
enabledCiphers | enabledCiphers 속성은 고유 암호 스위트 목록을 지정하기 위해 사용됩니다. 목록에서 개별 암호 스위트를 공백으로 구분하십시오. enabledCiphers 속성이 설정되면 securityLevel 속성은 무시됩니다. | 기본값이 없습니다. |
serverKeyAlias | serverKeyAlias 속성은 키 저장소에서 SSL 구성 키로 사용할 키의 이름을 지정합니다. 이 속성은 키 저장소에 키 항목이 둘 이상 있는 경우에만 필요합니다. 키 저장소에 키 항목이 둘 이상 있고 이 속성이 키를 지정하지 않은 경우 JSSE가 키를 선택합니다. | 기본값이 없습니다. |
clientKeyAlias | clientKeyAlias 속성은 clientAuthentication이 사용 가능한 경우 키 저장소에서 SSL 구성 키로 사용할 키의 이름을 지정합니다. 이 속성은 키 저장소에 둘 이상의 키 항목이 포함되어 있는 경우에만 필요합니다. | 기본값이 없습니다. |
- 키 관리자는 SSL 핸드쉐이크에서 사용할 인증서 별명을 판별하는 데 사용됩니다. 키 관리자는 server.xml 파일에서 구성되지 않습니다. 키 관리자는 SDK의 보안 특성 ssl.KeyManagerFactory.algorithm에서 검색됩니다.
- 신뢰 관리자는 SSL 핸드쉐이크에서 신뢰 의사결정을 내리는 데 사용됩니다. 신뢰 관리자는 server.xml 파일에서 구성되지 않습니다. 신뢰 관리자는 SDK의 보안 특성 ssl.TrustManagerFactory.algorithm에서 검색됩니다.
<!-- Simple ssl configuration service object. This assumes there is a keystore object named -->
<!-- defaultKeyStore and a truststore object named defaultTrustStore in the server.xml file. -->
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore" />
<!-- A ssl configuration service object that enabled clientAuthentication -->
<!-- and specifies the TLS protocol be used. -->
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore"
clientAuthentication="true"
sslProtocol="TLS" />
<!-- An SSL configuration service object that names the serverKeyAlias -->
<!-- to be used by the handshake. This assumes there is a certificate -->
<!-- called "default" in the keystore defined by keyStoreRef. -->
<ssl id="myDefaultSSLConfig"
keyStoreRef="defaultKeyStore"
serverKeyAlias="default" />
키 저장소 구성
keystore 구성은 키 저장소를 로드하는 데 필요한 속성으로 구성됩니다. 이 속성은 server.xml 파일의 키 저장소 서비스 구성에서 설정할 수 있습니다.
속성 | 설명 | 기본값 |
---|---|---|
id | id 속성은 키 저장소 오브젝트의 고유 ID를 정의합니다. | 기본값이 없으며, 고유 이름을 지정해야 합니다. |
location | location 속성은 키 저장소 파일 이름을 지정합니다. 값은 파일의 절대 경로를 포함할 수 있습니다. 절대 경로가 제공되지 않은 경우, 코드는 ${server.config.dir}/resources/security 디렉토리에서 파일을 찾습니다. | SSL 최소 구성에서 파일의 위치는 ${server.config.dir}/resources/security/key.jks로 가정합니다. |
type | type 속성은 키 저장소의 유형을 지정합니다. 지정한 키 저장소 유형을 실행 중인 SDK에서 지원하는지 확인하십시오. | 기본값은 jks입니다. |
password | password 속성은 키 저장소 파일을 로드하는 데 사용되는 비밀번호를 지정합니다. 비밀번호는 일반 텍스트로 저장하거나 인코드할 수 있습니다. 비밀번호 인코드 방법에 관한 정보는 securityUtility encode 옵션을 참조하십시오. | 제공해야 합니다. |
provider | provider 속성은 키 저장소를 로드하는 데 사용되는 제공자를 지정합니다. 일부 키 저장소 유형에는 SDK 기본값 이외의 제공자가 필요합니다. | 기본적으로 제공자가 지정되지 않습니다. |
fileBased | fileBased 속성은 키 저장소가 파일 기반인지 여부를 지정합니다. | 기본값은 true입니다. |
pollingRate | 서버가 키 저장소 파일에 대한 업데이트를 확인하는 간격입니다. | 500ms. |
updateTrigger | 서버가 키 저장소 파일을 다시 로드하도록 트리거하는 데 사용되는 메소드입니다. 서버가 변경사항에 대해 키 저장소 파일을 확인할 수 있게 하려면 polled, mbean이 키 저장소 파일을 다시 로드할 때까지 서버가 기다리게 하려면 mbean 또는 파일 모니터링을 사용 안함으로 설정하려면 disabled를 지정하십시오. | disabled |
updateTrigger 속성이 polled 또는 mbean으로 설정된 경우 서버에서 키 저장소 파일을 다시 로드할 수 있습니다. polled가 사용으로 설정된 경우 서버는 pollingRate 속성으로 설정된 비율을 기반으로 키 저장소 파일을 모니터하여 변경사항을 확인합니다. updateTrigger 속성이 mbean으로 설정된 경우, 서버는 WebSphere:service=com.ibm.ws.kernel.filemonitor.FileNotificationMBean MBean으로부터 알림을 받을 때 키 저장소 파일을 다시 로드합니다. 파일 모니터링은 기본적으로 사용 안함으로 설정됩니다.
<!-- A keystore object called defaultKeyStore provides a location, -->
<!-- type, and password. The MyKeyStoreFile.jks file is assumed -->
<!-- to be located in ${server.config.dir}/resources/security -->
<!-- This keystore is configured to be monitored every 5 seconds -->
<!-- for updates -->
<keyStore id="defaultKeyStore"
location="MyKeyStoreFile.jks"
type="JKS" password="myPassword"
pollingRate="5s"
updateTrigger="polled" />
<!-- A keystore object called defaultKeyStore provides a location, -->
<!-- type, and password. The MyKeyStoreFile.jks file is assumed -->
<!-- to be located in ${server.config.dir}/resources/security -->
<!-- This keystore is configured to be reloaded when the server -->
<!-- recieves an mbean notification to do so -->
<keyStore id="defaultKeyStore"
location="MyKeyStoreFile.jks"
type="JKS" password="myPassword"
updateTrigger="mbean" />
전체 SSL 구성 예제
- defaultSSLSettings
- mySSLSettings
<featureManager>
<feature>ssl-1.0</feature>
</featureManager>
<!-- default SSL configuration is defaultSSLSettings ->
<sslDefault sslRef="defaultSSLSettings" />
<ssl id="defaultSSLSettings"
keyStoreRef="defaultKeyStore"
trustStoreRef="defaultTrustStore"
clientAuthenticationSupported="true" />
<keyStore id="defaultKeyStore"
location="key.jks"
type="JKS" password="defaultPWD" />
<keyStore id="defaultTrustStore"
location="trust.jks"
type="JKS" password="defaultPWD" />
<ssl id="mySSLSettings"
keyStoreRef="myKeyStore"
trustStoreRef="myTrustStore"
clientAuthentication="true" />
<keyStore id="LDAPKeyStore"
location="${server.config.dir}/myKey.p12"
type="PKCS12"
password="{xor}CDo9Hgw=" /> <keyStore id="LDAPTrustStore"
location="${server.config.dir}/myTrust.p12"
type="PKCS12"
password="{xor}CDo9Hgw=" />