Oracle® Solaris 11.2의 네트워크 보안

인쇄 보기 종료

업데이트 날짜: 2014년 8월
 
 

Apache 2.2 SSL로 폴백하도록 SSL 커널 프록시를 구성하는 방법

이 절차에서는 Apache 2.2 웹 서버를 처음부터 구성하고 SSL 커널 프록시를 기본 SSL 세션 처리 방식으로 구성합니다. 클라이언트가 제공하는 SSL 암호 세트에 SSL 커널 프록시에서 제공되는 암호가 없으면 Apache 2.2 웹 서버가 폴백 방식으로 사용됩니다. 이 절차에서는 Figure 3–2에서 보여주는 복잡한 시나리오를 구현합니다.

시작하기 전에

root 역할을 맡아야 합니다. 자세한 내용은 Oracle Solaris 11.2의 사용자 및 프로세스 보안 의 지정된 관리 권한 사용을 참조하십시오.

  1. Apache 2.2 웹 서버에서 서버의 SSL 커널 프록시에서 사용되는 키 인증서를 만듭니다.
    1. CSR(인증서 서명 요청)을 생성합니다.

      다음 명령은 SSL 커널 프록시에 대한 CSR 및 관련 개인 키를 생성합니다.

      # cd /root
      # openssl req \
      > -x509 -new \
      > -subj "/C=CZ/ST=Prague region/L=Prague/CN=`hostname`" \
      > -newkey rsa:2048 -keyout webkey.pem \
      > -out webcert.pem
      Generating a 2048 bit RSA private key
      .+++
      ........+++
      writing new private key to 'webkey.pem'
      Enter PEM pass phrase: JohnnyCashIsCool
      Verifying - Enter PEM pass phrase:  JohnnyCashIsCool
      #
      # chmod 440 /root/webcert.pem ; chown root:webservd /root/webcert.pem

      주 -  FIPS 140 준수를 위한 RSA 키의 최소 길이는 2048입니다. 자세한 내용은 Using a FIPS 140 Enabled System in Oracle Solaris 11.2 을 참조하십시오.

      자세한 내용은 openssl(5) 매뉴얼 페이지를 참조하십시오.

    2. CSR을 CA(인증 기관)에 보냅니다.
    3. webcert.pem 파일을 CA에서 받은 서명된 인증서로 바꿉니다.
  2. 문장암호 및 공개/개인 키 인증서로 SSL 커널 프록시를 구성합니다.
    1. 문장암호를 만들고 저장하며 보호합니다.
      # echo "RefrigeratorsAreCool" > /root/kssl.pass
      # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass

      주 - 문장암호에는 공백 문자를 포함할 수 없습니다.
    2. 개인 키 및 공개 키 인증서를 한 파일로 결합합니다.
      # cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
    3. 공개/개인 키 인증서 및 문장암호로 SSL 커널 프록시를 구성합니다.
      # ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
  3. 8443 포트에서 암호화되지 않은 통신을 수신하도록 웹 서버를 구성합니다.

    /etc/apache2/2.2/httpd.conf 파일에서 Listen 행을 편집합니다.

    # pfedit /etc/apache2/2.2/httpd.conf
    ...
    ## Listen 80
    Listen 8443
  4. SSL 모듈 템플리트인 ssl.conf를 Apache 구성 디렉토리에 추가합니다.
    # cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf

    이 모듈은 암호화된 연결을 위해 443 수신 대기 포트를 추가합니다.

  5. 웹 서버가 /root/kssl.pass 파일의 문장암호를 해독할 수 있도록 허용합니다.
    1. kssl.pass 파일을 읽는 셸 스크립트를 만듭니다.
      # pfedit /root/put-passphrase.sh
      #!/usr/bin/ksh -p
      ## Reads SSL 커널 프록시 passphrase
      /usr/bin/cat /root/kssl.pass
    2. 스크립트를 실행 가능하게 설정하고 파일을 보호합니다.
      # chmod 500 /root/put-passphrase.sh
      # chown webservd:webservd /root/put-passphrase.sh
    3. ssl.conf 파일의 SSLPassPhraseDialog 매개변수를 수정하여 이 셸 스크립트를 호출합니다.
      # pfedit /etc/apache2/2.2/ssl.conf
      ...
      ## SSLPassPhraseDialog  builtin
      SSLPassPhraseDialog exec:/root/put-passphrase.sh
  6. 웹 서버의 공개 및 개인 키 인증서를 올바른 위치에 저장합니다.

    ssl.conf 파일의 SSLCertificateFile 및 SSLCertificateKeyFile 매개변수 값에 올바른 위치 및 이름이 포함됩니다. 올바른 위치로 인증서를 복사하거나 연결할 수 있습니다.

    # ln -s  /root/webcert.pem /etc/apache2/2.2/server.crtSSLCertificateFile default location
    # ln -s /root/webkey.pem /etc/apache2/2.2/server.keySSLCertificateKeyFile default location
  7. Apache 서비스를 사용으로 설정합니다.
    # svcadm enable apache22
  8. (옵션)두 개의 포트가 작동 중인지 확인합니다.

    openssl s_clientkstat 명령을 사용하여 패킷을 확인합니다.

    1. SSL 커널 프록시에 사용할 수 있는 암호를 사용합니다.
      # openssl s_client -cipher RC4-SHA -connect web-server:443

      kstat 카운터 kssl_full_handshakes에서 1이 증가하면 SSL 커널 프록시에서 SSL 세션이 처리되었는지 확인합니다.

      # kstat -m kssl -s kssl_full_handshakes
    2. SSL 커널 프록시에 사용할 수 없는 암호를 사용합니다.
      # openssl s_client -cipher CAMELLIA256-SHA -connect web-server:443

      kstat 카운터 kssl_fallback_connections에서 1이 증가하면 패킷이 도달했지만 SSL 세션이 Apache 웹 서버에서 처리되었는지 확인합니다.

      # kstat -m kssl -s kssl_fallback_connections
예 3-1  SSL 커널 프록시를 사용하도록 Apache 2.2 웹 서버 구성

다음 명령은 pem 키 형식을 사용하는 SSL 커널 프록시 서비스 인스턴스를 만듭니다.

# ksslcfg create -f pem -i cert-and-key.pem -p kssl.pass -x 8443 443