서버 보안 단계를 모두 수행한 후, 클라이언트에 대한 추가 보안 요구 사항을 설정할 수 있습니다.
클라이언트 인증이 SSL 연결에 반드시 필요한 것은 아니지만 암호화된 정보를 올바른 대상에게 전송하는 데 도움이 될 수 있습니다. 역방향 프록시에서 클라이언트 인증을 사용하여 내용 서버가 권한이 없는 프록시나 클라이언트와 정보를 공유하지 않도록 할 수 있습니다.
이 절은 다음 내용으로 구성되어 있습니다.
Administration Server용 청취 소켓을 사용하도록 설정하고 각 서버 인스턴스가 클라이언트 인증을 요청하도록 할 수 있습니다. 클라이언트 인증을 활성화하면 서버가 쿼리에 대한 응답을 전송하기 전에 클라이언트에 인증서를 요구합니다.
Proxy Server는 클라이언트 인증서에 있는 CA와 클라이언트 인증서 서명용으로 신뢰된 CA를 비교하여 클라이언트 인증서를 인증합니다. 클라이언트 인증서 서명용으로 신뢰된 CA의 목록은 Security 탭을 통해 Manage Certificates 페이지에서 볼 수 있습니다.
신뢰할 수 있는 CA의 클라이언트 인증서를 보유하지 않은 클라이언트를 거부하도록 프록시 서버를 구성할 수 있습니다. 신뢰할 수 있는 CA를 수락하거나 거부하려면 CA에 대해 클라이언트 트러스트를 설정해야 합니다. 자세한 내용은 인증서 관리를 참조하십시오.
인증서의 유효 기간이 만료된 경우 프록시 서버는 오류를 기록하고 인증서를 거부하며 클라이언트에게 메시지를 반송합니다. 또한 Manage Certificates 페이지에서 만료된 인증서를 볼 수 있습니다.
서버가 인증서 클라이언트에서 정보를 수집하여 이를 LDAP 디렉토리에 있는 사용자 항목과 비교하도록 구성할 수 있습니다. 이 프로세스는 클라이언트에 유효한 인증서가 있고 LDAP 디렉토리에 항목이 있는지 확인합니다. 또한 클라이언트 인증서가 LDAP 디렉토리의 항목 중 하나와 일치되도록 합니다. 이에 대한 방법은 클라이언트 인증서를 LDAP로 매핑을 참조하십시오.
클라이언트 인증서를 액세스 제어와 조합할 수 있으므로 신뢰된 CA의 요구 사항 이외에 인증서에 연결된 사용자는 반드시 액세스 제어 규칙(ACL)과 일치되어야 합니다. 자세한 내용은 액세스 제어 파일 사용을 참조하십시오.
Administration Server 또는 Server Manager에 액세스하고 Preferences 탭을 누릅니다.
Edit Listen Sockets 링크를 누릅니다.
클라이언트 인증을 요구할 청취 소켓에 대한 링크를 누릅니다.
Client Authentication 드롭다운 목록을 사용하여 청취 소켓에 대한 클라이언트 인증을 요구하고 OK를 누릅니다.
역방향 프록시에서는 다음 시나리오 중 하나에 따라 클라이언트 인증을 구성할 수 있습니다.
Proxy-Authenticates-Client.이 시나리오에서는 사용 가능한 인증서가 있는 모든 클라이언트에 대한 액세스를 허용하거나, 사용 가능한 인증서가 있고 Proxy Server의 액세스 제어 목록에서 인식된 사용자인 클라이언트에 대한 액세스만 허용할 수 있습니다.
프록시에 CA의 사용자 루트 키 또는 사용자 인증서에 서명한 자체 서명 응용 프로그램이 있어야 합니다. 사용자는 CA 또는 Proxy Server 인증서에 서명한 자체 서명 응용 프로그램의 프록시 서버 루트 키를 로드해야 합니다.
Content-Server-Authenticates-Proxy.이 시나리오에서는 내용 서버가 실제로 Proxy Server와 연결 중이며 다른 서버와는 연결하고 있지 않음을 확인할 수 있습니다.
프록시에 CA 또는 내용 서버 인증서에 서명한 자체 서명 응용 프로그램의 내용 서버 루트 키가 있어야 합니다. 내용 서버에 CA 또는 Proxy Server 인증서에 서명한 자체 서명 응용 프로그램의 Proxy Server 루트 키가 있어야 합니다.
Proxy-Authenticates-Client and Content-Server-Authenticates-Proxy.이 시나리오는 역방향 프록시에 대해 최대 보안 및 인증을 제공합니다.
이러한 시나리오를 구성하는 방법에 대한 자세한 내용은 역방향 프록시에서의 클라이언트 인증 설정을 참조하십시오.
보안 역방향 프록시에서의 클라이언트 인증은 연결의 보안을 더욱 강화할 수 있습니다. 다음 지침에서는 선택한 시나리오에 따라 클라이언트 인증을 구성하는 방법에 대해 설명합니다.
각 시나리오에서는 보안 클라이언트-프록시 연결 및 보안 프록시-내용 서버 연결을 모두 사용한다고 가정합니다.
14 장역방향 프록시 사용의 "역방향 프록시 설정"에 있는 보안 클라이언트-프록시 및 보안 프록시-내용 서버 시나리오 구성 지침을 따릅니다.
서버 인스턴스에 대한 Server Manager에 액세스하고 Preferences 탭을 누릅니다.
Edit Listen Sockets 링크를 누른 다음 나타나는 표에서 원하는 청취 소켓에 대한 링크를 누릅니다.
청취 소켓을 구성하고 추가하려면 Add Listen Socket 링크를 사용합니다.
클라이언트 인증 요구 사항을 지정합니다.
유효한 인증서가 있는 모든 사용자에게 액세스를 허용하는 방법
Security 섹션에서 Client Authentication 설정을 사용하여 이 청취 소켓에 대해 클라이언트 인증을 요구합니다. 서버 인증서가 설치되어 있지 않으면 이 설정이 표시되지 않습니다.
두 개의 유효한 인증서가 모두 있고 액세스 제어에 승인된 사용자로 지정된 사용자에게만 액세스를 허용하는 방법
Security 섹션에서 Client Authentication 설정을 off로 유지합니다. 서버 인증서가 설치되어 있지 않으면 이 설정이 표시되지 않습니다.
이 서버 인스턴스에 대한 Server Manager Preferences 탭에서 Administer Access Control 링크를 누릅니다.
ACL을 선택한 다음 Edit 버튼을 누릅니다.
Access Control Rules For 페이지가 표시됩니다(프롬프트가 표시되면 인증 필요).
액세스 제어를 사용하도록 설정합니다(아직 선택되어 있지 않으면 Access control Is On 확인란 선택).
역방향 프록시로 인증하도록 Proxy Server를 설정합니다.
자세한 내용은 역방향 프록시 설정을 참조하십시오.
원하는 액세스 제어 규칙에 대한 Rights 링크를 누르고 아래 창에서 액세스 권한을 지정한 다음 Update를 눌러 이 항목을 업데이트합니다.
Users/Groups 링크를 누릅니다. 아래 창에서사용자 및 그룹을 지정하고 인증 방법으로 SSL을 선택한 다음 Update를 눌러 이 항목을 업데이트합니다.
위 창에서 Submit를 눌러 항목을 저장합니다.
액세스 제어 설정에 대한 자세한 내용은 8 장서버 액세스 제어를 참조하십시오.
역방향 프록시 설정의 보안 클라이언트-프록시 및 프록시-내용 서버 시나리오를 구성하는 지침을 따릅니다.
내용 서버에서 클라이언트 인증을 사용하도록 설정합니다.
Proxy Server에 대한 비보안 클라이언트 연결 및 내용 서버에 대한 보안 연결을 수행하고 내용 서버가 프록시 서버를 인증하도록 이 시나리오를 수정할 수 있습니다. 이렇게 하려면 다음 절차에 설명된 대로 암호화의 사용 설정을 해제하고 프록시가 인증서만 초기화하도록 해야 합니다.
Proxy-Authenticates-Client 시나리오 구성 방법의 프록시-인증-클라이언트 시나리오를 구성하는 방법에 대한 지침을 따릅니다.
내용 서버에서 클라이언트 인증을 사용하도록 설정합니다.
이 절에서는 Proxy Server가 클라이언트 인증서를 LDAP 디렉토리의 항목으로 매핑하는 프로세스에 대해 설명합니다. 클라이언트 인증서를 LDAP에 매핑하기 전에 필수 ACL을 구성해야 합니다. 자세한 내용은 8 장서버 액세스 제어를 참조하십시오.
서버가 클라이언트의 요청을 수신하면 이를 처리하기 전에 클라이언트의 인증서를 요구합니다. 클라이언트에 따라 서버에 요청과 함께 클라이언트를 전송하는 경우도 있습니다.
서버는 CA를 Administration Server에 있는 신뢰할 수 있는 CA의 목록과 일치시키려 합니다. 일치 항목이 없으면 Proxy Server는 연결을 종료합니다. 일치 항목이 있으면 서버가 요청 처리를 계속합니다.
신뢰할 수 있는 CA의 인증서임을 확인한 후 서버는 다음과 같이 인증서를 LDAP 항목으로 매핑합니다.
클라이언트 인증서에 있는 발행자와 대상 DN을 LDAP 디렉토리의 분기점에 매핑합니다.
LDAP 디렉토리에 클라이언트 인증서의 대상(최종 사용자)에 대한 정보와 일치하는 항목이 있는지 검색합니다.
(선택 사항) 클라이언트 인증서를 DN에 해당하는 LDAP 항목 중 하나와 확인합니다.
서버는 certmap.conf라는 인증서 매핑 파일을 사용하여 LDAP 검색이 수행되는 방법을 결정합니다. 서버는 매핑 파일에 따라 클라이언트 인증서에서 가져올 값(예: 최종 사용자의 이름, 전자 메일 주소 등)을 결정합니다. 서버는 이 값을 사용하여 LDAP 디렉토리에서 사용자 항목을 검색하지만, 우선 서버가 LDAP 디렉토리에서 검색을 시작할 위치를 결정해야 합니다. 서버는 또한 인증서 매핑 파일에서 시작 위치를 알 수 있습니다.
서버가 검색을 시작할 위치와 검색할 항목을 결정하면 LDAP 디렉토리에서 검색을 수행합니다(두 번째 지점). 일치 항목이 없거나 일치 항목이 여러 개인 경우 인증서를 확인하도록 매핑이 설정되지 않고 검색은 실패합니다.
예상되는 검색 결과의 목록은 다음 표와 같습니다. ACL에서 예상 동작을 지정할 수 있습니다. 예를 들어, 인증서 일치에 실패하면 Proxy Server가 해당사용자만 허용하도록 지정할 수 있습니다. ACL 기본 설정을 지정하는 방법에 대한 자세한 내용은 액세스 제어 파일 사용을 참조하십시오.
표 5–1 LDAP 검색 결과
LDAP 검색 결과 |
인증서 검증 ON |
인증서 검증 OFF |
---|---|---|
검색된 항목 없음 |
인증 실패 |
인증 실패 |
정확히 한 개 항목 일치 |
인증 실패 |
인증 성공 |
여러 항목 일치 |
인증 실패 |
인증 실패 |
서버가 LDAP 디렉토리에서 일치 항목과 인증서를 찾으면 서버는 해당 정보를 사용하여 트랜잭션을 처리할 수 있습니다. 예를 들어 서버에 따라 인증서 LDAP 매핑을 사용하여 서버에 대한 액세스를 결정합니다.
인증서 매핑에 따라 서버가 LDAP 디렉토리에서 사용자 항목을 찾는 방법이 결정됩니다. certmap.conf 파일을 사용하여 이름으로 명시된 인증서를 LDAP 항목에 매핑하는 방법을 구성할 수 있습니다. 이 파일을 편집하고 항목을 추가하여 LDAP 디렉토리의 조직과 일치시키고 사용자에게 부여할 인증서 목록을 표시할 수 있습니다. 사용자는 사용자 아이디, 전자 메일 주소 또는 subjectDN에 사용되는 다른 모든 값을 기반으로 인증될 수 있습니다. 특히, 매핑 파일에는 다음의 정보가 정의됩니다.
서버가 검색을 시작하는 LDAP 트리 내의 위치
LDAP 디렉토리에서 항목을 검색할 때 서버가 검색 범주로 사용할 인증서 속성
서버가 추가적인 검증 과정을 수행할 것인지 여부
server-root/userdb/certmap.conf
파일에는 하나 이상의 이름 매핑이 있으며, 각각의 매핑은 서로 다른 CA에 적용됩니다. 매핑의 구문은 다음과 같습니다.
certmap name issuerDNname :property [ value]
첫 번째 줄은 항목의 이름과 CA 인증서에 있는 고유 이름을 구성하는 속성을 지정합니다. name은 임의이며 원하는 값으로 정의할 수 있습니다. 그러나 issuerDN은 클라이언트 인증서를 발행한 CA의 발행자 DN과 정확하게 일치해야 합니다. 예를 들어, 아래의 발행자 DN 행의 차이는 단지 속성을 구분하는 공백이지만 서버는 이 두 항목을 서로 다른 것으로 처리합니다.
certmap sun1 ou=Sun Certificate Authority,o=Sun,c=UScertmap sun2 ou=Sun Certificate Authority, o=Sun, c=US
Sun Java System Directory Server를 사용하고 발행자 DN을 일치시키는 데 문제가 발생하는 경우에는 디렉토리 서버 오류 로그에 유용한 정보가 있는지 확인하십시오.
이름 매핑의 두 번째 및 이후 줄은 등록 정보를 값과 매핑합니다. certmap.conf 파일에는 6개의 기본 등록 정보가 있습니다. 인증서 API를 사용하여 자체 등록 정보를 직접 사용자 정의할 수도 있습니다. 기본 등록 정보는 다음과 같습니다.
DNComps는 쉼표로 분리된 속성 목록으로, LDAP 디렉토리에서 사용자의 정보(즉, 클라이언트 인증서의 소유자)와 일치하는 항목 검색을 시작할 위치를 결정하는 데 사용합니다. 서버는 클라이언트 인증서에서 이들 속성 값을 수집하고 값을 사용하여 LDAP DN을 구성합니다. 그런 후 LDAP 디렉토리에서 서버가 검색을 시작할 위치를 결정합니다. 예를 들어, DNComps가 DN의 o 및 c 속성을 사용하도록 설정된 경우 서버는 LDAP 디렉토리의 o=org, c= country 항목부터 검색을 시작합니다. 여기서 org 및 country는 인증서의 DN에 있는 값으로 대체됩니다.
다음 상황에 유의하십시오.
매핑에 DNComps 항목이 없는 경우 서버는 CmapLdapAttr 설정을 사용하거나 클라이언트 인증서에 있는 전체 대상 DN(즉, 최종 사용자의 정보)을 사용합니다.
DNComps 항목은 있으나 값이 없는 경우, 서버는 전체 LDAP 트리에서 필터와 일치하는 항목을 검색합니다.
FilterComps는 쉼표로 분리된 속성 목록으로 클라이언트 인증서에 있는 사용자의 DN에서 정보를 수집하여 필터를 만드는 데 사용합니다. 서버는 이들 속성용 값을 사용하여 LDAP 디렉토리에서 항목을 비교하는데 사용할 검색 범주를 구성합니다. LDAP에서 인증서에서 수집한 사용자의 정보와 일치하는 항목이 하나 이상 검색되는 경우 검색은 성공적이며 서버는 선택적으로 검증을 수행합니다.
예를 들어, FilterComps를 전자 메일과 사용자 아이디 속성을 사용하도록 설정하는 경우(FilterComps=e,uid), 서버는 디렉토리에서 전자 메일과 사용자 아이디 값이 클라이언트 인증서에서 수집한 사용자 정보와 일치하는 항목을 검색합니다. 전자 메일 주소와 사용자 아이디는 일반적으로 디렉토리에서 고유한 항목이므로 좋은 필터가 될 수 있습니다. LDAP 데이터베이스에서 오직 하나의 항목만 검색하려면 필터가 구체적이어야 합니다.
필터용 속성 이름은 LDAP 디렉토리가 아닌 인증서의 속성 이름이어야 합니다. 예를 들어, 일부 인증서에는 사용자의 전자 메일 주소용 속성으로 e가 있는 반면 LDAP에서 이 속성의 이름은 mail 입니다.
x509v3 인증서 속성의 목록은 다음 표와 같습니다.
속성 |
설명 |
---|---|
국가 |
|
조직 |
|
공통 이름 |
|
위치 |
|
상태 |
|
조직 단위 |
|
UNIX/Linux 사용자 아이디 |
|
전자 메일 주소 |
서버는 verifycert에 따라 클라이언트의 인증서를 LDAP 디렉토리에서 발견된 인증서와 비교할지 여부를 결정합니다. 등록 정보는두 가지 값(on 및 off)을 사용합니다. 이 등록 정보는 LDAP 디렉토리에 인증서가 있는 경우에만 사용합니다. 이 기능은 최종 사용자의 인증서가 유효하며 취소되지 않았는지 확인하는 데 유용합니다.
CmapLdapAttr은 LDAP 디렉토리에 있는 속성 이름으로 사용자에게 속한 모든 인증서의 대상 DN을 포함합니다. 이 등록 정보의 기본값은 certSubjectDN입니다. 이 속성은 표준 LDAP 속성이 아니므로 이 등록 정보를 사용하려면 반드시 LDAP 스키마를 확장해야 합니다. 자세한 내용은 SSL 개요를 참조하십시오.
certmap.conf 파일에 이 등록 정보가 있으면 서버는 전체 LDAP 디렉토리에서 속성이 대상의 전체 DN(인증서에서 가져온 DN)과 일치하는 항목을 검색합니다. 발견된 항목이 없으면 서버는 DNComps 및 FilterComps 매핑을 사용하여 검색을 재시도합니다.
인증서를 LDAP 항목과 일치시키는 이러한 방식의 접근은 DNComps 및 FilterComps를 사용하여 항목을 일치시키기 어려운 경우에 유용합니다.
Library는 공유 라이브러리 또는 DLL에 대한 경로 이름입니다. 이 등록 정보는 인증서 API를 사용하여 자체 등록 정보를 만든 경우에만 사용합니다.
InitFn은 사용자 정의 라이브러리의 init 함수의 이름입니다. 이 등록 정보는 인증서 API를 사용하여 자체 등록 정보를 만든 경우에만 사용합니다.
이러한 등록 정보에 대한 자세한 내용은 매핑 예제에 설명된 예를 참조하십시오.
클라이언트 인증서 API는 자체 등록 정보를 만드는 데 사용할 수 있습니다. 사용자 정의 매핑이 있는 경우 매핑은 다음과 같이 참조합니다.
name:library path_to_shared_libraryname :InitFN name_of_ init_function
예:
certmap default1 o=Sun Microsystems, c=US default1:library /usr/sun/userdb/plugin.so default1:InitFn plugin_init_fn default1:DNComps ou o c default1:FilterComps l default1:verifycert on
certmap.conf 파일에는 항목이 한 개 이상 있어야 합니다. 다음 예는 certmap.conf를 사용할 수 있는 다양한 방법을 보여줍니다.
certmap default defaultdefault:DNComps ou, o, cdefault:FilterComps e, uiddefault:verifycert on
이 예제를 사용하면 서버는 ou=orgunit, o=org, c=country 항목을 포함하는 LDAP 분기점에서 검색을 시작하며, 여기서 기울임체로 표시된 텍스트는 클라이언트 인증서에 있는 대상 DN의 값으로 대체됩니다.
이후, 서버는 인증서에 있는 전자 메일 주소와 사용자 아이디 값을 사용하여 LDAP 디렉토리에 일치하는 항목이 있는지 검색합니다. 항목이 검색되면 서버는 클라이언트가 전송한 인증서와 디렉토리에 있는 인증서를 비교하여 인증서를 검증합니다.
다음 예제 파일에는기본값 및 미국 우편 서비스에 대한 두 가지 매핑이 있습니다.
certmap default defaultdefault:DNCompsdefault:FilterComps e, uid
certmap usps ou=United States Postal Service, o=usps, c=USusps:DNComps ou,o,cusps:FilterComps eusps:verifycert on
서버에 미국 우편 서비스가 아닌 다른 인증서가 수신되면 기본 매핑을 사용합니다. 이 경우 LDAP 트리의 상단에서 시작하여 클라이언트의 전자 메일 및 사용자 아이디와 일치하는 항목을 검색합니다. 미국 우편 서비스의 인증서인 경우 서버는 조직 단위를 포함하는 LDAP 분기에서 검색을 시작하며 일치하는 전자 메일 주소를 검색합니다. 또한 서버는 인증서를 확인합니다. 다른 인증서는 확인되지 않습니다.
인증서의 발행자 DN(즉, CA 정보)은 반드시 매핑의 첫 번째 행 목록에 있는 발행자 DN과 동일해야 합니다. 앞의 예제에서 o=United States Postal Service,c=US인 발행자 DN의 인증서는 o와 c 속성 사이에 공백이 없으므로 일치되지 않습니다.
다음 예제에서는 CmapLdapAttr 등록 정보를 사용하여 LDAP 데이터베이스에서 certSubjectDN이라는 속성을 검색합니다. 이 속성의 값은 클라이언트 인증서에서 가져온 전체 대상 DN과 정확하게 일치합니다. 이 예제에서는 LDAP 디렉토리에 certSubjectDN 속성이 있는 항목이 포함된 것으로 가정합니다.
certmap myco ou=My Company Inc, o=myco, c=USmyco:CmapLdapAttr certSubjectDNmyco:DNComps o, c myco:FilterComps mail, uid myco:verifycert on
클라이언트 인증서 대상이 다음인 경우,
uid=Walt Whitman, o=LeavesOfGrass Inc, c=US
서버는 우선 다음 정보를 포함한 항목을 검색합니다.
certSubjectDN=uid=Walt Whitman, o=LeavesOfGrass Inc, c=US
일치하는 항목이 하나 이상인 경우에는 서버가 항목을 검증합니다. 일치 항목이 없는 경우 서버는 DNComps 및 FilterComps를 사용하여 일치하는 항목을 검색합니다. 이 예제에서 서버는 o=LeavesOfGrass Inc, c=US의 모든 항목에서 uid=Walt Whitman을 검색합니다.