X.509 인증서 신뢰 의사결정에 대한 신뢰 관리자 제어
신뢰 관리자 역할은 서명 확인 및 인증서 만기 날짜 검사를 포함하는 피어에서 전송되는 SSL(Secure Sockets Layer) 인증서의 유효성을 검증하기 위해 사용됩니다. JSSE(Java™ Secure Socket Extension) 신뢰 관리자는 원격 피어가 SSL 핸드쉐이크 중에 신뢰 가능한지를 판별합니다.
WebSphere® Application Server에는 SSL 연결 중에 다중 신뢰 관리자를 호출하는 기능이 있습니다. 기본 신뢰 관리자는 표준 인증서 유효성 검증을 수행합니다. 사용자 정의 신뢰 관리자 플러그인은 호스트 이름 확인과 같은 사용자 정의 유효성 검증을 실행합니다. 자세한 정보는 예제: 사용자 정의 SSL 신뢰 결정을 위한 사용자 정의 신뢰 관리자 개발의 내용을 참조하십시오.
신뢰 관리자가 서버 측 SSL 구성에서 구성된 경우 서버는 isClientTrusted 메소드를 호출합니다. 신뢰 관리자가 클라이언트 측 SSL 구성에서 구성된 경우 클라이언트는 isServerTrusted 메소드를 호출합니다. 피어 인증서 체인은 이 메소드로 전달됩니다. 신뢰 관리자가 피어 정보를 신뢰하지 않기로 선택하는 경우 예외를 작성하여 핸드쉐이크 실패를 강제할 수 있습니다.
선택적으로 WebSphere Application Server는 com.ibm.wsspi.ssl.TrustManagerExtendedInfo 인터페이스를 제공하여 해당 추가 정보가 신뢰 관리자로 전달될 수 있습니다. 자세한 정보는 com.ibm.wsspi.ssl.TrustManagerExtendedInfo 인터페이스를 참조하십시오.
기본 IbmX509 신뢰 관리자
<trustManagers xmi:id="TrustManager_1132357815717" name="IbmX509" provider="IBMJSSE2"
algorithm="IbmX509" managementScope="ManagementScope_1132357815717"/>
신뢰 관리자는
핸드쉐이크 중에 전송되는 피어 인증서를 확인하기 위해 서명자 인증서를 제공합니다. SSL 구성을 위해
신뢰 저장소에 추가되는 서명자는 신뢰할 수 있습니다. 서명자를 신뢰하지 않거나
다른 누군가가 서버에 연결되지 않도록 하려면 인증 기관(CA)에서 기본 루트 인증서를
제거하십시오. 시작점을 확인할 수 없는 경우에도 모든 인증서를 제거할 수 있습니다. 기본 IbmPKIX 신뢰 관리자
기본 IbmPKIX 신뢰 관리자를 사용하여 다음 코드 샘플에 표시되는 IbmX509 신뢰 관리자를 대체할 수 있습니다.<trustManagers xmi:id="TrustManager_1132357815719" name="IbmPKIX" provider="IBMJSSE2"
algorithm="IbmPKIX" trustManagerClass="" managementScope="ManagementScope_1132357815717">
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1132357815717"
name="com.ibm.security.enableCRLDP" value="true" type="boolean"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1132357815718"
name="com.ibm.jsse2.checkRevocation" value="true" type="boolean"/>
</trustManagers>
<trustManagers xmi:id="TrustManager_managementNode_2" name="IbmPKIX" provider=
"IBMJSSE2" algorithm="IbmPKIX" trustManagerClass=""
managementScope="ManagementScope_managementNode_1">
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_1" name="com.ibm.se
curity.enableCRLDP" value="false" type="boolean" displayNameKey="" nlsRangeKey="
" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_2" name="com.ibm.js
se2.checkRevocation" value="false" type="boolean" displayNameKey="" nlsRangeKey=
"" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_3" name="ocsp.enabl
e" value="false" type="String" displayNameKey="" nlsRangeKey="" hoverHelpKey=""
range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_4" name="ocsp.respo
nderURL" value="http://ocsp.example.net:80" type="String" displayNameKey=""
nlsRangeKey="" hoverHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_5" name="ocsp.respo
nderCertSubjectName" value="" type="String" displayNameKey="" nlsRangeKey="" hov
erHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_6" name="ocsp.respo
nderCertIssuerName" value="" type="String" displayNameKey="" nlsRangeKey="" hove
rHelpKey="" range="" inclusive="false" firstClass="false"/>
<additionalTrustManagerAttrs xmi:id="DescriptiveProperty_7" name="ocsp.respo
nderCertSerialNumber" value="" type="String" displayNameKey="" nlsRangeKey="" ho
verHelpKey="" range="" inclusive="false" firstClass="false"/>
</trustManagers>
기본 IbmPKIX 신뢰 관리자 사용에 대한 추가 정보는 예제: 기본 IbmPKIX 신뢰 관리자에서 인증서 폐기 확인 사용으로 설정의 내용을 참조하십시오.
표준 인증서 확인의 해당 역할 이외에도 IbmPKIX 신뢰 관리자는 OCSP 특성 및 인증서 폐기 목록(CRL) 분배 위치를 포함하는 인증서를 확인합니다. 이 프로세스는 확장된 CRL 검사라고 합니다. 신뢰 관리자를 선택하는 경우, 연관된 해당 특성은 Java 시스템 특성으로 자동 설정되어 IBMCertPath 및 IBMJSSE2 제공자가 CRL 검사 사용을 인지할 수 있습니다.
Ibmx509와 IbmPKIX 신뢰 관리자 사이의 차이점
- Ibmx509 trustmanager는 클라이언트/서버 신뢰 인증 여부에 상관없이 전체 인증서를 유효성 검증합니다. 그렇지만 IbmPKIX trustmanager는 해당 인증서의 신뢰를 원하는 것을 IbmPKIX trustmanager에 알려도 인증서의 유효성을 검증하지 않습니다. IbmPKIX trustmanager는 신뢰하는 인증서로 서명한 인증서에서 리프 인증서로 인증서의 유효성을 검증합니다. 또한,
- Ibmx509의 경우 모든 루트 CA 인증서는 BASIC CONSTRAINTS 확장을 포함해야 합니다. 그렇지 않으면 인증서는 루트 CA 인증서로 사용할 수 없습니다. IbmPKIX는 루트 CA 인증서에 대해 이 BASIC CONSTRAINTS 요구사항을 포함하지 않습니다.
- Ibmx509 신뢰 관리자는 인증서의 유효성을 검증하기 위해 서명 유효성 검증 및 인증서 만기 검사를 수행합니다. IbmPKIX 신뢰 관리자는 이와 동일한 유효성 검증을 수행하고 추가의 고급 인증서 폐기 목록(CRL)도 수행하며 이를 사용하여 인증 기관(CA)이 인증서를 폐기했는지를 판별합니다.
- CRL 분배 위치(DP) 확장이 있는 경우 인증서를 수신하면 IbmPKIX 신뢰 관리자는 자동으로 CRL을 확보합니다.
또한, OCSP(Online Certificate Status Protocol)는 인증서 유효성에 대한 온라인 검사를 수행하는 데 사용할 수 있습니다. 그렇지만 이 기능을 사용하려면 IBM® developerWorks® 웹 사이트에서 제공되는 Java Certification Path API Programmer's Guide에서 문서화된 대로 추가 시스템 특성을 설정해야 합니다.
사용자 정의 신뢰 관리자
환경의 요구사항을 기반으로 추가 신뢰 검사를 수행하는 사용자 정의 신뢰 관리자를 정의할 수 있습니다. 예를 들어, 임의 환경에서 동일한 TCP 서브넷에서 연결을 사용할 수 있습니다. com.ibm.wsspi.ssl.TrustManagerExtendedInfo 인터페이스는 표준 JSSE(Java Secure Sockets Extension) javax.net.ssl.X509TrustManager 인터페이스에서 제공하지 않는 연결에 대한 확장 정보를 제공합니다. 구성된 trustManagerClass 속성은 다음 코드 샘플에서 표시되는 대로 런타임에서 인스턴스화되는 클래스를 판별합니다.<trustManagers xmi:id="TrustManager_1132357815718" name="CustomTrustManager"
trustManagerClass="com.ibm.ws.ssl.core.CustomTrustManager"
managementScope="ManagementScope_1132357815717"/>
trustManagerClass 속성은
javax.net.ssl.X509TrustManager 인터페이스를 구현해야 하며 선택적으로
com.ibm.wsspi.ssl.TrustManagerExtendedInfo 인터페이스를 구현할 수 있습니다. 기본 신뢰 관리자 사용 안함
어떤 경우에는 Ibmx509 및 IbmPKIX 기본 신뢰 관리자에서 제공되는 표준 인증서 유효성 검증을 수행하지 않을 수도 있습니다. 예를 들어, SSL 클라이언트 또는 서버 인증, 무결성 또는 기밀성에 연관되지 않은 내부 자동 테스트 인프라에 대해 작업하는 경우입니다. 다음 샘플 코드는 특성이 true로 설정되어야 하는 com.ibm.ws.ssl.core.CustomTrustManager와 같은 기본 사용자 정의 신뢰 관리자를 보여줍니다.com.ibm.ssl.skipDefaultTrustManagerWhenCustomDefined=true
이 특성은 클라이언트에 대해
ssl.client.props 파일의 맨 위에서 글로벌 특성 또는 서버에 대해
security.xml 사용자 정의 특성에 이 특성을 설정할 수 있습니다. 서버가 기본
신뢰 관리자가 구성된 경우에도 이를 호출하지 못하도록 기본 신뢰 관리자가 사용되지 않게 설정하려는
경우에는 사용자 정의 신뢰 관리자를 구성해야 합니다. 기본 신뢰 관리자를 사용하지 않는 것은
일반적인 사례는 아닙니다. 사용 불가능한 기본 신뢰 관리자가 포함된 시스템은
테스트 환경에서 먼저 테스트하십시오. 사용자 정의 신뢰 관리자 설정에 대한
자세한 정보는 SSL을 위한 사용자 정의 신뢰 관리자 구성 작성의 내용을 참조하십시오.