좋은 아침입니다. 여기는 미야시타 인프라입니다.
최근 openSSL 취약점이 자주 논의되고 있습니다. 따라서 이번에는 KSSL을 사용해 SSL 종료 설정을 소개하겠습니다.
- 환경
서버: Oracle Spark Enterprise T2000 운영체제: solaris10
아주 오래된 환경 말이에요.
구성: 컨테이너 구성에서는 웹 서버가 로컬 ZONE에 구축되어 있습니다. 글로벌 ZONE은 KSSL에서 종료됩니다. 로컬 ZONE의 웹 서버는 포트 8888에서 수신하도록 구성되어 있습니다.
- 증명서 준비
KSSL에서는 인증서 정보 파일이 하나만 전달될 수 있으므로, "certificate + intermediate certificate + private key" 순서로 붙여넣은 파일을 글로벌 ZONE에서 볼 수 있는 위치에 배치하세요.
[shell]# vi /etc/httpd/keys/abc.net.key [/shell]
- SMF에 KSSL 서비스 등록하기
[shell]ksslcfg create -f pem -i /etc/httpd/keys/abc.net.key -x 8888 zone-web01 443 [/shell]
"zone-web01"은 전달되는 서버를 삽입합니다. (이 경우 로컬 ZONE의 웹 서버) 이 이름은 DNS 또는 호스트에 등록되어야 합니다. "-i"... 설치한 인증서를 지정하세요. 경험적으로 파일 권한 "-x"에 제한이 없습니다... 그 아래에 있는 서버와 통신 포트 번호. 웹 서버가 듣는 포트 "zone-web01"... 종료 후 "443" 후의 목적지 서버 이름... KSSL이 기다리는 포트
[shell]# svcs -a|grep SSL 온라인 10:15:01 svc:/network/ssl/proxy:kssl-zone-web01-443 [/shell] 글로벌 존에서 이렇게 "온라인"이 되면 시작이 성공한 것입니다.
- 로컬 ZONE 확인
지금까지 한 결과로는 KSSL을 시작해도 스스로 바인딩되지 않았습니다. 그래서 웹 서비스를 재시작해야 합니다. (이번에는 Apache를 예로 들었습니다)
[shell]# SVC -a|grep apache online 15:33:22 SVC:/NETWORK/HTTP:APACHE2-web01 [/shell]
웹 서비스도 SMF에 등록되어 있으나, 위 서비스를 재시작하세요.
[shell]# SVCADM 재시작 Apache2-web01 온라인 15:33:22 SVC:/NETWORK/HTTP:APACHE2-web01 # svcs -a|grep apache online 18:00:10 svc:/network/http:apache2-web01
○ 확인 # netstat -a|grep 443|grep 듣기 TCP: IPv4 로컬 주소 원격 주소 Swind Send-Q Rwind recv-Q 상태 -------------------- -------------------- ----- ------ ----- ------ ----------- zone-web01.443 *.* 0 0 49152 0 듣기 [/shell]
이로써 KSSL을 SSL 프록시로 사용하여 웹 서버 구축이 완료됩니다. 종료 과정은 자원이 웹 서버와 분리되어 있어 빠릅니다.
하지만 결국 저는 OpenSSL 라이브러리를 사용하기 때문에 업데이트는 Oracle의 몫입니다.