Sun Java System Calendar Server 6 2005Q4 관리 설명서

8장 SSL 구성

Calendar Server는 달력 클라이언트 최종 사용자와 Calendar Server 간의 데이터 암호화를 위해 SSL(Secure Sockets Layer) 프로토콜을 지원합니다. SSL을 지원하기 위해 Calendar Server는 Netscape Security Services(NSS)의 SSL 라이브러리를 사용하며, Sun Java System Messaging Server에서도 이 라이브러리를 사용합니다.

Calendar Server 로그인 및 비밀번호만 암호화하거나 전체 달력 세션을 암호화하도록 ics.conf 파일에서 Calendar Server를 구성할 수 있습니다.

이 장에서는 SSL을 구성하는 데 필요한 세 가지 단계와 문제 해결 방법을 소개합니다.


주 –

Calendar Server는 클라이언트 기반 SSL 인증을 지원하지 않습니다.


Calendar Server에 대해 SSL 구성

Procedure인증서 데이터베이스 만들기

Calendar Server를 위해 SSL을 구현하려면 인증서 데이터베이스가 필요합니다. 인증서 데이터베이스는 인증 기관(CA) 및 Calendar Server용 인증서를 정의해야 합니다. 이 절에서는 개념 및 태스크 정보를 제공합니다.

시작하기 전에

인증서 데이터베이스를 만들기 전에 다음에 익숙해져야 합니다.

단계
  1. 수퍼유저(root)로 로그인합니다.

  2. certutil의 인증서 데이터베이스 비밀번호를 /etc/opt/SUNWics5/config/sslPasswordFile에 지정합니다. 예를 들면 다음과 같습니다.


    # echo "password" 
          /etc/opt/SUNWics5/config/sslPasswordFile

    여기서 password는 고유 비밀번호입니다.

  3. 인증서 데이터베이스 alias 디렉토리를 만듭니다. 예를 들면 다음과 같습니다.


    # cd /var/opt/SUNWics5
     # mkdir alias
  4. bin 디렉토리로 이동하고 인증서 데이터베이스(cert8.db)와 키 데이터베이스(key3.db)를 만듭니다. 예를 들면 다음과 같습니다.


    # cd /opt/SUNWics5/cal/bin
     # ./certutil -N -d /var/opt/SUNWics5/alias
                     -f /etc/opt/SUNWics5/config/sslPasswordFile

    주 –

    certutil 유틸리티를 실행해야 하는 경우에는 항상 다음 예를 정확하게 따르거나 certutil 도움말 페이지를 참조하여 구문을 이해해야 합니다.

    예를 들어, 이 경우에는 -d //file 정보를 함께 지정하지 않고는 -N 옵션과 함께 유틸리티를 실행하지 마십시오.


  5. 자체 서명된 기본 루트 인증 기관 인증서를 생성합니다. 예를 들면 다음과 같습니다.


    # ./certutil -S -n SampleRootCA -x -t "CTu,CTu,CTu"
     -s "CN=My Sample Root CA, O=sesta.com" -m 25000
     -o /var/opt/SUNWics5/alias/SampleRootCA.crt
     -d /var/opt/SUNWics5/alias
     -f /etc/opt/SUNWics5/config/sslPasswordFile -z
     /etc/passwd
  6. 호스트를 위한 인증서를 생성합니다. 예를 들면 다음과 같습니다.


    # ./certutil -S -n SampleSSLServerCert -c SampleRootCA 
     -t "u,u,u"
     -s "CN=hostname.sesta.com, O=sesta.com" -m 25001
     -o /var/opt/SUNWics5/alias/SampleSSLServer.crt
     -d /var/opt/SUNWics5/alias 
     -f /etc/opt/SUNWics5/config/sslPasswordFile
     -z /etc/passwd

    여기서 hostname.sesta.com은 서버 호스트 이름입니다.

  7. 인증서를 검증합니다. 예를 들면 다음과 같습니다.


    # ./certutil -V -u V -n SampleRootCA  
        -d /var/opt/SUNWics5/alias
     # ./certutil -V -u V -n SampleSSLServerCert 
       -d /var/opt/SUNWics5/alias
  8. 인증서를 나열합니다. 예를 들면 다음과 같습니다.


    # ./certutil -L -d /var/opt/SUNWics5/alias
     # ./certutil -L -n SampleSSLServerCert 
       -d /var/opt/SUNWics5/alias
  9. modutil을 통해 사용 가능한 보안 모듈을 나열합니다(secmod.db). 예를 들면 다음과 같습니다.


    # ./modutil -list -dbdir /var/opt/SUNWics5/alias
  10. alias 파일의 소유자를 icsusericsgroup(또는 Calendar Server를 실행할 사용자 및 그룹 아이디)으로 변경합니다. 예를 들면 다음과 같습니다.


    # find /var/opt/SUNWics5/alias -exec chown icsuser {};
     # find /var/opt/SUNWics5/alias -exec chgrp icsgroup {};

