보안과 관련된 SSL 오류
SSL(Secure Sockets Layer)을 구성하거나 사용하도록 설정한 후 다양한 문제점이 발생할 수 있습니다. SSL을 구성한 후 배치 관리자를 중지할 수 없을 수 있습니다. HTTPS를 사용하여 자원에 액세스할 수 없을 수 있습니다. 클라이언트와 서버가 적절한 보안 레벨을 조정할 수 없을 수 있습니다. 여기에 언급된 문제점은 몇 가지 가능성에 지나지 않습니다. WebSphere® Application Server를 조작하기 위해서는 이러한 문제점을 반드시 해결해야 합니다.
발생하는 문제점의 유형
- SSL 구성 후 배치 관리자 중지
HTTPS를 사용하여 자원 액세스
- javax.net.ssl.SSLHandshakeException - 클라이언트 및 서버가 원하는 보안 레벨을 조정할 수 없습니다. 이유: 데이터 교환 실패
- javax.net.ssl.SSLHandshakeException: 알 수 없는 인증
- javax.net.ssl.SSLHandshakeException: 잘못된 인증서
org.omg.CORBA.INTERNAL: EntryNotFoundException 또는 NTRegistryImp E CWSCJ0070E: 구성된 특권 ID 없음: 신임을 프로그램 방식으로 작성할 때 오류 발생
- GUI 애플리케이션 클라이언트의 "카탈로그" 태블릿이 공백임(표시되는 항목이 없음)
- -scriptCompatibility true를 사용하여 마이그레이션 후 SSL 구성 수정
- NOTRUST 옵션으로 디지털 인증을 정의하면 독립형 구성이 실패함
- SSL로 LDAP 저장소 구성 시 문제점
- SHA384withECDSA에 대해 체인 인증서를 작성할 때의 문제점
SSL 구성 후 배치 관리자 중지
SSL 레퍼토리 구성 후, 노드 에이전트는 중지하지 않고 배치 관리자만 중지할 경우 배치 관리자를 다시 시작할 때 다음과 같은 오류 메시지가 표시될 수 있습니다.
CWWMU0509I: "nodeagent" 서버에 도달할 수 없습니다. 중지한 것으로 보입니다.
CWWMU0211I: Error details may be seen in the file:
/opt/WebSphere/AppServer/logs/nodeagent/stopServer.log
배치 관리자가 새 SSL 인증을 노드 에이전트로 전파하지 않아서 오류가 발생합니다. 노드 에이전트는 배치 관리자보다 오래된 인증 파일을 사용하므로 인증 파일이 호환되지 않습니다. 이 문제점을 해결하려면 노드 에이전트와 배치 관리자 프로세스를 수동으로 중지하십시오.
프로세스를 종료시키려면
태스크 관리자를 사용하십시오.
명령을 실행하여 프로세스를 종료하십시오.
프로세스를
종료시키려면 MVS™ 콘솔에
c process_name을 입력하십시오.
중지할 특정 프로세스를 식별할 때 특정 항목을 고려해야 합니다.
중지한 각 프로세스에 대해, WebSphere Application
Server는 pid 파일에 프로세스 ID를 저장하며
사용자는 이들 *.pid 파일에서 찾아야 합니다. 예를 들어, 독립형 설치 조치의 경우 server1.pid는
install_root/logs/server1.pid에서 찾을 수 있습니다.
중지할 특정 프로세스를 식별할 때 특정 항목을 고려해야 합니다.
중지한 각 프로세스에 대해, WebSphere Application
Server는 pid 파일에 프로세스 ID를 저장하며
사용자는 이들 *.pid 파일에서 찾아야 합니다. 예를 들어, 독립형 설치 조치의 경우 server1.pid는
app_server_root/logs/server1.pid에서 찾을 수 있습니다.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
HTTPS를 사용하여 자원 액세스
SSL(Secure Sockets Layer) URL(https:로 시작)을 사용하여 자원에 액세스할 수 없거나 SSL 문제점을 나타내는 오류 메시지가 발생할 경우, SSL에 대해 HTTP Server가 올바르게 구성되었는지 확인하십시오. URL https://host_name을 입력하여 SSL을 사용하는 HTTP 서버의 시작 페이지를 찾아보십시오.
- SSL을 올바르게 사용 가능하게 하는 지시사항은 HTTP Server에 대한 문서를 참조하십시오. IBM® HTTP Server 또는 Apache를 사용하는 경우, http://www.ibm.com/software/webservers/httpservers/library.html로 이동하십시오. FAQ> SSL을 클릭하십시오.
- 인증서와 키를 작성하는 데
IBM Key Management(IKeyman) 도구를 사용할 경우, IBM Key Management Tool을
사용하여 KDB(Key Database) 파일을 작성할 때 비밀번호를 반드시 파일에
저장(stash)하십시오.
- KDB 파일이 작성된 디렉토리로 이동하여 .sth 파일이 있는지 보십시오.
- 파일이 없으면, IBM Key Management Tool을 사용하여 KDB 파일을 연 다음 키 데이터베이스 파일 > 비밀번호 보관을 클릭하십시오. 다음 메시지가 표시됩니다. 비밀번호가 암호화되어 파일에 저장되었습니다.
HTTP Server가 SSL 암호화 요청을 정상적으로 처리하거나 문제점과 관련되지 않은 경우(예: Java™ 클라이언트 애플리케이션에서 직접 WebSphere Application Server가 호스트하는 엔터프라이즈 Bean으로 트래픽이 이동하거나 WebSphere Application Server 보안을 사용 가능하게 한 후에만 문제점이 나타나는 경우), 어떤 종류의 오류가 나타납니까?
시스템 SSL: 시스템 SSL(Secure Sockets Layer) 콜 서비스 프로그래밍 인터페이스 사용에 대한
정보는 z/OS® System Secure Sockets Layer Programming SC24-5901의 내용을 참조하십시오.
신임을
프로그램 방식으로 작성할 때 org.omg.CORBA.INTERNAL:
EntryNotFoundException 또는 NTRegistryImp E CWSCJ0070E: 구성된 특권 ID
없음: 오류 메시지 발생
보안 관련 문제점 진단 및 해결에 관한 일반적인 팁은 보안 컴포넌트 문제점 해결 팁의 내용을 참조하십시오.
사용자의 문제점과 유사한 문제점이 없거나 제공된 정보로 사용자의 문제점을 해결할 수 없는 경우사용자의 경우, IBM의 문제점 해결 도움말의 내용을 참조하십시오.
javax.net.ssl.SSLHandshakeException - 클라이언트 및 서버가 원하는 보안 레벨을 조정할 수 없습니다. 이유: 데이터 교환 실패
[Root exception is org.omg.CORBA.TRANSIENT: CAUGHT_EXCEPTION_WHILE_CONFIGURING_
SSL_CLIENT_SOCKET: CWWJE0080E: javax.net.ssl.SSLHandshakeException - The client
and server could not negotiate the desired level of security. Reason: handshake
failure:host=MYSERVER,port=1079 minor code: 4942F303 completed: No] at
com.ibm.CORBA.transport.TransportConnectionBase.connect
(TransportConnectionBase.java:NNN)
- 클라이언트와 서버 사이에 공통 암호가 없습니다.
- 올바른 프로토콜을 지정하지 않았습니다.
SSL 설정을 검토하십시오. 관리 콘솔에서 보안 > SSL 인증 및 키 관리를 클릭하십시오. 구성 설정값 아래에서 엔드포인트 보안 구성 관리 > endpoint_configuration_name을 클릭하십시오. 관련 항목 아래에서 SSL 구성 > SSL_configuration_name을 클릭하십시오. 또한 install_root/properties/sas.client.props 파일 보기를 하여 이 파일을 수동으로 찾아볼 수 있습니다.
SSL 설정을 검토하십시오. 관리 콘솔에서 보안 > SSL 인증 및 키 관리를 클릭하십시오. 구성 설정값 아래에서 엔드포인트 보안 구성 관리 > endpoint_configuration_name을 클릭하십시오. 관련 항목 아래에서 SSL 구성 > SSL_configuration_name을 클릭하십시오. 또한 app_server_root/properties/sas.client.props 파일 보기를 하여 이 파일을 수동으로 찾아볼 수 있습니다.
- com.ibm.ssl.protocol 파일에서 지정한 특성을 확인하여 지정된 프로토콜을 판별하십시오.
- com.ibm.ssl.enabledCipherSuites 인터페이스에서 지정한 암호 유형을 확인하십시오. 목록에 추가 암호 유형을 추가할 수 있습니다. 현재 사용 가능한 cipher suite를 보려면 QoP(Quality of protection) 설정을 클릭하고 Cipher Suites 특성을 찾아보십시오.
- 다른 클라이언트나 서버 프로토콜 및 암호 선택사항을 사용하여 프로토콜 또는 암호 문제점을 정정하십시오. 일반적으로 프로토콜은 SSL 또는 SSLv3입니다.
암호 선택사항을 128비트 대신 40비트로 작성하십시오. CSIv2(Common Secure Interoperability Version 2)의 경우 sas.client.props 파일에서 다음 특성을 모두 false로 설정하거나 관리 콘솔 설정값에 security level=medium을 설정하십시오.
- com.ibm.CSI.performMessageConfidentialityRequired=false
- com.ibm.CSI.performMessageConfidentialitySupported=false
javax.net.ssl.SSLHandshakeException: 알 수 없는 인증
오류: 초기 컨텍스트를 가져올 수 없거나 시작 컨텍스트를 참조할 수 없습니다.
종료합니다. Exception received: javax.naming.ServiceUnavailableException: A
communication failure occurred while attempting to obtain an initial context using
the provider url: "corbaloc:iiop:localhost:2809". Make sure that the host and port
information is correct and that the server identified by the provider url is a
running name server. If no port number is specified, the default port number 2809
is used. Other possible causes include the network environment or workstation
network configuration. [Root exception is org.omg.CORBA.TRANSIENT:
CAUGHT_EXCEPTION_WHILE_CONFIGURING_SSL_CLIENT_SOCKET: CWWJE0080E:
javax.net.ssl.SSLHandshakeException - The client and server could not
negotiate the desired level of security. Reason: unknown
certificate:host=MYSERVER,port=1940 minor code: 4942F303 completed: No]
- 클라이언트 신뢰 저장소 파일을 확인하여 서버 개인 인증서의 서명자 인증이 있는지 판별하십시오. 자체 서명한 서버 개인 인증서의 경우 서명자 인증서는 개인 인증서의 공용 키입니다. CA(Certificate Authority)의 서명이 있는 서버 개인 인증서의 경우, 서명자 인증은 개인 인증서를 서명한 CA의 루트 CA 인증서입니다.
- 클라이언트 신뢰 저장소 파일에 서버 서명자 인증서를 추가하십시오.
javax.net.ssl.SSLHandshakeException: 잘못된 인증서
- 개인 인증서가 SSL 상호 인증에 사용되는 클라이언트 키 저장소에 존재합니다.
- 서명자 인증서가 서버 신뢰 저장소 파일로 추출되지 않아서 SSL 핸드쉐이크가 이루어질 때마다 서버가 인증을 신뢰할 수 없습니다.
ERROR: Could not get the initial context or unable to look
up the starting context. Exiting.
Exception received: javax.naming.ServiceUnavailableException:
A communication failure occurred while attempting to obtain an
initial context using the provider url: "corbaloc:iiop:localhost:2809".
Make sure that the host and port information is correct and that the
server identified by the provider url is a running name
server. If no port number is specified, the default port number 2809
is used. Other possible causes include the network environment or
workstation network configuration.
[Root exception is org.omg.CORBA.TRANSIENT: CAUGHT_EXCEPTION_WHILE_CONFIGURING_SSL_
CLIENT_SOCKET: CWWJE0080E: javax.net.ssl.SSLHandshakeException - The client and
server could not negotiate the desired level of security. 이유:
잘못된 인증서:
host=MYSERVER,port=1940 부 코드: 4942F303 완료: 아니오]
이 문제점을 확인하려면 서버 신뢰 저장소 파일을 확인하여 클라이언트 개인 인증서의 서명자 인증서가 있는지 판별하십시오. 자체 서명한 클라이언트 개인 인증서의 경우, 서명자 인증서는 개인 인증서의 공용 키입니다. CA(Certificate Authority)의 서명이 있는 클라이언트 개인 인증서의 경우, 서명자 인증은 개인 인증서를 서명한 CA의 루트 CA 인증서입니다.
이러한 문제점을 정정하려면 클라이언트 서명자 인증서를 서버 신뢰 저장소 파일에 추가하십시오.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
org.omg.CORBA.INTERNAL: EntryNotFoundException 또는 NTRegistryImp E CWSCJ0070E: 구성된 특권 ID 없음: 신임을 프로그램 방식으로 작성할 때 오류 발생
오류: 초기 컨텍스트를 가져올 수 없거나 시작 컨텍스트를 참조할 수 없습니다.
종료합니다. Exception received: org.omg.CORBA.INTERNAL: Trace from server: 1198777258
at host MYHOST on port 0 >>org.omg.CORBA.INTERNAL: EntryNotFoundException minor
code: 494210B0 completed:
No at com.ibm.ISecurityLocalObjectBaseL13Impl.PrincipalAuthFailReason.
map_auth_fail_to_minor_code(PrincipalAuthFailReason.java:99)
[7/31/02 15:38:48:452 CDT] 27318f5 NTRegistryImp E CWSCJ0070E: No privilege id
configured for: testuser
원인은 클라이언트가 서버로 전송한 사용자 ID가 서버의 사용자 레지스트리에 없기 때문입니다.
이 문제점을 확인하려면, 서버로 전송된 개인 인증서에 대한 항목이 존재하는지 확인하십시오. 사용자 레지스트리 메커니즘에 따라 기본 운영 체제 사용자 ID 또는 LDAP(Lightweight Directory Access Protocol) 서버 항목을 살펴보십시오.
이 문제점을 정정하려면 사용자 ID를 개인 인증서 ID의 사용자 레지스트리 항목(예: 운영 체제, LDAP 디렉토리 또는 기타 사용자 정의 디렉토리)에 추가하십시오.
GUI 애플리케이션 클라이언트의 "카탈로그" 태블릿이 공백임(표시되는 항목이 없음)
이 오류 메시지는 EJB 브릿지에 PlantsByWebSphere Active X를 사용하는 ActiveX 클라이언트 샘플 애플리케이션을 설치할 때 발생합니다.
원인은 서버 인증이 client.ssl.props 파일에 지정된 클라이언트 trustore에 있지 않기 때문입니다. "com.ibm.ssl.enableSignerExchangePrompt" 서명자 특성이 true로 설정되어 있을 수 있어도 자동 교환 프롬프트는 명령행 프롬프트만 지원합니다. 샘플 애플리케이션이 그래픽 사용자 인터페이스에 의존하고 명령 프롬프트에 대한 액세스를 제공하지 않는 경우(예: 표준 입력 및 표준 출력 사용), 자동 교환 프롬프트가 작동하지 않습니다.
이 문제점을 정정하려면 retrieveSigners 유틸리티를 사용하여 인증을 수동으로 검색하십시오.
-scriptCompatibility true를 사용하여 마이그레이션 후 SSL 구성 수정
scriptCompatibility true를 사용하여 마이그레이션한 후 SSL 구성의 모든 속성을 관리 콘솔을 통해 편집할 수 없습니다. 특히 하드웨어 암호 설정이 표시되지 않거나 편집되지 않습니다.
scriptCompatibility true 플래그를 사용하는 것으로는 SSL 구성이 버전 6.1 이후 릴리스의 새 지원 형식으로 마이그레이션되지 않습니다. 구성이 최신 형식으로 마이그레이션되지 않을 때는 지원되지 않는 새 기능이 추가되었습니다.버전 6.1 이전의 릴리스에서 마이그레이션 중인 경우, convertSSLConfig 태스크를 사용하여 SSL 구성 정보를 중앙 집중식 SSL 구성 형식으로 변환할 수 있습니다.
NOTRUST 옵션으로 디지털 인증을 정의하면 독립형 구성이 실패함
NOTRUST 옵션으로 디지털 인증을 정의할 경우 다음과 같은 오류 메시지가 수신될 수 있습니다.
Trace: 2008/06/18 16:57:57.798 01 t=8C50B8 c=UNK key=S2 (0000000A)
Description: Log Boss/390 Error
from filename: ./bbgcfcom.cpp
at line: 376
error message: BBOO0042E Function AsynchIOaccept failed with RV=-1, RC=124, RSN=050B0146, ?EDC5124I
Too many open files. (errno2=0x0594003D)??
이 오류가 표시되면 'D OMVS,P를 입력하십시오. NOTRUST 문제가 있을 경우 'OPNSOCK' 섹션에 큰 수가 표시됩니다.
디지털 인증을 확인하여 디지털 인증이 NOTRUST 옵션에 표시되지 않도록 하십시오. 이러한 문제점은 디지털 인증서가 인증서 작성 시 사용되는 CERTAUTH의 만기 날짜 이후에 작성되었을 경우에 발생할 수 있습니다.
SSL로 LDAP 저장소 구성 시 문제점
SSL로 LDAP 저장소를 구성하는 경우 관리 에이전트에 노드가 등록되기 전에 노드에 대한 LDAP 저장소를 구성해야 합니다.
에이전트에 노드를 등록한 후에 LDAP 저장소 구성을 시도하는 경우 연합 저장소는 이 노드의 신뢰 저장소 대신에 관리 에이전트의 신뢰 저장소에서 SSL 인증서를 찾습니다.
SHA384withECDSA에 대해 체인 인증서를 작성할 때의 문제점
SHA384withECDSA로 변환된 인증서가 있고 SSL 인증서 및 키 관리->키 저장소 및 인증서 ->키 저장소 >개인 인증서를 클릭하여 관리 콘솔에서 체인 인증서를 작성한 후 새 체인 인증서를 작성하려고 하는 경우 지원되는 키 크기는 384여야 합니다. 그렇지 않은 경우 인증서를 작성할 수 없습니다.
이를 해결하려면 Javascript를 사용하여 패널에 정확한 키 크기를 표시할 수 있습니다.