ssl 하드웨어 가속기를 이용한 성능 향상
DESCRIPTION
TRANSCRIPT
초 간단 기록 .HTTPS 에 대한 간단 설명 과
SSL 하드웨어 가속기를 이용한 성능 향상
2011.6.22
문서 안에서의 용어 정리• Http 서버
80 포트로 서비스되는 일반적인 웹 서버• Https 서버 ( 또는 보안 서버 )
443 포트로 Http 프로토콜에 SSL 보안 통신하는 웹 서버
HTTP/HTTPS
User Apache TomcatNet-work
Switch개인정보가 파라미터로 전달될 수 있음
* HTTP (80)해커 공격 가능
내부 망
User Apache TomcatNet-work
Switch파라미터 정보를 암호화
* HTTPS (443)
ID:aaPW : aa1234주민번호 :111
Asdafklj!234325SDG
해커 공격 불가능
SSL 을 이용 (openssl)Certificate 설치 / 설정mod_ssl 이용
HTTPS HTTPS
HTTPS 서버의 용도• Https 서버를 통해서 다음을 방지한다 .– Sniffing 방지– Phishing 방지–데이터 변조
인증서• 인증서는 보통 2 년 단위로 관리 (1 년짜리도 쓰기도 함 )• 개별 도메인당으로 관리된다 . ssl.service.com• 웹 브라우져는 SSL 연결을 하고 서버 인증서를 받고 어떤
인증서인지 확인한다 . 이때 신뢰하는 싸이트 ( 인증기관 , CA, Certificate Authority) 라면 괜찮지만 , 이상하다 싶으면 , 주소표시줄 색깔을 달리해서 경고해준다 .즉 , 웹 브라우져는 인증기관 목록을 미리 가지고 있다 .
• 인증서 내부에서는 Chain 이 있다 . 즉 , 웹 브라우져에서 가지고 있는 내부의 CA 목록에는 없지만 , 인증서를 만들 수 있는 조직이 여러 군데 두게 한다 . Chain 의 최상위에는 웹 브라우져에서 인증하는 CA 의 sign 된 정보를 바탕으로 SSL 통신을 Valid 하게 처리한다 .
HTTPS 서버의 SSL 통신• 리눅스 , ssldump 툴을 이용
New TCP connection #304: 1.1.1.1(1981) <-> a.service.com(443)304 1 0.0123 (0.0123) C>S Handshake304 2 0.0127 (0.0004) S>C Handshake304 3 0.0127 (0.0000) S>C ChangeCipherSpec304 4 0.0127 (0.0000) S>C Handshake304 5 0.0202 (0.0074) C>S ChangeCipherSpec304 6 0.0202 (0.0000) C>S Handshake304 7 0.0260 (0.0058) C>S application_data304 8 0.1921 (0.1661) S>C application_data304 9 0.2001 (0.0079) S>C application_data304 0.2001 (0.0000) S>C TCP FIN304 0.2699 (0.0698) C>S TCP FIN
Wireshark, tcpdump 도 많이 도움됨
SSL 통신을 자세하게 보는 방법 • openssl s_client -connect <https
서버도메인 >:443 -state -debug
HTTPS 는 언제 사용 ?
• 현행법상 개인정보를 취급하는 영리 목적의 사업자는 반드시 써야 하는 의무사항임
• 보안서버가 구축되지 않으면 , 1 천만원 이하의 과태료가 부가됨
• 고객 정보를 귀하게 여겨야 함• 법률 근거– 정보통신망 이용촉진 및 정보보호 등에 관한 법률 28 조 , 55
조 , 67 조– 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행 규칙
3 조 2 항– 개인정보의 기술적 , 관리적 보호조치 기준 5 조
운영 이슈• 2 년 마다 한번씩 공인 인증서 발급되어야 한다 . • 모든 서버에 Certificate 파일을 두어야 한다 . • Expire Time 에 맞게 잘 배포해야 한다 .
( 스케쥴을 잘 걸어야 함 . 잘못하면 서비스 운영 실패 !!)
• 새로 서버를 설치할 때를 위해서 인증서를 잘 관리해야 한다 .
• 조직 이동시 인수인계를 잘 해야 함=> 손이 많이 감 .
운영이슈• 이미지도 SSL??– Apache 쪽으로 요청하는 것들은 Rewrite
Rule 을 이용하여 http 서버로 이미지 Redi-rection 되게
– JSP 쪽은 Tag library 를 이용하여 이미지 Re-direction 되게 함 .
Þ 최대한 HTTPS 서버에 부담이 되지 않도록 함
비용 이슈• 운영 서버에 적용하려면 해당 서비스의 개발 서버에도
동일하게 인증서를 설치해야 함예를 들어 , dev, alpha, beta, real 총 4 개의 인증서를 설치해야 함
한 인증서당 70 만원이면 총 280(4*70) 만원 비용 지출 . • 만약 웹 서비스가 많다면 그에 맞게 총 비용은 늘어날 수
밖에 없다 .• 개발 서버 (dev,alpha,beta) 서버에서는 10 년짜리
인증서를 설치하는 게 좋다 . => 운영 서버의 인증서만 구입하면 된다 .인증서는 최장 25 년짜리 까지 만들 수 있음 ..
성능 이슈• HTTPS (SSL) 통신의 가장 문제는 성능이다 . => Data encryption/decryption + ssl handshake 비용• 속도가 거의 나오지 않는다 .
( 경험 #1) – 동일한 URLhttp : 44https : 8( 경험 #2) – 동일한 URLhttp: 10000TPS 이상https : 200~210TPS 이상
• 트래픽 몰렸을때 , 빨리 풀리지 않음 .
성능 이슈
CPU %user %nice %system %iowait %idle14½Ã 30ºÐ 01ÃÊ all 32.59 0.01 0.64 2.51 64.2414½Ã 40ºÐ 04ÃÊ all 64.21 0.03 2.82 1.43 31.5114½Ã 50ºÐ 02ÃÊ all 93.84 0.05 4.44 0.09 1.58 totsck tcpsck udpsck rawsck ip-frag14½Ã 30ºÐ 01ÃÊ 264 71 2 0 014½Ã 40ºÐ 04ÃÊ 1758 625 2 0 014½Ã 50ºÐ 02ÃÊ 1744 634 2 0 015½Ã 00ºÐ 01ÃÊ 72 10 2 0 015½Ã 10ºÐ 01ÃÊ 1075 372 2 0 015½Ã 20ºÐ 01ÃÊ 1093 408 2 0 015½Ã 30ºÐ 01ÃÊ 68 12 2 0 015½Ã 40ºÐ 01ÃÊ 1749 637 2 0 0
리퀘스트가 한순간에 몰렸다가 풀리는 상황에서도 , CPU 는 좀처럼 떨어지지 않았다 .
https 서버
성능 이슈
리퀘스트가 한 순간에 몰렸다가 풀리는 상황에서도 잘 버틴다 .
http 서버
totsck tcpsck udpsck rawsck ip-frag14½Ã 30ºÐ 01ÃÊ 242 71 2 0 014½Ã 40ºÐ 02ÃÊ 1123 519 2 0 014½Ã 50ºÐ 01ÃÊ 250 78 2 0 0 CPU %user %nice %system %iowait %idle14½Ã 30ºÐ 01ÃÊ all 29.09 0.01 1.25 1.46 68.1914½Ã 40ºÐ 02ÃÊ all 34.84 0.04 1.59 1.40 62.1214½Ã 50ºÐ 01ÃÊ all 33.19 0.02 1.72 1.55 63.52
SSL Session 설정• SSH session cache 를 관리
– 디폴트로 session cache 를 쓰지 않는 설정
SSLSessionCache none
• 아니면 , SSH session cache 를 사용– 클라이언트에서 cache 를 사용하는 경우에 사용 가능– Apache 서버의 dbm 쓰지 말고 , shared memory 쓴다 . Cache time
은 적당히 지정한다 . ( 당근 성능 테스트하고 결과값을 지정할 줄 알아야 한다 .)
SSLSessionCache "shmcb:/ 위치 /ssl_scache(512000)"SSLSessionCacheTimeout 300
SSL Session Cache 설정의 조건
• SSL Handshake 를 재사용하기 위해서는 클라이언트측의 설정이 필요한데 API 의 경우 이런 설정을 안하고 호출을 하기 때문에 캐시 재사용을 안 하게 된다 .
• 성능 향상이 없거나 , 300 초간 저장된 캐시 파일 ( 상황에 다름 . 100~200 메가 정도의 크기 ) 을 정리하는 작업을 Apache 가 수행하게 된다 .
• 정리하는 작업을 할 때 , request 를 대기시켰다가 처리되고 나면 , 그 결과로 Apache process 가 증가하고 , Tomcat 의 Thread 도 증가해서 503 Server Busy 가 발생할 수 있다 ..
• 아예 안쓰는 것도 좋은 방법이 될 수 있다 .
성능 이슈 해결 방법• Cpu 가 많은 중형서버가 아닌 cpu 2 개
정도의 싼 서버로 대수를 늘리는 방법• SSL 하드웨어 가속기를 사용한다 .
( 경험 ) mpeg codec 와 muliplexer 와 같이 산수가 많이 들어가는 계산은 하드웨어가 가장 낫다 !!!
SSL 하드웨어 가속 테스트• Request 파일 사이즈 별로 성능 확인
기억이 안나는데 .. SSL 하드웨어 가속기가 달린 장비 설명을 참조함
기타• 실제 사용– EverNote…
• 적용 효과– 2x~10x–서비스의 dependency 가 있음 (dB bottle-
neck)
결론• SSL Hardware 가속기가 들어간 L7 스위칭 장비를 활용하면 성능이 좋아짐정말 좋은 것이냐 ? Https 서비스에 따라서 성능 효과는 달라진다 ... 테스트는 필요 ~
• 보수적인 운영 , 저렴한 장비로 구축한다면 더 많은 서버 장비로 구축해야 함 . 다만 , 트래픽이 많은 서비스에는 운영하는데 상당히 귀찮을 수 있음 ( 배포 - 재시작 / 설정 변경때문에 시간이 소요됨 )
• HTTPS 사용은 고객의 정보를 소중히 여긴다는 마인드 .