 |
|
난이도 : 초급 Bimal Shah, Advisory Software Engineer, IBM Aya Zaghloul, Software Engineer, IBM
2007 년 12 월 11 일 암호화, 인증서 기반 인증, 보안 협상을 제공하는 Secure Sockets Layer (SSL)로 오픈 통신 채널의 데이터를 보안화 하십시오. 세 파트 시리즈 중 첫 번째 기술자료에서는 SSL이 무엇이며, Integrated Solutions Console에 이것을 구현해야 하는 이유를 설명합니다. Integrated Solutions Console Version 5.1과 Version 6.0.1에 SSL을 구현하는 방법을 단계별로 설명합니다.
인터넷 같은 오픈 통신 네트워크를 통한 데이터 보안은 개발자와 고객들에게 큰 걱정거리이다. 따라서, 여러분이 사용하는 제품이 보안 환경을 구축할 수 있도록 하는 것이 매우 중요하다.
Netscape Communications와 RSA Data Security가 합동으로 개발한 Secure Sockets Layer (SSL)는 효율적인 방식으로 이러한 보안을 이룩할 수 있다. SSL은 암호화, 인증서 기반 인증, 구축된 네트워크 연결을 통한 보안 협상을 제공하고, 많은 기업들과 제품들은 자신들의 통신 프로토콜에 SSL을 채택하고 있다.
본 시리즈에서는, 두 가지 주제에 집중하기로 한다:
- SSL의 작동 방법 상세
- Integrated Solutions Console의 Version 5.1과 Version 6.0.1에서 SSL을 실행하는 방법
이 글에서, 여러분의 Integrated Solutions Console Version 5.1과 Version 6.0.1 환경에서 SSL을 전개할 때 구현 문제를 짚어보고자 한다.
인증서 유형 재생
SSL은 인증서를 사용하여 보안을 확인한다. 이러한 SSL 인증서는 보안 서버에 놓이고, 데이터를 암호화 하고 웹 사이트를 구분하는데 사용된다. SSL 인증서는 사이트가 올바른 사람에게 속해 있는 지와 인증서 보유자에 대한 정보를 포함하고 있는지, 인증서가 발행된 도메인, 인증서를 발행한 Certificate Authority의 이름을 확인한다.
SSL 인증서를 획득하는 세 가지 방법이 있다:
- 더미(dummy) 인증서 사용하기
- 자가 서명(self-signed) 인증서 사용하기
- Certificate Authority (CA) 인증서 사용하기
더미 인증서 사용하기
이것은 덜 똑똑한 버전이 아니다. 일반적으로 더미 인증서에는 지정된 환경에 SSL을 설정하고 그 기능을 테스트하는데 임시적으로 사용될 수 있는 플레이스홀더로서 작동하는 "가상의" 정보를 포함하고 있다. Integrated Solutions Console은 더미 인증서와 서버 및 클라이언트 트러스트와 키 파일을 제공한다.
version 5.1/version 6.0.1이 어떻게 실행되는지를 보자.
자가 서명 인증서 사용하기
자가 서명 인증서는 사용자가 생성한 인증서이다. 자가 서명 인증서를 사용할 때, 인증서 발행자는 주제와 같다. 이 솔루션의 강점은 CA 서명 서버 인증서를 획득하는 것보다 자가 서명 서버 인증서를 만드는 시간이 덜 걸린다는 점이다. 하지만, 자가 서명 인증서는 SSL 연결을 통해 인증서를 설치하는 서버로 연결된 클라이언트가 인증서의 서명자를 신임하도록 설정되어야 한다. 인증서는 자가 서명되었기 때문에, 서명은 클라이언트의 트러스트 파일에 있지 않으므로, 추가되어야 한다. 모든 클라이언트의 트러스트 파일에 액세스 하는 것이 비현실적이라면, 이러한 설정을 사용하지 않는다. 대신 CA 서명 인증서를 얻어야 한다. 자가 서명 인증서는 서버와 인터랙팅 하는 클라이언트가 인증서를 신임하도록 설정될 수 있을 때에만 유용하다.
version 5.1/version 6.0.1이 어떻게 실행되는지를 보자.
Certificate Authority (CA) 인증서 사용하기
Certificate Authority는 업계의 신임을 받는 기구이며, 인터넷 인증서를 발행하고 있다. 대표적인 예로 VeriSign을 들 수 있다. CA 서명 인증서를 획득하려면, 충분한 정보를 CA에 제공하여 CA가 여러분의 신원을 확인할 수 있도록 해야 한다. CA는 새로운 인증서를 만들고, 이것을 디지털 서명을 한 다음, 여러분에게 제공한다. 대중적인 웹 브라우저들은 특정 CA에 의해 서명된 인증서를 신임하도록 미리 설정되어 있다. 클라이언트가 SSL을 통해 인증서가 발행된 서버로 연결하기 위해 추가적인 클라이언트 설정이 필요 없다.
version 5.1/version 6.0.1이 어떻게 실행되는지를 보자.
더미 인증서로 5.1 실행하기
다음은 더미 인증서를 사용하여 Integrated Solutions Console 5.1에 SSL을 실행하는 방법이다.
Integrated Solutions Console에 포함된 더미 인증서는 <isc_root>/AppServer/etc 디렉토리에 있다. key/trust 파일들은 다음과 같다.
- DummyClientKeyFile.jks
- DummyClientTrustFile.jks
- DummyServerKeyFile.jks
- DummyServerTrustFile.jks
SSL 실행하기:
- 호스트 앨리어스 포트로 virtualhosts.xml 파일을 편집한다.
- 리다이렉트 로그인/로그아웃 매개변수용
True 값으로 ConfigService.properties 파일을 편집한다.
-
None으로 설정된 보안 제약 조건으로 web.xml을 편집한다.
- 관련 패스워드로 wpconfig.properties를 업데이트 한다.
-
WPSconfig 명령어를 실행한다.
- wpconfig.properties에서 패스워드를 제거한다.
- ISC_Portal을 재시작 한다.
다음 섹션에서는 위의 각 단계를 하나씩 설명하도록 하겠다.
1 단계. virtualhosts.xml 파일 편집하기
<isc_root>/AppServer/config/cells/DefaultNode 디렉토리에 있는 virtualhosts.xml 파일을 열고, default_host라는 가상 호스트용 </host:Virtualhost> 엔딩 엘리먼트 앞에 다음의 엘리먼트를 추가한다. 이 엘리먼트를 앨리어스 리스트에 추가한다:
<aliases xmi:id= " HostAlias_x" hostname="*" port="alias_port"/>
|
이 경우, x는 HostAlias 시퀀스의 다음 넘버이고, alias_port는 Integrated Solutions Console installation (기본적으로 8422이다.) 설치 동안 -W generalConfig.httpsPort="port"에 의해 지정된 값이다.
파일을 저장한다.
2 단계. ConfigService.properties 파일 편집하기
<isc_root>/PortalServer/shared/app/config/services 디렉토리에 있는 ConfigService.properties 파일을 열고, 다음 매개변수를 true로 설정한다:
redirect.login.ssl=true
redirect.logout.ssl=true
|
https 포트가 올바르게 설정되었는지 확인한다:
host.port.https=alias_port
(where
alias_port is the port number used for the virtual host alias.
|
파일을 저장한다.
3 단계. web.xml 파일 편집하기
<isc_root>/AppServer/config/cells/DefaultNode/applications/wps.ear/deployment/wps/wps.war/WEB-INF 디렉토리에 있는 web.xml을 연다.
<security-constraint>엘리먼트를 찾고,
<transport-guarantee>NONE</transport-guarantee>
을
<transport-guarantee>CONFIDENTIAL</transport-guarantee>로 대체한다.
파일을 저장한다.
4 단계. wpconfig.properties 파일 편집하기
<isc_root>/PortalServer/config 디렉토리에 있는 wpconfig.properties를 열고, 알맞은 패스워드로 다음 매개변수를 업데이트 한다:
- WasPassword
- PortalAdminPwd
- DbPassword (db2admin이 기본이다.)
- WmmDbPassword (db2admin이 기본이다.)
- LTPAPassword (dbonly 보안을 사용할 경우 이것을 설정한다.)
- LDAPAdminPwd (LDAP를 사용하는 경우 이것을 설정한다.)
- LDAPBindPassword (LDAP를 사용하는 경우 이것을 설정한다.)
- WmmSystemIdPassword (WMM을 사용하는 경우 이것을 설정한다.)
파일을 저장한다.
5 단계. WPSconfig 명령어 실행하기
<isc_root>/PortalServer/config 디렉토리에 있는 WPSconfig.bat 스크립트를 실행한다.
WPSconfig.bat/.sh init action-deploy-setupisc-ssl
주: 이 명령어는 현재 버전의 로그인 포틀릿을 보안 버전의 로그인 포틀릿으로 대체한다.
6 단계. 패스워드 제거하기
4 단계 동안 wpconfig.properties 파일에 추가되었던 패스워드를 제거하고(보안 목적), 파일을 저장한다.
7 단계. ISC_Portal 재시작
Integrated Solutions Console 서버가 실행 중이라면, 다음을 입력하여 서버를 중지한다:
<isc_root>/PortalServer/bin/stopISC.bat|.sh ISC_Portal <userid> <password>
Integrated Solutions Console 서버가 중지된 후에, ISC_Portal을 시작한다:
<isc_root>/PortalServer/bin/startISC.bat|.sh ISC_Portal
자가 서명 인증서로 5.1 실행하기
이 섹션에서는 자가 서명 인증서를 사용하여 Integrated Solutions Console에 SSL을 실행하는데 필요한 단계를 간략히 설명한다.
- 자가 서명 인증서를 사용하여 네 개의 SSL key/trust 파일을 만든다.
- <isc root>\AppServer\bin 디렉토리에 JACL 스크립트를 만든다.
- wsadmin.properties 파일을 수정하여 정확한 SOAP 포트를 반영한다.
- JACL 스크립트에 wsadmin을 실행한다.
- ConfigService.properties와 virtualhosts.xml 파일을 수정한다.
- web.xml 파일을 수정한다.
- ISC_Portal을 중지한다.
- soap.client.props 파일을 수정한다.
- ISC_Portal을 시작한다.
- 변경 사항을 테스트 한다.
다음 섹션에서는 각 단계를 자세히 설명한다.
1단계. 자가 서명 인증서를 사용하여 SSL 키 파일을 만들기
다음은 네 개의 키 파일들이다:
- 서버 키 파일
- 클라이언트 키 파일
- 서버 트러스트 파일
- 클라이언트 트러스트 파일
서버 키 파일 만들기
서버 키 파일은 Ikeyman 유틸리티를 사용하여 생성된다. Ikeyman은 <isc_root>/AppServer /bin 디렉토리에 있다. Windows® 시스템에서, 이 파일은 ikeyman.bat이고, 유닉스®/리눅스® 시스템에서는 ikeyman.sh이다.
-
Key Database File > New...를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCServerKeyFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Create > New Self-Signed Certificate...를 선택한다.
- 다음 정보를 입력하여 인증서를 만들고 OK를 클릭한다:
Key Label: ISCIntSec
Common Name: ISCsrv01
Organization: ISC
-
Extract Certificate...를 선택한다.
- 다음 정보를 입력하여 퍼블릭 인증서를 추출하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
-
Key Database File > Close를 선택한다.
클라이언트 키 파일 만들기
클라이언트 키 파일은 Ikeyman 유틸리티를 사용하여 만들어진다.:
-
Key Database File > New...를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientKeyFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Create > New Self-Signed Certificate...를 선택한다.
- 다음 정보를 입력하여 인증서를 만들고 OK를 클릭한다:
Key Label: ISCIntSecClientKey
Common Name: ISCsrv01
Organization: ISC
-
Extract Certificate...를 선택한다.
- 다음 정보를 입력하여 퍼블릭 인증서를 추출하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
-
Key Database File > Close를 선택한다.
서버 트러스트 파일 만들기
서버 트러스트 파일 역시 Ikeyman 유틸리티를 사용하여 생성된다. (이제 그 패턴을 인식했는가?)
-
Key Database File > New를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 새로운 키 파일을 만들고 OK를 클릭한다:
File Name: ISCServerTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 이 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
클라이언트 트러스트 파일 만들기
클라이언트 트러스트 파일도 Ikeyman 유틸리티를 사용하여 만든다:
-
Key Database File > New.를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
2단계. JACL 스크립트 만들기
<isc_root>/AppServer/bin 디렉토리에 addSSLentry.jacl 스크립트를 만들어서 wsadmin 명령어를 사용하여 Integrated Solutions Console을 실행하여 이전 단계의 키를 사용한다. Listing 1의 샘플 스크립트는 새로운 SSL 엔트리를 만든다. 파일 이름과 패스워드는 이 파일에 하드 코딩된다; 굵은 글씨로 된 값을 서정하여 환경에 반영하면 된다. 다음 라인들을 새롭게 생성된 addSSLentry.jacl 스크립트에 복사하고 저장한다. (어떤 라인들이 하나의 라인으로 되어야 하는지를 명시한 네 개의 코멘트를 주목하라.)
Listing 1. 새로운 SSL 엔트리 생성하기
# new SSL entry in the SSL repertoire
# setting the security object
set security_root [$AdminConfig list Security]
# setting the variables for the entry
set ssl_alias "DefaultNode/DefaultSSLSettings"
set ssl_clientAuthentication [list clientAuthentication false]
# this next line should be on ONE line
set ssl_enableCryptoHardwareSupport [list enableCryptoHardwareSupport false]
set ssl_keyFileFormat [list keyFileFormat "JKS"]
# this next code section should be on ONE line
set ssl_keyFileName [list keyFileName
"<isc_root>/AppServer/etc/ISCServerKeyFile.jks"]
set ssl_keyFilePassword [list keyFilePassword "<isc_password>"]
set ssl_securityLevel [list securityLevel "HIGH"]
set ssl_trustFileFormat [list trustFileFormat "JKS"]
# this next code section should be on ONE line
set ssl_trustFileName [list trustFileName
"<isc_root>/AppServer/etc/ISCServerTrustFile.jks"]
set ssl_trustFilePassword [list trustFilePassword "<isc_password>"]
# this next code section (set ssl def) should be on ONE line
set ssl_def [list $ssl_clientAuthentication $ssl_enableCryptoHardwareSupport
$ssl_keyFileFormat $ssl_keyFileName $ssl_keyFilePassword $ssl_securityLevel
$ssl_trustFileFormat $ssl_trustFileName $ssl_trustFilePassword]
# defining the whole SSL object
set ssl_entry [list [list alias $ssl_alias] [list setting $ssl_def] ]
# remove existing dummy SSL entry
set sslList [$AdminConfig list SSLConfig]
$AdminConfig remove [lindex $sslList 0]
# creating the new entry
$AdminConfig create SSLConfig $security_root $ssl_entry repertoire
# setting variables using the new entry
set sslList [$AdminConfig list SSLConfig]
set default_ssl [list [list defaultSSLSettings [lindex $sslList 0]]]
# modifying the security object to use new entry
$AdminConfig modify $security_root $default_ssl
# saving the configuration
$AdminConfig save
|
3단계. wsadmin.properties를 수정하여 정확한 SOAP 포트 반영하기
SOAP에 사용되는 정확한 포트를 가져와야 한다. 이렇게 하려면, <isc root>/AppServer/config/cells/DefaultNode/nodes/DefaultNode 디렉토리에서 serverindex.xml 파일을 연다.
serverName = ISC_Portal을 가진 serverEntry를 찾는다. serverEntry 아래에서, endPointName="SOAP_CONNECTOR_ADDRESS" 아래 지정된 포트 넘버를 찾는다. 이 포트 넘버를 기록한다.
<isc root>/AppServer/properties 디렉토리에 있는 wsadmin.properties 파일을 연다. com.ibm.ws.scripting.port 설정을 여러분이 방금 찾은 포트 넘버로 변경한다.
파일을 저장한다.
4단계. JACL 스크립트에서 wsadmin 명령어 실행하기
명령어 프롬프트를 열고 <isc root>/AppServer/bin 디렉토리를 검색한다. 다음 명령어를 실행한다:
wsadmin.bat/sh -f addSSLentry.jacl -user <userid> -password <password>
|
주: userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드와 동일하다.
5단계. ConfigService.properties와 virtualhosts.xml 파일을 수정한다.
<isc root>/PortalServer/shared/app/config/services/ 디렉토리에 있는 ConfigService.properties 파일을 연다. redirect.login.ssl과redirect.logout.ssl의 값을 false에서 true로 바꾼다.
redirect.login.ssl = true
redirect.logout.ssl = true
|
파일을 저장한다.
다음 라인을 추가하여 <isc_root>/AppServer/config/cells/DefaultNode 디렉토리에 있는 virtualhosts.xml 파일을 연다.
<aliases xmi:id="HostAlias_x" hostname="*" port="8422"/>
|
여기에서 x는 본 시리즈의 다음 숫자이다. (대부분의 경우, 4가 된다.)
6단계. web.xml 파일 수정하기
<isc_root>/AppServer/config/cells/DefaultNode/applications/wps.ear/deployments/wps/wps.war/WEB-INF/ 디렉토리에 있는 web.xml 파일을 연다.
<security-constraint> 엘리먼트를 찾는다. 다음 라인을 수정한다.
<transport-guarantee>NONE</transport-guarantee>
에서
<transport-guarantee>CONFIDENTIAL</transport-guarantee>로 바꾼다.
파일을 저장한다.
7단계. ISC_Portal 중지하기
Integrated Solutions Console 서버가 현재 실행 중이라면, 다음 명령어를 사용하여 서버를 중지한다:
<isc root>/PortalServer/bin/stopISC.bat|sh ISC_Portal <userid> <password>
|
userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드이다.
8단계. soap.client.props 파일 수정하기
<isc root>/AppServer/properties 디렉토리에 있는 soap.client.props 파일을 연다. soap.client.props 파일의 다음 라인들을 수정하여 새로운 SSL 설정을 반영한다:
com.ibm.ssl.keyStore=<isc root>/AppServer/etc/ISCClientKeyFile.jks
com.ibm.ssl.keyStorePassword=<ClientKey.jks Password>
com.ibm.ssl.trustStore=<isc root>/AppServer/etc/ISCClientTrustFile.jks
com.ibm.ssl.trustStorePassword=<ClientTrust.jks Password>
|
환경을 반역하도록 경로와 패스워드를 업데이트 한다.
파일을 저장한다.
9단계. ISC_Portal 시작하기
다음 명령어를 실행하여 변경 사항이 적용되도록 통솔을 시작한다:
<isc root>/PortalServer/bin/startISC.bat/sh ISC_Portal
|
10단계. 변경 사항 테스트
브라우저에서 Integrated Solutions Console을 시작하여 변경 사항을 테스트 한다. 세션은 보연 연결로 리다이렉션 되어야 하고, 브라우저 보안 프롬프트는 인증서 정보와 함께 나타난다. 리다이렉션 될 때, URL은 Integrated Solutions Console 설치 동안 지정된 SSL 포트(기본: 8422)로 업데이트 된다. 또한, Internet Explorer 브라우저의 왼쪽 좌측 코너에 "잠금" 이미지가 있는지를 확인하여 SSL이 실행되는지를 확인할 수 있다. (그림 1)
그림 1. SSL 실행 확인하기
CA 인증서로 5.1 실행하기
이제는 Official/Authorized Certificate를 사용하여 Integrated Solutions Console에 SSL을 실행하는 방법을 설명하겠다. (이 섹션은 자가 서명 인증서 실행 방법과 거의 같다.)
- SSL Server/Client 키와 트러스트 파일을 만든다.
- <isc root>\AppServer\bin 디렉토리에 JACL 스크립트를 만든다.
- wsadmin.properties 파일을 수정하여 정확한 SOAP 포트를 반영한다.
- JACL 스크립트에 wsadmin을 실행한다.
- ConfigService.properties와 virtualhosts.xml 파일을 수정한다.
- web.xml 파일을 수정한다.
- ISC_Portal을 중지한다.
- soap.client.props 파일을 수정한다.
- ISC_Portal을 시작한다.
- 변경 사항을 테스트 한다.
다음 섹션에서는 각 단계를 상세히 설명한다.
1단계. SSL 서버/클라이언트 키와 트러스트 파일 생성하기
네 개의 키 파일들이 있다:
- 서버 키 파일
- 클라이언트 키 파일
- 서버 트러스트 파일
- 클라이언트 트러스트 파일
서버 키 파일 만들기
새로운 키와 인증서 요청을 만들어야 한다. Ikeyman을 시작하고 다음 단계를 따라간다:
- Ikeyman 툴을 시작한다. ikeyman.bat (Windows) 또는 ikeyman.sh (유닉스) 같이 bin 디렉토리의 명령행에서 시작된다.
- 메뉴 바에서 Key Database File > New...."를 선택한다.
- 키 데이터베이스 유형이 "JKS"로 설정되었는지를 확인한다. 이 섹션에서는 다음과 같은 파일 이름을 사용하여 올바른 키 스토어를 나타낸다.
- 파일 이름으로
ISCServerKeyFile.jks
를 입력한다.
- 키 파일을 갖고 있을 디렉토리를 위치로 입력한다. 이 경우: <isc_root>\AppServer\etc이다.
- OK를 클릭한다.
- 패스워드 프롬프트가 나타난다. 패스워드를 입력하고 반복하여 확인한다. 패스워드는 앞으로 파일을 읽고 작성할 때 필요하므로, 기억하도록 한다. 패스워드는 패스워드에 사용되는 다양한 문자로 지정한다.
- OK를 클릭한다
- 메뉴 바에서, Create > New Certificate Request...를 선택한다.
- 이 키를 구분할 키 레이블을 입력한다. 공간을 사용하지 않도록 한다. 이 섹션에 사용된 값은
ISCIntSec
이다.
- 적절한 키 사이즈를 선택한다. 1024는 올바른 기본 값이다.
- 공통 이름:
ISCsrv01
을 입력한다.
- Organization을 입력한다. 예를 들어:
IBM
.
- Organization Unit, Locality, State/Province 필드는 선택이지만, 값을 주는 것이 권장된다:
ITSO
,
Raleigh
,
NC
.
- 국가를 선택한다. 이 경우:
US
.
- 인증서 요청이 저장될 파일 이름은 마지막 필드에 입력되어야 한다. 이 섹션에 사용되는 값은
<isc_root>\AppServer\etc\ISCServerKeyFile.arm
이다.
-
OK를 클릭한다. 인증서 요청 생성을 확인하는 메시지가 리턴된다.
그림 2. 서버 키 파일 생성하기
주: 인증서 요청 필드를 완성하기 전에 여러분이 선택한 CA 문서를 확인한다. 예를 들어, VeriSign Server ID에서는 Common Name (CN)이 완전한 서버 이름을 나타내도록 하고 있다.
인증서 요청 파일(이 샘플에서는 ISCServerKeyFile.arm)의 콘텐트는 인증서가 생성되었음을 보여준다.
Listing 2. Ikeyman에 의해 생성된 인증서 요청
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBmzCCAQQCAQAwXDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk5DMRAwDgYDVQQHEwdSYWxlaWdo
MQwwCgYDVQQKEwNJQk0xDTALBgNVBAsTBElUU08xETAPBgNVBAMTCG1rYTJ2YWxvMIGeMA0GCSqG
SIb3DQEBAQUAA4GMADCBiAKBgHHsF7RWcLXGF6DPY3KnFJTHn0Nmf/Ni2lhURbJkgnSTl2x2vECe
rrQ5qhYI7mXX4v1zL4FSDM9TzMCz8V4P5FXAwjyJRlPODfSxMP9h/kIJWiAx2n1X2FnHiKcVAz17
EE27hVObMTfj47Ww4ydQ7JMQFy1C7pZnHuJL3Ga1qBZLAgMBAAGgADANBgkqhkiG9w0BAQQFAAOB
gQAmzZ+9bsrqLjCw8tsxkUJHG7SMCspv1UCmc447aRubkM717j6nnw0zr9QgCO8bxzvOD6C35Liv
MDPrc5ML+CT9KVHtXnV9mpOKx9+3d1A4YDAdEoQA0cPYXu9n6aDfG69ZIdwjBMlohsy7q8qPlnGd
yqfmhhEbFcn+PlW86bhnjg==
-----END NEW CERTIFICATE REQUEST-----
|
인증서 요청을 만드는 과정에서 인증서가 만들어 진다. 공개/개인 키 쌍이 jks 파일에 존재한다는 것을 의미한다. 인증서 요청은 이 인증서가 CA에 의해서 서명되도록 하고 있다. 인증서 요청은 Key database content > Personal Certificate Requests을 선택함으로써 Ikeyman에 보일 수 있다. (그림 3):
그림 3. 인증서 요청을 만드는 것이 인증서를 만드는 것이다.
주: 인증서 요청을 없애지 말라. 인증서가 CA에 의해 서명된 후에 추가되도록 하려면 키 스토어에 있어야 한다.
물론, CA는 서명 전에 인증서가 요청한 신원을 확인해야 한다. 인증서 요청은 CA에서 제공한 폼(주로 웹 사이트)으로 복사되고 제출된다.
기타 주: 원래의 폼으로 요청을 제출해야 한다. 요청이 텍스트 에디터에서 온다면, 스페이스 같은 여분의 문자들이 라인의 끝에 추가되지 않도록 해야 한다. 요청이 올바르게 제출되지 않으면, 응답이 정확하게 나오지 않는다.
일부 CA는 테스트 인증서를 생성하는 편리한 서비스를 제공한다. (한 달 같은 짧은 기간 동안 유효한 인증서와 테스팅 목적의 인증서). 이 섹션에 사용되는 인증서 요청이 잘 알려진 CA인 Thawte에 제출되면, 응답은 Base64-인코딩 포맷으로 되어 있다.
Listing 3. Thawte의 인증서 요청 응답
-----BEGIN CERTIFICATE-----
MIICgDCCAemgAwIBAgIDLqKsMA0GCSqGSIb3DQEBBAUAMIGHMQswCQYDVQQGEwJa
...
..
.
XmYOnq8HX/fj0il6NQxW48bp3O8=
-----END CERTIFICATE-----
|
이 응답은 플레인 텍스트 파일에 저장되고, 원래의 인증서 요청을 생성했던 키 스토어로 반입된다. (요청과 마찬가지로, CA의 응답은 파일로 정확히 복사된다. 라인의 끝에 어떤 추가 문자도 붙지 않도록 한다. 그렇지 않을 경우 반입 과정에 영향을 미치게 된다.)
- Ikeyman이 관련 키 파일을 열었는지를 확인하고 Key database content > Personal Certificates를 선택한다.
-
Receive를 클릭한다.
- CA에서 응답의 파일 이름을 입력한다.
- 응답은 Base64로 인코딩 될 것이므로, Base64 인코딩 ASCII 데이터는 datatype 드롭-다운 리스트에서 선택된다.
-
OK를 클릭한다.
-
Key Database File > Close를 선택한다.
클라이언트 키 파일 생성하기
클라이언트 키 파일은 Ikeyman 유틸리티를 사용하여 생성된다:
- Create a new jks file by selecting Key Database File > New...."를 선택하여 새로운 jks 파일을 생성한다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientKeyFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 앞으로 파일에 액세스 할 때 필요하므로 패스워드를 기억해 두라.
-
Create > New Self-Signed Certificate...를 선택한다.
- 다음 정보를 입력하여 인증서를 만들고 OK를 클릭한다:
Key Label: ISCIntSecClientKey
Common Name: ISCsrv01
Organization: ISC
-
Extract Certificate...를 선택한다.
- 다음 정보를 입력하여 퍼블릭 인증서를 추출하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
-
Key Database File > Close를 선택한다.
서버 트러스트 파일 생성하기
패턴이 있다.):
-
Key Database File > New."를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCServerTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 나중에 파일에 액세스 할 때 필요하므로 패스워드를 기억해야 한다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서에 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
클라이언트 트러스트 파일 생성하기
클라이언트 트러스트 파일은 Ikeyman 유틸리티를 사용하여 생성된다:
-
Key Database File > New."를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
2단계. JACL 스크립트 만들기
<isc_root>/AppServer/bin 디렉토리에 있는 addSSLentry.jacl 스크립트를 생성하여 wsadmin을 사용하여 Integrated Solutions Console을 실행하여 이전 단계에서 온 키를 사용한다. 다음 샘플 스크립트는 새로운 SSL 엔트리를 만든다. 파일 이름과 패스워드는 이 파일에서 하드 코딩된다; 볼드체로 된 값들을 수정하여 환경에 반영한다. 다음 라인들을 새롭게 생성된 addSSLentry.jacl 스크립트에 복사하고 저장한다. (어떤 라인들이 하나의 라인으로 되어야 하는지를 명시한 네 개의 코멘트를 주목하라.)
코드는 Listing 1과 같다.
3단계. wsadmin.properties 파일을 수정하여 정확한 SOAP 포트를 반영하기
먼저, SOAP에 사용되는 정확한 포트를 가져와야 한다. <isc root>/AppServer/config/cells/DefaultNode/nodes/DefaultNode 디렉토리에서 serverindex.xml 파일을 연다.
serverName = ISC_Portal을 가진 serverEntry를 찾는다. serverEntry 아래에서, endPointName="SOAP_CONNECTOR_ADDRESS" 밑에 지정된 포트 넘버를 찾는다. 이 포트 넘버를 기록한다.
이제, <isc root>/AppServer/properties 디렉토리에서 wsadmin.properties 파일을 연다. com.ibm.ws.scripting.port 설정을 여러분이 방금 찾은 포트 넘버로 바꾼다.
파일을 저장한다.
4단계. JACL 스크립트에서 wsadmin 실행하기
명령 프롬프트를 열고, <isc root>/AppServer/bin 디렉토리를 검색한다. 다음 명령어를 실행한다:
wsadmin.bat/sh -f addSSLentry.jacl -user <userid> -password <password>
|
주: userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드와 같다.
5단계. ConfigService.properties와 virtualhosts.xml 파일 수정하기
<isc root>/PortalServer/shared/app/config/services/ 디렉토리에 있는 ConfigService.properties 파일을 연다. redirect.login.ssl과 redirect.logout.ssl에 대한 값을 false에서 true로 바꾼다.
redirect.login.ssl = true
redirect.logout.ssl = true
|
파일을 저장한다.
다음 라인을 추가하여 <isc_root>/AppServer/config/cells/DefaultNode 디렉토리에 있는 virtualhosts.xml 파일을 연다:
<aliases xmi:id="HostAlias_x" hostname="*" port="8422"/>
여기에서 x는 본 시리즈의 다음 넘버이다. (대부분의 경우 4 이다.)
6단계. web.xml 파일 수정하기
<isc_root>/AppServer/config/cells/DefaultNode/applications/wps.ear/deployments/wps/wps.war/WEB-INF/ 디렉토리에서 web.xml 파일을 연다.
<security-constraint> 엘리먼트를 찾는다. 다음 라인을;
<transport-guarantee>NONE</transport-guarantee>
에서
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
파일을 저장한다.
7단계. ISC_Portal 중지하기
Integrated Solutions Console 서버가 실행 중이라면, 다음 명령어를 실행하여 서버를 중지한다:
<isc root>/PortalServer/bin/stopISC.bat|sh ISC_Portal <userid> <password>.
주: userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드이다.
8단계. soap.client.props 수정하기
<isc root>/AppServer/properties 디렉토리에 있는 soap.client.props 파일을 연다. soap.client.props 파일에 있는 다음 라인들을 수정하여 새로운 SSL 설정을 반영한다:
com.ibm.ssl.keyStore=<isc root>/AppServer/etc/ISCClientKeyFile.jks
com.ibm.ssl.keyStorePassword=<ClientKey.jks Password>
com.ibm.ssl.trustStore=<isc root>/AppServer/etc/ISCClientTrustFile.jks
com.ibm.ssl.trustStorePassword=<ClientTrust.jks Password>
|
경로와 패스워드를 업데이트 하여 환경에 반영한다.
파일을 저장한다.
9단계. ISC_Portal 시작하기
다음 명령어를 실행하여 변경 사항이 반영되도록 Integrated Solutions Console을 시작한다:<isc root>/PortalServer/bin/startISC.bat/sh ISC_Portal.
10단계. 변경 사항 테스트 하기
브라우저에서 Integrated Solutions Console을 시작하여 변경 사항을 테스트 한다. 세션은 보안 연결로 리다이렉션 되고, 브라우저 보안 프롬프트에는 인증서 정보가 나타난다. 리다이렉션 될 때, URL은 Integrated Solutions Console 설치 동안 지정된 SSL 포트(기본: 8422)로 업데이트 된다. 또한 IE 브라우저의 좌측 하단 코너에 "잠금" 이미지가 있는지를 확인함으로써 SSL이 실행되는지를 확인할 수 있다. (그림 1).
더미 인증서로 6.0.1 실행하기
다음은 더미 인증서를 사용하여 ISC 6.0.1에 SSL을 실행하는 과정이다.
Integrated Solutions Console에 포함된 더미 인증서는 <isc_root>/AppServer/profiles/Default/etc 디렉토리에 있다. key/trust 파일들은 다음과 같다:
- DummyClientKeyFile.jks
- DummyClientTrustFile.jks
- DummyServerKeyFile.jks
- DummyServerTrustFile.jks
다음 단계를 따른다:
- 호스트 앨리어스 포트로 virtualhosts.xml 파일을 편집한다.
- 리다이렉트 로그인/로그아웃 매개변수용 값으로
ConfigService.properties 파일을 수정한다.
- NONE으로 설정된 보안 제약 조건으로 web.xml 파일을 편집한다.
- 관련 패스워드를 사용하여 wpconfig.properties 파일을 업데이트 한다.
-
WPSconfig 명령어를 실행한다.
- wpconfig.properties 파일에서 패스워드를 제거한다.
- ISC_Portal을 재시작 한다.
다시 말해서, Version 5.1에서 더미 인증서를 실행하는 과정과 같다. 다음 섹션에서는 위 단계를 상세히 설명하도록 하겠다.
1단계. virtualhosts.xml 파일 편집하기
<isc_root>/AppServer/config/cells/DefaultNode 디렉토리에 있는 virtualhosts.xml 파일을 연다. default_host라는 이름의 가상 호스트용 </host:Virtualhost> 엘리먼트 앞에 다음 엘리먼트를 추가한다. 이 엘리먼트를 앨리어스 리스트에 추가한다:
<aliases xmi:id= " HostAlias_x" hostname="*" port="alias_port"/>
|
여기에서, x는 HostAlias 시퀀스의 다음 넘버이고, alias_port는 Integrated Solutions Console 설치 동안 -W generalConfig.httpsPort="port"에 의해 지정된 값이다. (기본은 8422이다.)
파일을 저장한다.
2단계. ConfigService.properties 파일 편집
<isc_root>/PortalServer/shared/app/config/services 디렉토리에 있는 ConfigService.properties 파일을 연다.
다음 매개변수를 true로 설정한다:
redirect.login.ssl=true
redirect.logout.ssl=true
|
https 포트가 올바르게 설정되었는지 확인한다:
host.port.https=alias_port
|
여기에서, alias_port는 가상 호스트 앨리어스에 사용되는 포트 넘버이다.
파일을 저장한다.
3단계. web.xml 파일 편집하기
<isc_root>/AppServer/profiles/default/config/cells/DefaultNode/applications/wps.ear/deployment/wps/wps.war/WEB-INF 디렉토리에 있는 web.xml 파일을 연다.
<security-constraint> 엘리먼트를 찾는다.
<transport-guarantee>NONE</transport-guarantee>
를
<transport-guarantee>CONFIDENTIAL</transport-guarantee>로 대체한다.
파일을 저장한다.
4단계. wpconfig.properties 파일 편집하기
<isc_root>/PortalServer/config 디렉토리에 있는 wpconfig.properties 파일을 연다.
올바른 패스워드로 다음 매개변수들을 업데이트 한다:
- WasPassword
- PortalAdminPwd
- DbPassword (db2admin이 기본이다.)
- WmmDbPassword (db2admin이 기본이다.)
- LTPAPassword (dbonly 보안을 사용하고 있다면 이것을 설정한다.)
- LDAPAdminPwd (LDAP를 사용하고 있다면 이것을 설정한다.)
- LDAPBindPassword (LDAP를 사용하고 있다면 이것을 설정한다.)
- WmmSystemIdPassword (WMM을 사용하고 있다면 이것을 설정한다.)
파일을 저장한다.
5단계. WPSconfig 명령어 실행하기
<isc_root>/PortalServer/config 디렉토리에 있는 WPSconfig.bat 스크립트를 실행한다:
WPSconfig.bat/.sh init action-deploy-setupisc-ssl
주: 이 명령어는 현재 버전의 로그인 포틀릿을 보안 버전의 로그인 포틀릿으로 대체한다.
6단계. 패스워드 제거하기
4 단계에서 wpconfig.properties에 추가했던 패스워드를 제거한다. (보안 이유)
파일을 저장한다.
7단계. ISC_Portal 재시작
Integrated Solutions Console 서버가 실행 중이라면, 서버를 중지한다:
<isc_root>/PortalServer/bin/stopISC.bat|.sh ISC_Portal <userid> <password>
중지된 후에, ISC_Portal을 시작한다:
<isc_root>/PortalServer/bin/startISC.bat|.sh ISC_Portal
자가 서명 인증서로 6.0.1 실행하기
이 섹션에서는 자가 서명 인증서를 사용하여 Integrated Solutions Console에 SSL을 실행하는 단계를 설명한다:
- 네 개의 SSL key/trust 파일을 만든다.
- <isc root>\AppServer\bin에 JACL 스크립트를 만든다.
- wsadmin.properties 파일을 수정하여 정확한 SOAP 포트를 반영한다.
- JACL 스크립트에 wsadmin을 실행한다.
- ConfigService.properties 파일을 수정한다.
- web.xml 파일을 수정한다.
- ISC_Portal을 중지한다.
- soap.client.props 파일을 수정한다.
- ISC_Portal을 시작한다.
- 변경 사항을 테스트 한다.
다음 섹션에서는 각 단계를 자세히 설명하도록 하겠다.
1단계. 자가 서명 인증서를 사용하여 네 개의 SSL 키 파일 만들기
네 개의 키 파일은 다음과 같다:
- 서버 키 파일
- 클라이언트 키 파일
- 서버 트러스트 파일
- 클라이언트 트러스트 파일
서버 키 파일 생성하기
서버 키 파일은 Ikeyman 유틸리티를 사용하여 생성된다. Ikeyman은 <isc_root>/AppServer /bin 디렉토리에 있다. Windows 시스템에서, 이 파일은 ikeyman.bat이고, 유닉스/리눅스 시스템에서는 ikeyman.sh이다.
-
Key Database File > New...."를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCServerKeyFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Create > New Self-Signed Certificate...를 선택한다.
- 다음 정보를 입력하여 인증서를 만들고 OK를 클릭한다:
Key Label: ISCIntSec
Common Name: ISCsrv01
Organization: ISC
-
Extract Certificate...를 선택한다.
- 다음 정보를 입력하여 퍼블릭 인증서를 추출하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
-
Key Database File > Close를 선택한다.
클라이언트 키 파일 만들기
클라이언트 키 파일 역시 Ikeyman 유틸리티를 사용하여 생성된다:
-
Key Database File > New...."를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientKeyFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Create > New Self-Signed Certificate...를 선택한다.
- 다음 정보를 입력하여 인증서를 생성하고 OK를 클릭한다:
Key Label: ISCIntSecClientKey
Common Name: ISCsrv01
Organization: ISC
-
Extract Certificate...를 선택한다.
- 다음 정보를 입력하여 퍼블릭 인증서를 추출하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
-
Key Database File > Close를 선택한다.
서버 트러스트 파일 생성하기
서버 트러스트 파일 역시 Ikeyman 유틸리티를 사용하여 생성된다. (패턴은 같다.):
-
Key Database File > New."를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCServerTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
클라이언트 트러스트 파일 생성하기
클라이언트 트러스트 파일도 Ikeyman을 사용하여 생성된다:
-
Key Database File > New."를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
2단계. JACL 스크립트 생성하기
<isc_root>/AppServer/bin 디렉토리에 있는 addSSLentry.jacl 스크립트를 생성하여 wsadmin을 사용하여 Integrated Solutions Console을 실행하여 이전 단계에서 온 키를 사용한다. Listing 1의 샘플 스크립트는 새로운 SSL 엔트리를 만든다. 파일 이름과 패스워드는 이 파일에서 하드 코딩되었다; 볼드체로 된 값을 수정하여 환경에 반영해야 한다. (어떤 라인들이 하나의 라인으로 되어야 하는지를 명시한 네 개의 코멘트를 주목하라.)
3단계. wsadmin.properties 파일을 수정하여 정확한 SOAP 포트 반영하기
SOAP에 사용되는 정확한 포트를 가져와야 한다. <isc root>/AppServer/profiles/default/config/cells/DefaultNode/nodes/DefaultNode 디렉토리에 있는 serverindex.xml 파일을 연다.
serverName = ISC_Portal을 가진 serverEntry를 찾는다. serverEntry 아래에서, endPointName="SOAP_CONNECTOR_ADDRESS" 밑에 지정된 포트 넘버를 찾는다. 이 포트 넘버를 기록한다.
<isc root>/AppServer/profiles/default/properties 디렉토리에 있는 wsadmin.properties 파일을 연다. com.ibm.ws.scripting.port 설정을 여러분이 찾은 포트 넘버로 변경한다.
파일을 저장한다.
4단계. JACL 스크립트에서 wsadmin 실행하기
명령어 프롬프트를 열고, <isc root>/AppServer/bin 디렉토리를 검색한다. 다음 명령을 실행한다:
wsadmin.bat/sh -f addSSLentry.jacl -user <userid> -password <password>
|
주: userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드와 같다.
5단계. ConfigService.properties 파일 수정하기
<isc root>/PortalServer/shared/app/config/services/ 디렉토리에 있는 ConfigService.properties 파일을 연다. redirect.login.ssl과 redirect.logout.ssl에 대한 값을 false에서 true로 바꾼다:
redirect.login.ssl = true
redirect.logout.ssl = true
|
파일을 저장한다.
6단계. web.xml 파일 수정하기
<isc_root>/AppServer/profiles/default/config/cells/DefaultNode/applications/wps.ear/deployments/wps/wps.war/WEB-INF/ 디렉토리에 있는 web.xml 파일을 연다.
<security-constraint> 엘리먼트를 찾는다:
<transport-guarantee>NONE</transport-guarantee>
라인을
<transport-guarantee>CONFIDENTIAL</transport-guarantee>로 변경한다.
파일을 저장한다.
7단계. ISC_Portal 중지하기
Integrated Solutions Console 서버가 실행 중이라면, 다음 명령어를 실행하여 서버를 중지한다:<isc root>/PortalServer/bin/stopISC.bat|sh ISC_Portal <userid> <password>. userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드이다.
8단계. soap.client.props 파일 수정하기
<isc root>/AppServer/profiles/default/properties 디렉토리에 있는 soap.client.props 파일을 연다. soap.client.props 파일에 있는 다음 라인을 수정하여 새로운 SSL 설정을 반영한다:
com.ibm.ssl.keyStore=<isc root>/AppServer/etc/ISCClientKeyFile.jks
com.ibm.ssl.keyStorePassword=<ClientKey.jks Password>
com.ibm.ssl.trustStore=<isc root>/AppServer/etc/ISCClientTrustFile.jks
com.ibm.ssl.trustStorePassword=<ClientTrust.jks Password>
|
경로와 패스워드가 업데이트 되어 환경에 반영되도록 한다.
파일을 저장한다.
9단계. ISC_Portal 시작하기
다음 명령어를 실행하여 변경 사항이 반영되도록 Integrated Solutions Console을 시작한다:<isc root>/PortalServer/bin/startISC.bat/sh ISC_Portal.
10단계. 변경 사항 테스트
브라우저에서 Integrated Solutions Console을 시작하여 변경 사항을 테스트 한다. 세션은 보안 연결로 리다이렉션 되고, 브라우저 보안 프롬프트에는 인증서 정보가 나타난다. 리다이렉션 될 때, URL은 Integrated Solutions Console 설치 동안 지정된 SSL 포트(기본: 8422)로 업데이트 된다. 또한 IE 브라우저의 좌측 하단 코너에 "잠금" 이미지가 있는지를 확인함으로써 SSL이 실행되는지를 확인할 수 있다. (그림 1).
CA 인증서로 6.0.1 실행하기
다음은 Official/Authorized Certificate를 사용하여 ISC에 SSL을 실행하는 단계이다:
- SSL Server/Client 키와 트러스트 파일을 만든다.
- <isc root>\AppServer\bin 디렉토리에 JACL 스크립트를 만든다.
- wsadmin.properties 파일을 수정하여 정확한 SOAP 포트를 반영한다.
- JACL 스크립트에 wsadmin을 실행한다.
- ConfigService.properties 파일을 수정한다.
- web.xml 파일을 수정한다.
- ISC_Portal을 중지한다.
- soap.client.props 파일을 수정한다.
- ISC_Portal을 시작한다.
- 변경 사항을 테스트 한다.
다음 섹션에서는 위 단계를 상세히 설명한다.
1단계. SSL 서버/클라이언트 키와 트러스트 파일 생성하기
이제 마지막이다. 네 개의 키 파일은 다음과 같다:
- 서버 키 파일
- 클라이언트 키 파일
- 서버 트러스트 파일
- 클라이언트 트러스트 파일
서버 키 파일 만들기
새로운 키와 인증서 요청을 만들어야 한다. Ikeyman을 시작하고 다음 단계를 수행한다:
- Ikeyman 툴을 시작한다. bin 디렉토리에 있는 명령행에서 시작되는데, Windows 시스템에서, 이 파일은 ikeyman.bat이고, 유닉스/리눅스 시스템에서는 ikeyman.sh이다.
- 메뉴 바에서, Key Database File > New...를 선택한다.
- 키 데이터베이스 유형이 "JKS"로 설정되었는지 확인한다. 이 섹션은 다음의 파일 이름을 사용하여 올바른 키 스토어를 나타낸다.
- 파일 이름으로
ISCServerKeyFile.jks
를 입력한다.
- 키 파일을 보유하고 있는 디렉토리를 위치로 입력한다. 이 경우, <isc_root>\AppServer\etc이다.
-
OK를 클릭한다.
- 패스워드 프롬프트가 나타난다. 패스워드를 입력한 후 한번 더 확인한다. 이 패스워드는 앞으로 파일을 읽고 쓸 때에 필요하므로, 외워야 한다. 패스워드는 다양한 문자를 사용할 수 있다.
-
OK를 클릭한다.
- 메뉴 바에서, Create > New Certificate Request...를 선택한다.
- 이 키를 구분 할 키 레이블을 입력한다. 스페이스를 사용하지 않는 것이 좋다. 이 섹션에 사용되는 값은
ISCIntSec
이다.
- 올바른 키 사이즈를 선택한다. 1024가 기본 값이다.
- 이름을 입력한다:
ISCsrv01
.
- Organization을 입력한다. 예:
IBM
.
- Organization Unit, Locality, State/Province 필드는 선택이지만, 값을 주는 것이 좋다:
ITSO
,
Raleigh
,
NC
.
- 해당 국가명을 선택한다. 이 경우:
US
이다.
- 인증서 요청이 저장되는 파일 이름은 마지막 필드에 입력되어야 한다. 이 섹션에 사용되는 값은
<isc_root>\AppServer\etc\ISCServerKeyFile.arm
이다.
-
OK를 클릭한다. 인증서 요청 생성을 확인하는 메시지가 리턴되어야 한다. (그림 2.)
주: 인증서 요청 필드를 완성하기 전에 여러분이 선택한 CA 문서를 확인한다. 예를 들어, VeriSign Server ID에서는 Common Name (CN)이 완전한 서버 이름을 나타내도록 하고 있다.
인증서 요청 파일(이 샘플에서는
ISCServerKeyFile.arm
)의 콘텐트는 인증서가 생성되었음을 보여준다. Listing 2는 인증서 요청 모습이다.
Listing 2. ikeyman에 의해 생성된 인증서 요청
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBmzCCAQQCAQAwXDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk5DMRAwDgYDVQQHEwdSYWxlaWdo
MQwwCgYDVQQKEwNJQk0xDTALBgNVBAsTBElUU08xETAPBgNVBAMTCG1rYTJ2YWxvMIGeMA0GCSqG
SIb3DQEBAQUAA4GMADCBiAKBgHHsF7RWcLXGF6DPY3KnFJTHn0Nmf/Ni2lhURbJkgnSTl2x2vECe
rrQ5qhYI7mXX4v1zL4FSDM9TzMCz8V4P5FXAwjyJRlPODfSxMP9h/kIJWiAx2n1X2FnHiKcVAz17
EE27hVObMTfj47Ww4ydQ7JMQFy1C7pZnHuJL3Ga1qBZLAgMBAAGgADANBgkqhkiG9w0BAQQFAAOB
gQAmzZ+9bsrqLjCw8tsxkUJHG7SMCspv1UCmc447aRubkM717j6nnw0zr9QgCO8bxzvOD6C35Liv
MDPrc5ML+CT9KVHtXnV9mpOKx9+3d1A4YDAdEoQA0cPYXu9n6aDfG69ZIdwjBMlohsy7q8qPlnGd
yqfmhhEbFcn+PlW86bhnjg==
-----END NEW CERTIFICATE REQUEST-----
|
인증서 요청을 만드는 과정에서 인증서가 만들어 진다. 공개/개인 키 쌍이 jks 파일에 존재한다는 것을 의미한다. 인증서 요청은 이 인증서가 CA에 의해서 서명되도록 하고 있다. 인증서 요청은 Key database content > Personal Certificate Requests을 선택함으로써 Ikeyman에 보일 수 있다. (그림 3.)
주: 인증서 요청을 없애지 말라. 인증서가 CA에 의해 서명된 후에 추가되도록 하려면 키 스토어에 있어야 한다.
물론, CA는 서명 전에 인증서가 요청한 신원을 확인해야 한다. 인증서 요청은 CA에서 제공한 폼(주로 웹 사이트)으로 복사되고 제출된다.
기타 주: 원래의 폼으로 요청을 제출해야 한다. 요청이 텍스트 에디터에서 온다면, 스페이스 같은 여분의 문자들이 라인의 끝에 추가되지 않도록 해야 한다. 요청이 올바르게 제출되지 않으면, 응답이 정확하게 나오지 않는다.
일부 CA는 테스트 인증서를 생성하는 편리한 서비스를 제공한다. (한 달 같은 짧은 기간 동안 유효한 인증서와 테스팅 목적의 인증서). 이 섹션에 사용되는 인증서 요청이 잘 알려진 CA인 Thawte에 제출되면, 응답은 Base64-인코딩 포맷으로 되어 있다. (Listing 3)
Listing 3. Thawte의 인증서 요청에 대한 응답
-----BEGIN CERTIFICATE-----
MIICgDCCAemgAwIBAgIDLqKsMA0GCSqGSIb3DQEBBAUAMIGHMQswCQYDVQQGEwJa
...
..
.
XmYOnq8HX/fj0il6NQxW48bp3O8=
-----END CERTIFICATE-----
|
이 응답은 플레인 텍스트 파일에 저장되고, 원래의 인증서 요청을 생성했던 키 스토어로 반입된다. (요청과 마찬가지로, CA의 응답은 파일로 정확히 복사된다. 라인의 끝에 어떤 추가 문자도 붙지 않도록 한다. 그렇지 않을 경우 반입 과정에 영향을 미치게 된다.)
- Ikeyman이 관련 키 파일을 열었는지를 확인하고 Key database content > Personal Certificates를 선택한다.
-
Receive를 클릭한다.
- CA에서 응답의 파일 이름을 입력한다.
- 응답은 Base64로 인코딩 되므로, Base64-인코딩 ASCII 데이터가 datatype 드롭-다운 리스트에서 선택되도록 한다.
-
OK를 클릭한다.
-
Database File > Close키를 선택한다.
클라이언트 키 파일 생성하기
클라이언트 키 파일도 Ikeyman 유틸리티를 사용하여 생성된다:
-
Key Database File > New...를 선택하여 새로운 jks 파일을 생성한다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientKeyFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Create > New Self-Signed Certificate...를 선택한다.
- 다음 정보를 입력하여 인증서를 만들고 OK를 클릭한다:
Key Label: ISCIntSecClientKey
Common Name: ISCsrv01
Organization: ISC
-
Extract Certificate...를 선택한다.
- 다음 정보를 입력하여 퍼블릭 인증서를 추출하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
-
Key Database File > Close를 선택한다.
서버 트러스트 파일 생성하기
서버 트러스트 파일도 Ikeyman 유틸리티를 사용하여 생성된다.
-
Key Database File > New.를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 생성하고 OK를 클릭한다:
File Name: ISCServerTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK. Enter a label for the certificate:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
클라이언트 트러스트 파일 만들기
클라이언트 트러스트 파일은 Ikeyman 유틸리티를 사용하여 생성된다:
-
Key Database File > New.를 선택하여 새로운 jks 파일을 만든다.
- 다음 정보를 입력하여 키 파일을 만들고 OK를 클릭한다:
File Name: ISCClientTrustFile.jks
Location Name: <isc root>\AppServer\etc
- 키 파일에 대한 패스워드를 입력하고 OK를 클릭한다. 주: 이 패스워드는 앞으로 이 파일에 액세스 할 때 필요하다.
-
Add...를 선택한다.
- 다음 정보를 입력하여 클라이언트의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCClientKeyFile.arm
Location: <isc root>\AppServer\etc
- 클라이언트 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSecClientKey CA
.
-
Add...를 선택한다.
- 다음 정보를 입력하여 서버의 퍼블릭 인증서를 추가하고 OK를 클릭한다:
Certificate File Name: ISCServerKeyFile.arm
Location: <isc root>\AppServer\etc
- 서버 키 퍼블릭 인증서용 레이블을 입력하고 OK를 클릭한다. 인증서용 레이블을 입력한다:
ISCIntSec CA
.
-
Key Database File > Close를 선택한다.
2단계. JACL 스크립트 만들기
<isc_root>/AppServer/bin 디렉토리에 있는 addSSLentry.jacl 스크립트를 생성하여 wsadmin을 사용하여 Integrated Solutions Console을 실행하여 이전 단계에서 온 키를 사용한다. 다음 샘플 스크립트(Listing 1)는 새로운 SSL 엔트리를 만든다. 파일 이름과 패스워드는 이 파일에서 하드 코딩된다. 볼드체로 된 값들을 수정하여 환경에 반영한다. 다음 라인들을 새롭게 생성된 addSSLentry.jacl 스크립트에 복사하고 저장한다. (어떤 라인들이 하나의 라인으로 되어야 하는지를 명시한 네 개의 코멘트를 주목하라.)
3단계. wsadmin.properties 파일을 수정하여 정확한 SOAP 포트 반영하기
SOAP에 사용되는 정확한 포트를 가져와야 한다. <isc root>/AppServer/profiles/default/config/cells/DefaultNode/nodes/DefaultNode 디렉토리에 있는 serverindex.xml 파일을 연다.
serverName = ISC_Portal을 가진 serverEntry를 찾는다. serverEntry 아래에서, endPointName="SOAP_CONNECTOR_ADDRESS" 밑에 지정된 포트 넘버를 찾는다. 이 포트 넘버를 기록한다.
<isc root>/AppServer/profiles/default/properties 디렉토리에 있는 wsadmin.properties 파일을 연다. com.ibm.ws.scripting.port 설정을 여러분이 찾은 포트 넘버로 변경한다.
파일을 저장한다.
4단계. JACL 스크립트에 wsadmin 실행하기
명령어 프롬프트를 열고 <isc root>/AppServer/bin 디렉토리를 검색한다. 다음 명령어를 실행한다:
wsadmin.bat/sh -f addSSLentry.jacl -user <userid> -password <password>
|
주: userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드와 같다.
5단계. ConfigService.properties 수정하기
<isc root>/PortalServer/shared/app/config/services/ 디렉토리에 있는 ConfigService.properties 파일을 연다. redirect.login.ssl과 redirect.logout.ssl에 대한 값을 false에서 true로 바꾼다:
redirect.login.ssl = true
redirect.logout.ssl = true
|
파일을 저장한다.
6단계. web.xml 파일 수정하기
<isc_root>/AppServer/profiles/default/config/cells/DefaultNode/applications/wps.ear/deployments/wps/wps.war/WEB-INF/ 디렉토리에 있는 web.xml 파일을 연다.
<security-constraint> 엘리먼트를 찾는다:
<transport-guarantee>NONE</transport-guarantee>
를
<transport-guarantee>CONFIDENTIAL</transport-guarantee>로 바꾼다.
파일을 저장한다.
7단계. ISC_Portal 중지하기
Integrated Solutions Console 서버가 실행 중이라면, 다음 명령어를 실행하여 서버를 중지한다:<isc root>/PortalServer/bin/stopISC.bat|sh ISC_Portal <userid> <password>. userid와 패스워드는 Integrated Solutions Console Administrator의 userid와 패스워드이다.
8단계. soap.client.props 파일 수정하기
<isc root>/AppServer/profiles/default/properties 디렉토리에 있는 soap.client.props 파일을 연다. soap.client.props 파일에 있는 다음 라인을 수정하여 새로운 SSL 설정을 반영한다:
com.ibm.ssl.keyStore=<isc root>/AppServer/etc/ISCClientKeyFile.jks
com.ibm.ssl.keyStorePassword=<ClientKey.jks Password>
com.ibm.ssl.trustStore=<isc root>/AppServer/etc/ISCClientTrustFile.jks
com.ibm.ssl.trustStorePassword=<ClientTrust.jks Password>
|
경로와 패스워드를 업데이트 하여 환경에 반영한다.
파일을 저장한다.
9단계. ISC_Portal 시작하기
다음 명령어를 실행하여 변경 사항이 반영되도록 Integrated Solutions Console을 시작한다:<isc root>/PortalServer/bin/startISC.bat|sh ISC_Portal.
10단계. 변경 사항 테스트
브라우저에서 Integrated Solutions Console을 시작하여 변경 사항을 테스트 한다. 세션은 보안 연결로 리다이렉션 되고, 브라우저 보안 프롬프트에는 인증서 정보가 나타난다. 리다이렉션 될 때, URL은 Integrated Solutions Console 설치 동안 지정된 SSL 포트(기본: 8422)로 업데이트 된다. 또한 IE 브라우저의 좌측 하단 코너에 "잠금" 이미지가 있는지를 확인함으로써 SSL이 실행되는지를 확인할 수 있다. (그림 1).
SSL의 문제점
Integrated Solutions Console은 고객들이 특정 IBM 제품들이 아닌 솔루션을 관리할 수 있도록 콘솔 모듈을 호스팅 및 통합할 수 있는 일반적인 웹 기반 관리 콘솔 프레임웍을 제공한다. 이 프레임웍에는 포틀릿 컨테이너, 자바 관리 애플리케이션, Eclipse Help 모듈이 포함되어 있다.
SSL은 기밀성과 암호화를 제공하도록 설정될 수 있다. 클라이언트 브라우저와 Integrated Solutions Console 서버 간 통신은 SSL로 보호된다. 암호화는 Integrated Solutions Console이 폼 기반 인증을 사용하기 때문에 중요하다. 폼 기반 인증은 로그인 동안 전송되는 사용자 ID와 패스워드를 암호화 하지 않기 때문이다. 콘솔 모듈이 보안 연결을 통해 백엔드 리소스로 액세스를 필요로 한다면, 포틀릿은 SSL을 사용할 수 있다.
왜 이것이 문제가 되는가? 오픈 통신 채널을 통해 안전하게(효과적으로) 데이터를 전송하는 것은 현대적인 IT 시스템을 관리하는데 있어 필 |