티스토리 뷰

2012년 8월 18일부터 회원가입을 받는 모든 사이트는 SSL 보안을 의무적으로 적용해야 한다. 이를 어길 시 3,000만 원 이하 벌금을 부과한다고 한다.


SSL 보안이란 간단히 말하면 사용자가 웹 브라우저에 입력하는 정보를 암호화해 보내면 서버에서 원래대로 복호화한다는 개념이다.


툭하면 발생하는 개인정보 유출을 막고자 시행하는 모양인데, 개인정보가 유출된 과정만 알면 이 법이 얼마나 뻘짓인지 금방 알 수 있다.


개인정보 유출 대부분은 어리한 서버 관리자가 아이디와 비밀번호를 허술하게 관리했기 때문에 발생했지, 개인이 서버에 보내는 정보를 해석해서 발생한 게 아니란 말이다.


돌대가리 공무원들 뻘짓에 소규모 사이트를 운영하는 사람들만 죽어난다.


SSL 보안 적용은 작은 사이트 같은 경우 몇만 원 큰 사이트 같은 경우 몇십만 원 가까이 추가 비용이 발생한다. 그리고 인증서를 발급하는 회사가 외국 회사기 때문에 SSL 보안 의무화로 어마어마한 돈이 외국으로 빠져나가는 셈이다.


인증서만 가지고 있어도 이를 설치하는데 몇만 원 줘야 한다.


다행히 SSL 보안에 필수인 인증서를 무료로 발급해 주는 사이트가 있다. SSL 보안에 필요한 인증서는 다음과 같다.


1. startssl 에서 1번째로 만든 KEY 파일.

2. startssl 에서 2번째로 발급받은 CRT 파일.

3. 루트인증기관 CA.pem 파일

4. 루트인증기관체인 sub.class1.server.ca.pem 파일


먼저 startssl.com 사이트에 가입한다.


간단한 정보를 입력하면


메일로 인증 코드를 발송한다.


메일로 도착한 인증 코드를 위 난에 입력하면 된다.


메일로 인증코드를 받아 입력하는 과정이 한 번 더 진행된다. 


메일인증을 마쳤으며, 마지막으로 startssl.com 사이트에서 발급하는 인증서를 선택하여 설치한다. 이 과정은 이미 가입을 해버려 캡처를 못했으나, 직접 해 보면 그렇게 어렵지 않다.


인증서 설치를 마쳤으면 "Authenticate"를 선택한다.


좀 전에 발급받는 인증서를 확인하면


무료로 인증서를 발급하는 페이지로 접근할 수 있다.


먼저 SSL 보안을 적용할 도메인 인증을 해야 한다


SSL 보안을 적용할 도메인을 입력하고 나머지 부분을 선택한다.


다음 화면에서 선택한 메일주소로 인증코드를 발송해 주는데, 이 부분이 아주 중요하다.


해당 도메인 정보에 현재 사용중인 메일이 등록되어 있어야 해당 메일을 선택할 수 있다. 만약 사용하지 않은 메일이 등록되어 있다면, 도메인의 메일 정보를 변경해야 한다.


인증코드를 받을 메일을 선택한 후 계속 진행하면 메일로 인증코드를 보내준다.


인증코드를 복사해서 입력하면 도메인 인증이 완료된다.


이제 인증받은 도메인의 SSL 인증서를 받아보자. Web Server SSL/TLS Cartificate를 선택


인증서 비밀번호를 만든다. 비밀번호 10자리를 입력해야 다음으로 진행할 수 있다.


Text area의 코드를 복사하여 XXXX.key로 저장한다.


SSL을 적용할 도메인을 선택하고


도메인의 Alias를 입력한다. 인증서는 도메인마다 발급받아야 한다. 즉 www.autoboy.pe.kr 인증서 따로 mail.autoboy.pe.kr 인증서 따로 각각 받아야 한다. 


www을 입력하면 autoboy.pe.kr www.autoboy.pe.kr 을 동시에 사용할 수 있다.


Text area의 코드를 복사하여 XXXX.crt로 저장한다.


인증서 발급을 마쳤으면, 루트인증기관 ca.pem 파일과 루트인증기관체인 sub.class1.server.ca.pem 파일을 내려받는다.


ToolBox에서 StartCom CA Certificates 항목을 선택한다.


아래 두 개의 파일을 내려받는다.


호스팅을 받는 사용자라면 

key

crt

sub.class1.server.ca.pem

위 파일과 인증서 발급시 입력한 비밀번호를 호스팅 관리자에게 넘겨주면 지가 알아서 설정해준다.


