Ssl 하드웨어 가속기를 이용한 성능 향상
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 3,770 views

 

Statistics

Views

Total Views
3,770
Views on SlideShare
3,494
Embed Views
276

Actions

Likes
2
Downloads
24
Comments
0

2 Embeds 276

http://knight76.tistory.com 275
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ssl 하드웨어 가속기를 이용한 성능 향상 Presentation Transcript

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