탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1의 네트워크 보안 Oracle Solaris 11.1 Information Library (한국어) |
다음 절차에서는 SSL 커널 프록시를 사용하도록 웹 서버를 구성하는 방법을 보여 줍니다.
SSL 커널 프록시는 Apache 2.2 웹 서버에서 SSL 패킷 처리 속도를 높일 수 있습니다. 이 절차에서는 그림 3-1에서 보여 주는 간단한 시나리오를 구현합니다.
시작하기 전에
Apache 2.2 웹 서버를 구성했습니다. 이 웹 서버는 Oracle Solaris에 포함되어 있습니다.
root 역할이 있어야 합니다.
# svcadm disable svc:/network/http:apache22
ssl.conf 파일에서 SSLCertificateFile 매개변수만 지정한 경우 SSL 커널 프록시에 대해 지정한 파일을 직접 사용할 수 있습니다.
SSLCertificateKeyFile 매개변수도 지정한 경우 인증서 파일과 개인 키 파일을 결합해야 합니다. 다음과 유사한 명령을 실행하여 파일을 결합합니다.
# cat cert.pem key.pem > cert-and-key.pem
ksslcfg(1M) 매뉴얼 페이지에서 전체 옵션 목록을 참조하십시오. 제공해야 하는 매개변수는 다음과 같습니다.
key-format – 인증서 및 키 형식을 정의하기 위해 -f 옵션과 함께 사용합니다. SSL 커널 프록시의 경우 지원되는 형식은 pkcs11, pem 및 pkcs12입니다.
key-and-certificate-file – pem 및 pkcs12 key-format 옵션에 대한 서버 키 및 인증서를 저장하는 파일의 위치를 설정하기 위해 -i 옵션과 함께 사용합니다.
password-file – pem 또는 pkcs12 key-format 옵션에 대한 개인 키를 암호화하는 데 사용되는 암호를 가져오기 위해 -p 옵션과 함께 사용합니다. pkcs11의 경우 암호를 사용하여 PKCS #11 토큰에 인증합니다. 0400 권한으로 암호 파일을 보호해야 합니다. 이 파일은 무인 재부트에 필요합니다.
certificate-label – PKCS #11 토큰에서 인증서 객체의 레이블을 선택하기 위해 -C 옵션과 함께 사용합니다.
proxy-port – SSL 프록시 포트를 설정하기 위해 -x 옵션과 함께 사용합니다. 표준 포트 80과 다른 포트를 지정해야 합니다. 웹 서버는 암호화 해제된 일반 텍스트 트래픽을 위한 SSL 프록시 포트에서 수신 대기합니다. 일반적으로 값은 8443입니다.
ssl-port – SSL 커널 프록시에 대한 수신 포트를 지정합니다. 일반적으로 값은 443입니다.
다음 형식 중 하나를 사용하여 SSL 프록시 포트와 관련 매개변수를 지정합니다.
# ksslcfg create -f key-format -i key-and-certificate-file \ -p password-file -x proxy-port ssl-port
# ksslcfg create -f pkcs11 -T PKCS#11-token -C certificate-label \ -p password-file -x proxy-port ssl-port
# svcs svc:/network/ssl/proxy STATE STIME FMRI online 02:22:22 svc:/network/ssl/proxy:default
다음 출력은 감사 서비스 인스턴스가 만들어지지 않았음을 나타냅니다.
svcs: Pattern 'svc:/network/ssl/proxy' doesn't match any instances STATE STIME FMRI
/etc/apache2/2.2/http.conf 파일을 편집하고 SSL 프록시 포트를 정의하도록 행을 추가합니다. 서버 IP 주소를 사용하는 경우 웹 서버는 해당 인터페이스에 대해서만 수신합니다. 행은 다음과 유사합니다.
Listen proxy-port
웹 서버 서비스는 SSL 커널 프록시 인스턴스가 시작된 후에만 시작할 수 있습니다. 다음 명령은 이러한 종속성을 설정합니다.
# svccfg -s svc:/network/http:apache22 svc:/network/http:apache22> addpg kssl dependency ...apache22> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443 ...apache22> setprop kssl/grouping = astring: require_all ...apache22> setprop kssl/restart_on = astring: refresh ...apache22> setprop kssl/type = astring: service ...apache22> end
# svcadm enable svc:/network/http:apache22
SSL 커널 프록시는 Oracle iPlanet 웹 서버에서 SSL 패킷 처리 속도를 높일 수 있습니다. 이 절차에서는 그림 3-1에서 보여 주는 간단한 시나리오를 구현합니다.
시작하기 전에
Oracle iPlanet 웹 서버를 설치 및 구성했습니다. 서버는 Oracle iPlanet Web Server에서 다운로드할 수 있습니다. 지침은 Oracle iPLANET WEB SERVER 7.0.15를 참조하십시오.
Network Security 권한 프로파일에 지정된 관리자여야 합니다. 자세한 내용은 Oracle Solaris 11.1 관리: 보안 서비스의 지정된 관리 권한을 사용하는 방법을 참조하십시오.
관리자 웹 인터페이스를 사용하여 서버를 중지합니다. 지침은 Oracle iPLANET WEB SERVER 7.0.15를 참조하십시오.
ksslcfg(1M) 매뉴얼 페이지에서 전체 옵션 목록을 참조하십시오. 제공해야 하는 매개변수 목록은 단계 3 in SSL 커널 프록시를 사용하도록 Apache 2.2 웹 서버를 구성하는 방법를 참조하십시오.
다음 형식 중 하나를 사용하여 SSL 프록시 포트와 관련 매개변수를 지정합니다.
# ksslcfg create -f key-format -i key-and-certificate-file \ -p password-file -x proxy-port ssl-port
# ksslcfg create -f pkcs11 -T PKCS#11-token -C certificate-label \ -p password-file -x proxy-port ssl-port
# svcs svc:/network/ssl/proxy STATE STIME FMRI online 02:22:22 svc:/network/ssl/proxy:default
지침은 Oracle iPLANET WEB SERVER 7.0.15를 참조하십시오.
웹 서버 서비스는 SSL 커널 프록시 인스턴스가 시작된 후에만 시작할 수 있습니다. 다음 명령은 웹 서버 서비스의 FMRI가 svc:/network/http:webserver7이라고 가정하여 이러한 종속성을 설정합니다.
# svccfg -s svc:/network/http:webserver7 svc:/network/http:webserver7> addpg kssl dependency ...webserver7> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443 ...webserver7> setprop kssl/grouping = astring: require_all ...webserver7> setprop kssl/restart_on = astring: refresh ...webserver7> setprop kssl/type = astring: service ...webserver7> end
# svcadm enable svc:/network/http:webserver7
이 절차에서는 Apache 2.2 웹 서버를 처음부터 구성하고 SSL 커널 프록시를 기본 SSL 세션 처리 방식으로 구성합니다. 클라이언트가 제공하는 SSL 암호 세트에 SSL 커널 프록시에서 제공되는 암호가 없으면 Apache 2.2 웹 서버가 폴백 방식으로 사용됩니다. 이 절차에서는 그림 3-2에서 보여 주는 복잡한 시나리오를 구현합니다.
시작하기 전에
root 역할이 있어야 합니다. 자세한 내용은 Oracle Solaris 11.1 관리: 보안 서비스의 지정된 관리 권한을 사용하는 방법을 참조하십시오.
다음 명령은 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
자세한 내용은 openssl(5) 매뉴얼 페이지를 참조하십시오.
# echo "RefrigeratorsAreCool" > /root/kssl.pass # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass
주 - 문장암호에는 공백을 포함할 수 없습니다.
# cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
# ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
/etc/apache2/2.2/httpd.conf 파일에서 Listen 행을 편집합니다.
# pfedit /etc/apache2/2.2/httpd.conf ... ## Listen 80 Listen 8443
# cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf
이 모듈은 암호화된 연결을 위해 443 수신 대기 포트를 추가합니다.
# pfedit /root/put-passphrase.sh #!/usr/bin/ksh -p ## Reads SSL kernel proxy passphrase /usr/bin/cat /root/kssl.pass
# chmod 500 /root/put-passphrase.sh # chown webservd:webservd /root/put-passphrase.sh
# pfedit /etc/apache2/2.2/ssl.conf ... ## SSLPassPhraseDialog builtin SSLPassPhraseDialog exec:/root/put-passphrase.sh
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
# svcadm enable apache22
openssl s_client 및 kstat 명령을 사용하여 패킷을 확인합니다.
# openssl s_client -cipher RC4-SHA -connect web-server:443
kstat 카운터 kssl_full_handshakes에 1이 증가하면 SSL 커널 프록시에서 SSL 세션이 처리되었는지 확인합니다.
# kstat -m kssl -s kssl_full_handshakes
# 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
SSL 커널 프록시는 다음 제한 사항과 함께 영역에서 작동합니다.
모든 커널 SSL 관리는 전역 영역에서 수행해야 합니다. 전역 영역 관리자는 로컬 영역 인증서 및 키 파일에 액세스해야 합니다. 로컬 영역 웹 서버는 전역 영역에서 ksslcfg 명령을 사용하여 서비스 인스턴스를 구성한 후 시작할 수 있습니다.
인스턴스를 구성하는 경우 ksslcfg 명령과 함께 특정 호스트 이름이나 IP 주소를 지정해야 합니다. 특히 인스턴스에서 IP 주소로 INADDR_ANY를 지정할 수 없습니다.
시작하기 전에
웹 서버 서비스는 비전역 영역에서 구성되고 사용으로 설정됩니다.
Network Security 및 Zone Management 권한 프로파일에 지정된 관리자여야 합니다. 자세한 내용은 Oracle Solaris 11.1 관리: 보안 서비스의 지정된 관리 권한을 사용하는 방법을 참조하십시오.
예를 들어 apache-zone 영역에서 Apache 웹 서버를 중지하려면 다음 명령을 실행합니다.
apache-zone # svcadm disable svc:/network/http:apache22
apache-zone에 대한 서비스 인스턴스를 만들려면 다음과 유사한 명령을 사용합니다.
# ksslcfg create -f pem -i /zone/apache-zone/root/keypair.pem \ -p /zone/apache-zone/root/skppass -x 8443 apache-zone 443
예를 들어 apache-zone에서 웹 서비스를 사용으로 설정합니다.
apache-zone # svcadm enable svc:/network/http:apache22