Procedure루트 인증 기관에 인증서 요청 및 가져오기

다음 단계에서는 인증서 요청을 생성하고 이를 PKI(Public Key Infrastructure)웹 사이트에 제출하고 나서 해당 인증서를 가져오는 방법을 설명합니다.

단계
  1. 수퍼유저(root)로 로그인합니다.

  2. bin 디렉토리로 이동합니다.


    # cd /opt/SUNWics5/cal/bin
  3. certutil을 사용하여 인증 기관이나 PKI(Public Key Infrastructure) 웹 사이트를 기반으로 인증서 요청을 만듭니다. 예를 들면 다음과 같습니다.


    # ./certutil -R -s "CN=hostname.sesta.com, 
    OU=hostname/ SSL Web Server, O=Sesta, 
    C=US" -p "408-555-1234" -o hostnameCert.req 
    -g 1024  -d /var/opt/SUNWics5/alias 
    -f /etc/opt/SUNWics5/config/sslPasswordFile  -z /etc/passwd -a

    여기서 “hostname.sesta.com”은 호스트 이름입니다.

  4. 인증 기관이나 PKI(Public Key Infrastructure) 웹 사이트에 SSL 웹 서버에 대한 테스트 인증서를 요청합니다. hostnameCert.req 파일의 내용을 복사하여 인증서 요청에 붙입니다.

    인증서가 서명되어 찾아갈 수 있게 되면 관리자에게 알립니다.

  5. 인증 기관 인증서 체인 및 SSL 서버 인증을 텍스트 파일로 복사합니다.

  6. CA 인증서 체인을 인증서 데이터베이스로 가져와서 인증 체인을 설정합니다. 예를 들면 다음과 같습니다.


    # ./certutil -A -n "GTE CyberTrust Root"
        -t "TCu,TCu,TCuw" 
        -d /var/opt/SUNWics5/alias 
        -a 
        -i /export/wspace/Certificates/CA_Certificate_1.txt
        -f /etc/opt/SUNWics5/config/sslPasswordFile
    # ./certutil -A -n "Sesta TEST Root CA" 
        -t "TCu,TCu,TCuw" 
        -d /var/opt/SUNWics5/alias 
        -a 
        -i /export/wspace/Certificates/CA_Certificate_2.txt
        -f /etc/opt/SUNWics5/config/sslPasswordFile
  7. 서명된 SSL 서버 인증서를 가져옵니다.


    # ./certutil -A -n "hostname SSL Server Test Cert"
        -t "u,u,u" -d /var/opt/SUNWics5/alias 
        -a 
        -i /export/wspace/Certificates/SSL_Server_Certificate.txt
        -f /etc/opt/SUNWics5/config/sslPasswordFile
  8. 인증서 데이터베이스의 인증서를 나열합니다.


    # ./certutil -L -d /var/opt/SUNWics5/alias
  9. ics.conf 파일의 SSL Server 별명이 서명된 SSL 서버 인증서가 되게 구성합니다. 예: “hostname SSL Server Test Cert”.

    ics.conf 파일에 있는 service.http.calendarhostnameservice.http.ssl.sourceurl 매개 변수의 호스트 이름이 SSL 인증서의 호스트 이름과 일치해야 합니다(시스템에 여러 개의 별명이 있는 경우). 예를 들면 다음과 같습니다. calendar.sesta.com

Procedureics.conf 파일의 SSL 매개 변수 구성

Calendar Server에 SSL을 구현하려면 ics.conf 파일에 특정 매개 변수를 설정해야 합니다. 다음 표에 나열된 매개 변수 중에서 ics.conf 파일에 없는 변수가 있는 경우에는 파일에 해당 변수를 추가하고 값을 지정합니다. ics.conf는 시스템을 시작할 때(start-cal을 시작할 때)에만 읽히기 때문에 Calendar Server를 다시 시작할 때까지 새 값이 적용되지 않습니다. 이러한 SSL 매개 변수에 대한 설명을 보려면 SSL 구성을 참조하십시오.

