ssl 하드웨어 가속기를 이용한 성능 향상

20
초 초초 초초 . HTTPS 초 초초 초초 초초 초 SSL 초초초초 초초초초 초초초 초초 초초 2011.6.22

Upload: knight1128

Post on 25-Jan-2015

3.083 views

Category:

Technology


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Ssl 하드웨어 가속기를 이용한 성능 향상

초 간단 기록 .HTTPS 에 대한 간단 설명 과

SSL 하드웨어 가속기를 이용한 성능 향상

2011.6.22

Page 2: Ssl 하드웨어 가속기를 이용한 성능 향상

문서 안에서의 용어 정리• Http 서버

80 포트로 서비스되는 일반적인 웹 서버• Https 서버 ( 또는 보안 서버 )

443 포트로 Http 프로토콜에 SSL 보안 통신하는 웹 서버

Page 3: 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

Page 4: Ssl 하드웨어 가속기를 이용한 성능 향상

HTTPS 서버의 용도• Https 서버를 통해서 다음을 방지한다 .– Sniffing 방지– Phishing 방지–데이터 변조

Page 5: Ssl 하드웨어 가속기를 이용한 성능 향상

인증서• 인증서는 보통 2 년 단위로 관리 (1 년짜리도 쓰기도 함 )• 개별 도메인당으로 관리된다 . ssl.service.com• 웹 브라우져는 SSL 연결을 하고 서버 인증서를 받고 어떤

인증서인지 확인한다 . 이때 신뢰하는 싸이트 ( 인증기관 , CA, Certificate Authority) 라면 괜찮지만 , 이상하다 싶으면 , 주소표시줄 색깔을 달리해서 경고해준다 .즉 , 웹 브라우져는 인증기관 목록을 미리 가지고 있다 .

• 인증서 내부에서는 Chain 이 있다 . 즉 , 웹 브라우져에서 가지고 있는 내부의 CA 목록에는 없지만 , 인증서를 만들 수 있는 조직이 여러 군데 두게 한다 . Chain 의 최상위에는 웹 브라우져에서 인증하는 CA 의 sign 된 정보를 바탕으로 SSL 통신을 Valid 하게 처리한다 .

Page 6: Ssl 하드웨어 가속기를 이용한 성능 향상

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 도 많이 도움됨

Page 7: Ssl 하드웨어 가속기를 이용한 성능 향상

SSL 통신을 자세하게 보는 방법 • openssl s_client -connect <https

서버도메인 >:443 -state -debug

Page 8: Ssl 하드웨어 가속기를 이용한 성능 향상

HTTPS 는 언제 사용 ?

• 현행법상 개인정보를 취급하는 영리 목적의 사업자는 반드시 써야 하는 의무사항임

• 보안서버가 구축되지 않으면 , 1 천만원 이하의 과태료가 부가됨

• 고객 정보를 귀하게 여겨야 함• 법률 근거– 정보통신망 이용촉진 및 정보보호 등에 관한 법률 28 조 , 55

조 , 67 조– 정보통신망 이용촉진 및 정보보호 등에 관한 법률 시행 규칙

3 조 2 항– 개인정보의 기술적 , 관리적 보호조치 기준 5 조

Page 9: Ssl 하드웨어 가속기를 이용한 성능 향상

운영 이슈• 2 년 마다 한번씩 공인 인증서 발급되어야 한다 . • 모든 서버에 Certificate 파일을 두어야 한다 . • Expire Time 에 맞게 잘 배포해야 한다 .

( 스케쥴을 잘 걸어야 함 . 잘못하면 서비스 운영 실패 !!)

• 새로 서버를 설치할 때를 위해서 인증서를 잘 관리해야 한다 .

• 조직 이동시 인수인계를 잘 해야 함=> 손이 많이 감 .

Page 10: Ssl 하드웨어 가속기를 이용한 성능 향상

운영이슈• 이미지도 SSL??– Apache 쪽으로 요청하는 것들은 Rewrite

Rule 을 이용하여 http 서버로 이미지 Redi-rection 되게

– JSP 쪽은 Tag library 를 이용하여 이미지 Re-direction 되게 함 .

Þ 최대한 HTTPS 서버에 부담이 되지 않도록 함