개인 서버를 가지고 있다면 위 파일을 서버의 적당한 경로에 올리고 SSL 설정에서 인증서를 등록한다.


만약 openSSL이 설치되어 있지 않으면 yum install openssl 명령으로 설치한다.

<VirtualHost _default_:443>

   DocumentRoot /home/내아이디/public_html ;내계정 디렉토리

   ServerName 도메인:443

   ServerAdmin 이메일주소

  
   SSLEngine on

   SSLProtocol all -SSLv2

   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM


   SSLCertificateFile /etc/경로/certs/내인증서.crt

   SSLCertificateKeyFile /etc/경로/private/내키.key

   SSLCertificateChainFile /etc/경로/certs/sub.class1.server.ca.pem

   SSLCACertificateFile /etc/경로/certs/ca.pem


  <Files ~ "\.(cgi|html|shtml|phtml|php?\d?)$">

     SSLOptions +StdEnvVars

  </Files>

   SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

   #CustomLog /usr/local/apache/logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>



SSL 보안 접속은

https://내도메인:443


https로 접속시 문서내에 "http" 경로가 들어 있으면 경고창이 뜨기 때문에 모든 페이지를 https로 연결할 게 아니라 아이디, 비밀번호를 받아 로그인 처리하는 파일과 같이 꼭 필요한 페이지만 사용하도록 한다.


startssl class1 은 와일드카드 라이센스가 아니기 때문에 하나의 ip로 이루어진 가상 호스트에서는 여러 개  사용 시 각각 포트를 변경해야 한다.


가상 호스팅 환경이라면 아파치 설정에서 SSL로 사용할 포트를 추가로 등록하고

Listen 442


해당 포트에 맞게 설정한다.


인증서를 발급받을 때 비밀번호를 등록했기 때문에 Apache를 시작할 때 마다 비밀번호를 묻는다. 다음과 같이 키 파일을 새로 생성하면 비밀번호 없이 Apache를 시작할 수 있다.


openssl rsa -in 원래파일.key -out 새파일.key


https://도메인:포트로 접속하면 URL 입력난에 자물쇠가 표시되고 인증서를 볼 수 있다. 참고로 이 인증서는 유효기간이 1년이기 때문에 유효 기간이 지나면 다시 발급받아야 한다.

 

이런 뻘짓하지 말고 모든 사이트에 개인정보를 파기하도록 하고, 아이핀처럼 개인정보를 최소화해 국가가 관리하고 개인정보를 필요로 하는 사이트마다 접근할 수 있는 키를 발급해라!!!