단계
  1. 구성을 변경할 권한을 가지고 관리자로 로그인합니다.

  2. /etc/opt/SUNWics5/cal/config 디렉토리로 변경합니다.

  3. 이전 ics.conf 파일을 복사하고 이름을 바꿔 저장합니다.

  4. 다음 표에 표시된 매개 변수 중 하나 이상을 편집합니다.

    매개 변수 

    값 

    encryption.rsa.nssslactivation

    “on”

    encryption.rsa.nssslpersonalityssl

    “SampleSSLServerCert”

    encryption.rsa.nsssltoken

    “internal”

    service.http.tmpdir

    “/var/opt/SUNWics5/tmp”

    service.http.uidir.path

    “html”

    service.http.ssl.cachedir

    “.”

    service.http.ssl.cachesize

    “10000”

    service.http.ssl.certdb.password

    " "(적절한 비밀번호 입력)

    service.http.ssl.certdb.path

    “/var/opt/SUNWics5/alias”

    service.http.ssl.port.enable

    “yes”

    service.http.ssl.port

    "443"(기본 SSL 포트)


    주 –

    HTTP 기본 포트인 포트 "80"은 아닙니다.


    service.http.securesession

    "yes"(전체 세션 암호화)

    service.http.ssl.sourceurl

    “https”//localhost:port”(로컬 호스트의 이름과 service.http.ssl.port 값 입력)

    service.http.ssl.ssl2.ciphers

    ““

    service.http.ssl.ssl2.sessiontimeout

    “0”

    service.http.ssl.ssl3.ciphers

    "rsa_red_40_md5,

    rsa_rc2_40_md5,

    rsa_des_sha,

    rsa_rc4_128_md5,

    rsa_3des_sha"

    service.http.ssl.ssl3.sessiontimeout

    “0”

    service.http.sslusessl

    “yes”

  5. 파일을 ics.conf로 저장합니다.

  6. 변경 내용을 적용하려면 Calendar Server를 다시 시작합니다.

    cal_svr_base/SUNWics5/cal/sbin/start-cal

SSL 문제 해결

우선 복구 불가능한 문제가 발생할 경우를 대비하여 정기적으로 인증서 데이터베이스를 백업합니다. SSL에 문제가 있을 경우 다음 내용을 확인하십시오.

cshttpd 프로세스 점검

SSL을 사용하려면 Calendar Server cshttpd 프로세스가 실행 중이어야 합니다. cshttpd가 실행 중인지 확인하려면 다음 명령을 사용합니다.

# ps -ef | grep cshttpd

인증서 검증

인증서 데이터베이스의 인증서를 나열하고 해당 유효 일자를 확인하려면 다음 명령을 사용합니다.

# ./certutil -L -d /var/opt/SUNWics5/alias

Calendar Server 로그 파일 확인

Calendar Server 로그 파일에 SSL 오류가 있는지 확인합니다. 자세한 내용은 Calendar Server 로그 파일 사용을 참조하십시오.

SSL 포트에 연결

브라우저와 다음 URL을 사용하여 SSL 포트에 연결합니다.

https://server-name:ssl-port-number

여기서,

server-name은 Calendar Server가 실행 중인 서버 이름입니다.

ssl-port-numberics.conf 파일의 service.http.ssl.port 매개 변수가 지정하는 SSL 포트 번호입니다. 기본값은 443입니다.

cshttpd가 일반 HTTP 포트를 수신하지 못하게 만들기

HTTP 및 HTTPS는 다른 포트를 수신합니다(SSL의 경우 443, HTTP의 경우 80). 따라서 둘 다 동일한 포트를 수신하게 할 수 없습니다. 현재 cshttpd가 일반 HTTP 포트를 수신하지 못하게 할 방법은 없습니다. 그러나 관리자는 service.http.port를 미공개 번호로 변경할 수 있습니다.


주의 – 주의 –

cshttpd가 HTTP를 수신하지 못하게 하려면 service.http.enable ="no"로 설정하지 마십시오. 이렇게 하면 HTTPS도 실패합니다. SSL이 제대로 구성되려면 service.http.enableservice.http.ssl.port.enable 을 모두 "yes"로 설정해야 합니다.