Page 11: Ssl 하드웨어 가속기를 이용한 성능 향상

비용 이슈• 운영 서버에 적용하려면 해당 서비스의 개발 서버에도

동일하게 인증서를 설치해야 함예를 들어 , dev, alpha, beta, real 총 4 개의 인증서를 설치해야 함

한 인증서당 70 만원이면 총 280(4*70) 만원 비용 지출 . • 만약 웹 서비스가 많다면 그에 맞게 총 비용은 늘어날 수

밖에 없다 .• 개발 서버 (dev,alpha,beta) 서버에서는 10 년짜리

인증서를 설치하는 게 좋다 . => 운영 서버의 인증서만 구입하면 된다 .인증서는 최장 25 년짜리 까지 만들 수 있음 ..

Page 12: Ssl 하드웨어 가속기를 이용한 성능 향상

성능 이슈• HTTPS (SSL) 통신의 가장 문제는 성능이다 . => Data encryption/decryption + ssl handshake 비용• 속도가 거의 나오지 않는다 .

( 경험 #1) – 동일한 URLhttp : 44https : 8( 경험 #2) – 동일한 URLhttp: 10000TPS 이상https : 200~210TPS 이상

• 트래픽 몰렸을때 , 빨리 풀리지 않음 .

Page 13: Ssl 하드웨어 가속기를 이용한 성능 향상

성능 이슈

                        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 서버

Page 14: Ssl 하드웨어 가속기를 이용한 성능 향상

성능 이슈

리퀘스트가 한 순간에 몰렸다가 풀리는 상황에서도 잘 버틴다 .

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 

Page 15: Ssl 하드웨어 가속기를 이용한 성능 향상

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

Page 16: Ssl 하드웨어 가속기를 이용한 성능 향상

SSL Session Cache 설정의 조건

• SSL Handshake 를 재사용하기 위해서는 클라이언트측의 설정이 필요한데 API 의 경우 이런 설정을 안하고 호출을 하기 때문에 캐시 재사용을 안 하게 된다 .

• 성능 향상이 없거나 , 300 초간 저장된 캐시 파일 ( 상황에 다름 . 100~200 메가 정도의 크기 ) 을 정리하는 작업을 Apache 가 수행하게 된다 .

• 정리하는 작업을 할 때 , request 를 대기시켰다가 처리되고 나면 , 그 결과로 Apache process 가 증가하고 , Tomcat 의 Thread 도 증가해서 503 Server Busy 가 발생할 수 있다 ..

• 아예 안쓰는 것도 좋은 방법이 될 수 있다 .

Page 17: Ssl 하드웨어 가속기를 이용한 성능 향상

성능 이슈 해결 방법• Cpu 가 많은 중형서버가 아닌 cpu 2 개

정도의 싼 서버로 대수를 늘리는 방법• SSL 하드웨어 가속기를 사용한다 .

( 경험 ) mpeg codec 와 muliplexer 와 같이 산수가 많이 들어가는 계산은 하드웨어가 가장 낫다 !!!

Page 18: Ssl 하드웨어 가속기를 이용한 성능 향상

SSL 하드웨어 가속 테스트• Request 파일 사이즈 별로 성능 확인

기억이 안나는데 .. SSL 하드웨어 가속기가 달린 장비 설명을 참조함

Page 19: Ssl 하드웨어 가속기를 이용한 성능 향상

기타• 실제 사용– EverNote…

• 적용 효과– 2x~10x–서비스의 dependency 가 있음 (dB bottle-

neck)

Page 20: Ssl 하드웨어 가속기를 이용한 성능 향상

결론• SSL Hardware 가속기가 들어간 L7 스위칭 장비를 활용하면 성능이 좋아짐정말 좋은 것이냐 ? Https 서비스에 따라서 성능 효과는 달라진다 ... 테스트는 필요 ~

• 보수적인 운영 , 저렴한 장비로 구축한다면 더 많은 서버 장비로 구축해야 함 . 다만 , 트래픽이 많은 서비스에는 운영하는데 상당히 귀찮을 수 있음 ( 배포 - 재시작 / 설정 변경때문에 시간이 소요됨 )

• HTTPS 사용은 고객의 정보를 소중히 여긴다는 마인드 .