댓글
  • 프로필사진 홍성만 감사합니다. 인증서 받아서 가비아에 주니 바로 세팅해 주네요. 덕분에 고민이 해결되었습니다. 감사합니다. 2012.08.24 09:02
  • 프로필사진 김홍진 정말 감사합니다. 저도 바로 인증서 받아 세팅 완료했습니다. 과태료 부과하면 잘 모르는 자영업자만 죽어나겠군요. 이게 뭔 짓인지... 돈은 외국으로 다 빠져나가고... 2012.08.27 11:55
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 그러게 말입니다. 2012.08.27 21:23 신고
  • 프로필사진 jaehun 좋은글 잘 읽고 많이 배우고 갑니다. 감사합니다. 그리고 님에 의견 100%공감 합니다.. 2012.08.28 17:24
  • 프로필사진 김명희 SSL 보안 의무설치 이것 때문에 요즘 죽어나고 있습니다. 몇 몇 클라이언트가 홈페이지를 만든 측에서 무료로 해줘야 한다는 식으로 생때를 쓰고 있습니다. 돌대가리들 뻘짓에 무슨 고생인지... 2012.08.31 08:41
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 때리는 시어머니 보다 말리는 시누가 더 밉다고, 뻘짓을 하는 정부 보다 무조건 공짜로 해내라며 무식하게 진상 부리는 고객이 더 밉죠. 2012.09.01 07:43 신고
  • 프로필사진 한수정 정말 감사합니다.
    이것 때문에 스트레스 엄청 받았는데 회사 홈페이지에 바로 적용했습니다.
    다시 한번 감사합니다.
    2012.09.04 23:12
  • 프로필사진 Favicon of http://thystory.tistory.com BlogIcon 고무고무 상세한 설명 감사합니다. 블로거님 덕분에 쉽게 진행하고 있습니다.
    (아직 완료는 못 했지만요;;)
    혹시 이 포스팅을 킴스큐 홈페이지 광장에 링크로 걸어도 될까요?
    2012.09.20 10:39
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 네 그렇게 하세요. 대신 링크한 주소는 알려주셔야 합니다. 2012.09.20 14:20 신고
  • 프로필사진 Favicon of http://thystory.tistory.com BlogIcon 고무고무 벌써 누가 StartSSL에 대한 다른 링크를 걸어 두었군요.
    그래도 감사합니다.
    2012.09.21 15:20
  • 프로필사진 조아조아 미리네는 외부인증서는 관리가 힘들어 정책상 설치가 불가능하오니 참고하시기 바랍니다.
    링크 했습니다.
    http://www.technote.co.kr/php/technote1/board.php?board=community3&command=body&no=745
    2012.10.18 17:01
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 설정 후에는 관리할 게 전혀 없는데 관리가 힘들어 외부인증서는 안된다. 이해할 수 없네요. 2012.10.18 23:07 신고
  • 프로필사진 하하하 뭔가 잘못 집고계신데
    주민등록번호든 해드폰인증이든 아이핀인증이든 본인확인 과정 자체를 거치는거 자체가 개인정보를(인증과정을) 노출하게 됩니다.
    아이핀도 아이핀서버 해킹당하면 의미가 없습니다. 그냥 개인정보자체를 입력하지 않는게 답입니다.

    SSL 은 필수입니다. 당연한거에요. 소규모 사이트라고 허술하게 해놔도 된다는 보장이 있습니까?
    외국에 돈퍼다주다는데 국내 SSL 용 Root CA 문제는 국가적 문제고요 일본이나 중국은 있습니다.
    국내는 관리도 못하는 NPKI 열심히 찍어내고 있지않습니까?
    2013.05.09 21:32
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 제 글을 다시 한번 차근차근 읽어 보시고 그래도 제가 잘못 집고 있는 게 있으면 알려주세요. 그리고 Sniffing을 얼마나 쉽게 할 수 있는지도 알려주시면 좋겠네요. 2013.06.19 00:09 신고
  • 프로필사진 하하하ㅋㅋ 참 좋은 정보이고.. 맞는 말인데..
    어느 부분에서 이해를 못하신 건지..
    2013.08.03 17:20
  • 프로필사진 BlogIcon 가가멜 결국 이글이 정답이 됨. 2015.03.23 11:23
  • 프로필사진 김혜정 좋은정보 정말 감사합니다. 보안서버 설치완료해서 방금 호스팅업체에 문의드렸더니 신청서작서하면서 설치비를 받더군요. 그런데 설치비안에 소스수정이라는 체크란이있는데 유료라고해서 질문좀 드려요^^. 소스수정은 위에 설명해주신 개인서버를 갖고있을때 수정하는 그 방법인가요? 아니면 그냥 체크안해도 되는건가요?
    참고로 호스팅 업체는 나야나입니다.
    2013.06.18 15:10
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 웹은 일반적인 접속은 http, SSL 보안이 필요한 경우 https protocol을 사용합니다.

    서버에 SSL 인증을 적용했다고 하더라도 보안 접속이 필요한 경우, 기존 http에서 https로 접속 되도록 웹페이지 일부를 수정해야 합니다.

    소스 수정이라는 것은 신청인이 http 접속을 https로 접속되도록 스스로 수정을 할 것인지 아니면 호스팅 관리 업체에 맡길 것인지 선택하는 것입니다.

    본인이 할 수 있으면 직접 수정하시면 되고 아니면 신청하시면 되겠네요.
    2013.06.18 23:55 신고
  • 프로필사진 후리자 나라에서 별별 뻘짓을 하는거에는 동의하지만 비록 영세 사이트라 하더라도 여러 회원정보를 포함한 여러 개인정보가 오가는 곳에 SSL 을 적용하는게 잘못되었다는 말은 동의하기 어렵네요. 커피숍 무선 공유기에 붙어서 스니핑 도구 켜면 아무런 암호화 과정없이 평문으로 전송되는 수많은 아이디와 비밀번호들을 볼수 있는게 현실입니다. 2014.01.29 16:50
  • 프로필사진 후리자 그것도 상업적으로 운영되는 사이트라면 적용하는게 당연한거 아닌가요? 2014.01.29 16:52
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 제 글을 자세히 읽지 않으셨군요. 왜 뻘짓인지 알려드리겠습니다.

    첫째. 정부의 SSL 의무 시행 조치가 그동안 네이트, GS칼텍스, 현대카드, 신세계몰, 아이러브스쿨, 메이플 스토리 같은 대기업의 대규모 개인정보유출 사고에 기인한다는 것입니다. 즉, 소규모 영세 사이트의 개인정보유출 때문에 시행하는 것이 아니란 것이지요.

    둘째. 위 기업체는 SSL은 물론 방화벽에 의해 철저히 보안을 하고 있었지만 털렸습니다.

    셋째. 위 업체들이 개인 정보를 털린 과정이 해킹에 의한 게 아니라 관리자가 비밀번호를 유출해서 털린 것입니다.

    넷째. 스니핑이든 스푸핑이든 서버를 해킹을 하려면 서버에 접근해서 해킹 툴을 설치해야 합니다. 해킹 툴을 심을 정도로 쉽게 뚫릴 서버라면 해킹 툴 심어 놓고 오가는 정보 모니터링하고 분석할 필요가 없습니다. 그냥 개인 정보가 담긴 디비를 통째로 덤프 하면 되겠지요.

    그리고 스니핑툴을 이용하면 아이디와 비밀번호를 볼 수 있다고 하셨는데... ??? 영화를 너무 많이 보셨군요.

    스니핑은 오고 가는 수많은 문자열 중에 반복되는 특정 문자열이 아이디와 비밀번호가 아닐까 유추해 내는 거지 아이디와 비밀번호를 딱 구분해서 알려주지는 않습니다.

    실지로 스니핑을 해보면 스니핑으로 아이디와 비밀번호를 식별 해 낸다는 게 얼마나 어려운 일인지 알 수 있습니다.

    가입 회원이 몇십 또는 몇백밖에 되지 않는 소규모 서버를 해킹해 툴 심고 오가는 정보를 몇 달 동안 모니터링해서 확실하지도 않은 아이디와 비밀번호를 유추해서 일일이 로그인 해보고 맞는지 확인한다? 이게 가능하다고 생각하십니까?

    차라리 구글에서 동창회명단 또는 회원명단으로 검색하는게 더 빠릅니다.

    물론 회원 가입을 받고 있는 모든 사이트에서 SSL 접속을 한다면 개인 PC에 해킹 툴이 설치된 경우 상대적으로 안전하기는 하겠지만 요즘 기술로 봐서는 각자가 백신으로 자신의 PC를 스스로 보호하지 않는 이상 SSL 시행만으로 결코 안전하다 할 수 없습니다.
    2014.01.29 21:25 신고
  • 프로필사진 Favicon of http://blog.securekim.com BlogIcon 시큐어김
    좋은 포스팅에 참조가 많이 되었습니다.

    그런데 '넷째.' 부분 중 잘못된 부분이 있네요.
    스니핑과 스푸핑은 서버를 직접 해킹하는 것이 아닙니다.
    서버를 해킹했다면 SSL은 이미 의미가 없는 것입니다.

    비유를 들자면
    스니핑/스푸핑이 문 밖에서 피해자의 계좌번호와 암호를 엿듣는 것이라면, 해킹은 그냥 피해자 집안에 들어가서 다 털어가는 것입니다.

    그리고 실제 HTTPS는 스푸핑 해보면 쉽게 복호화해서 아이디 패스워드를 알아낼 수 있습니다. HTTP는 그냥 스니핑만 해도 바로 보이구요.

    그 이유는 첫째로, 클라이언트에서 /login 과 같이 알아보기 쉬운 URL로 로그인 요청을 하기 때문입니다. 이외에도 클라이언트 스크립트의 소스코드를 보면 어디로 로그인 요청을 하는지 정도는 쉽게 알 수 있습니다.

    두번째로는 웹 개발자가 보통 JSON 포맷으로 {USER_ID : *** ,USER_PW:***} 와 같은 식으로 데이터를 만들어 서버에 보내도록 하기 때문인데요.

    트위터만 봐도 그런식으로 보내기 때문에 아이디 패스워드를 쉽게 파악 할 수 있습니다. 물론 네이버처럼 추가로 데이터를 암호화를 해서 보낸다면 키를 얻어내야 한다는 수고로움이 있지만 불가능 하진 않죠.
    결국 키가 클라이언트측에 있거나 서버에서 받아서 사용할텐데 서버에 키를 요청하면 되니까요.

    하지만 HTTPS연결을 하면 위처럼 MITM공격을 당하고 있을 때 클라이언트측에서 서버 인증서의 인증서 체인을 검증하다가 경고창을 내보내고 Deny선택시 아이디/패스워드는 날아가지 않게 됩니다.

    왜냐면 MITM시 해커가 보내주는 인증서는 해당 Rootca에서 발급해 준(사이닝한) 올바른 인증서가 아니기 때문이죠.

    해커가 이 인증서를 뚫고 자신의 인증서를 사이닝 하려면 공개키 Mod 연산의 곱셈에 대한 역원인 비밀키를 구해야 하는데 2048~4096일 경우 현재 거의 불가능에 가깝습니다.

    즉 충분한 크기의 소수 사용시 SSL을 스니핑만으로 복호화 하는것은 불가능이구요.

    스푸핑도 경고창이 떠서 막히기 때문에 사용자가 허가하지 않으면 아이디 패스워드 획득이 불가능 합니다.

    그렇기 때문에 SSL이 필요한 것입니다.
    2016.01.31 02:25
  • 프로필사진 곽선생 좋은 정보네요.감사... 2014.01.29 19:10
  • 프로필사진 박세훈 안녕하세요. 좋은글 감사합니다.
    하지만 SSL 에 관련해서..아무래도 그냥 지나치기가 그래서..

    스니핑은 오고 가는 문자열 보는거 맞습니다. 그런데 그 문자열로 개인정보 유추가 참 쉽다라는 거죠. 아이디/비번만 중요한게 아닙니다.
    만약 서버를 해킹한다면 스니핑 할 필요도 없죠. 스니핑은 서버해킹과 무관하게 개인이 HTTP로 보내는 정보를 몰래 보는 것이고 커피숍에 앉아서 커피숍AP에 monitor모드로 접속해 tcpdump 하고 있다 보면, 그 AP를 사용하는 사람이 만약에 SSL적용 안된 사이트에 접속한다면, 어떤 컨텐츠를 보고 어떤 글을 올리고 어떻게 로그인 하는지..다 들여다 볼 수 있는 거죠. 서버 개념이 아닌 개인들의 사적인 정보를 들여다 볼 수 있는 여지를 주게 된다라고 보면 좋을것 같습니다.

    그리고.. SSL 이 암호화만 중요한 게 아닙니다. 더 중요한 것은 전자서명 기능이죠.
    누군가 가짜 사이트를 만들어 놓고, DNS를 조작해서 그 가짜 사이트로 접속하게끔 유도한다면, 사용자는 그 사이트가 진짜인지 가짜인지 모르고 아이디/비번...만약 금융 사이트라면 계좌정보 등등.. 입력할 수 있습니다.
    SSL의 전자서명 기능을 통해 사이트가 진짜 주인이 운영하는 사이트가 맞는지 인증서를 통해 구별이 가능합니다.
    만약 인증기관을 통하지 않은 개인이 만든 인증서로 SSL 서버를 운영할 경우, 브라우져에서 신뢰받지 않는 사이트라고 뜨는 것처럼요.

    SSL 인증 기관이 다 해외라..사실 짜증납니다.
    온갖 브라우저, OS 들이 다 서양것이니...
    거기에 내장된 루트 인증서들을 통해 PKI 방식으로 신뢰받은 인증서인지 아닌지 구분하니 태생부터 결국..그렇게 된거 같습니다.
    2014.05.16 03:07
  • 프로필사진 김성문 혹시 외부네트워크가 아닌 내부 내트워크에서 SSL 적용하려면 어떻게 하는지 궁금합니다.
    DNS 주소가 없거든요
    2014.07.02 10:15
  • 프로필사진 Favicon of https://www.autoboy.pe.kr BlogIcon 변기환 본 포스팅에서 소개한 방법으로는 불가능합니다. IP로 SSL 인증서 발급이 가능한지는 모르겠네요. 대부분 도메인 소유주 메일로 인증을 하기 때문에 확인을 해봐야 할 것 같습니다. www.ucert.co.kr로 문의 해 보시기 바랍니다. 2014.07.02 12:50 신고
  • 프로필사진 Favicon of https://www.3rabbitz.com BlogIcon 쓰리래빗츠 친절한 설명 감사합니다. 안타깝게도 쓰리래빗츠(https://www.3rabbitz.com) 홈페이지는 상업적 용도 또는 금융을 위한 사이트라서 제공을 거절했습니다. 2014.10.06 18:04
  • 프로필사진 Favicon of http://ahover.net BlogIcon ahover 정말 친절한 설명으로 카페24에 신청완료했습니다. 감사합니다. 2015.03.04 11:07
  • 프로필사진 Favicon of http://hello2017.tistory.com BlogIcon hello2017 발급시 https://www.securesign.kr/ 여기도 참고해 보시면 어떨까 합니다~ 2016.04.04 15:59 신고
댓글쓰기 폼
«   2019/06   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
Total
1,054,806
Today
10
Yesterday
181