HTTPS 동작 방식을 통해 인증서가 쓰이는 방식
- 클라이언트가 HTTPS 프로토콜로 서버에 접속(이때 SSL 연결이 정의된 서버 포트 사용)
- 서버는 자신의 인증서 공개키를 클라이언트로 전송(유효성 검사를 위한 여러 메타 정보와 서버가 지원하는 Cipher 등도 포함)
- 클라이언트는 서버가 전송한 공개키와 메타 정보를 통해 유효성 검사를 진행(서버의 인증서 공개키가 신뢰할 수 있는 공인 Root CA로 서명됐는지 확인함)
- 유효성 검사 과정에서 서버의 인증서가 공인된 CA로 서명됐으면 통과(공인된 CA는 시스템상에 신뢰할 수 있는 기관으로 디폴트로 등록돼 있음)
- 만약 사설 CA라면 클라이언트에서 생성한 SSL 소켓(SSLContext)의 트러스트 매니저를 확인한 후, 등록이 되어있다면 통과
- 서버 인증서가 유효성 검사를 통과하면, 클라이언트는 대칭키를 생성 그리고 대칭키와 Cipher를 서버의 공개키로 암호화하여 서버로 전달(대칭키를 생성할 때는 서버에서 지원하는 Cipher 알고리즘 중 하나를 선택해서 생성)
- 서버는 클라이언트로부터 받은 [대칭키와 Cipher : 서버의 공개키로 암호화된 상태]를 자신의 개인키로 복호화하여 앞으로 암호화 통신에서 사용할 대칭키를 획득
- 이후부터 서버와 클라이언트의 사이의 데이터 통신은 클라이언트가 생성한 대칭키로 암호화하여 이루어짐
(원문출처 : http://helloworld.naver.com/helloworld/textyle/197937)
암호화 유형분류
SSL 구간암호화
보안접속(SSL, Secure Sockets Layer) : SSL암호화는 웹브라우저와 서버간 데이터를 안전하게 주고받기 위한 표준 프로토콜이다. 네츠케이프가 개발했으며 모든 웹브라우저 개발업체들이 이를 사용하고 있다.
SSL 암호화 적용시킨 웹사이트에 접속하면 웹브라우저는 해당 페이지를 HTTP가 아닌 HTTPS로 접근한다. HTTPS는 SSL 서브 계층에서 사용자 페이지 요청을 암호화, 복호화하는 프로토콜이다. 패킷이 암호화 돼 있기 때문에 일반적으로 보안이 강하다고 인식하고 있어도 좋다.
SSL과 보안 통신은 인터넷 상의 모든 프로토콜(HTTP, POP3, FTP)에 사용될 수 있다. SSL은 텔넷 세션을 보안화 하는데 사용될 수 있다. SSL을 사용하여 연결이 보안화 될 수 있지만, 모든 종류의 연결에 SSL을 사용할 필요는 없다. 연결이 중요한 정보를 전달할 경우에만 사용되어야 한다.
(원문출처 : http://hasu0707.tistory.com/153)
OpenSSL
OpenSSL은 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS와 SSL의 오픈 소스 구현판이다. C 언어로 작성되어 있는 중심 라이브러리 안에는, 기본적인 암호화 기능 및 여러 유틸리티 함수들이 구현되어 있다.
OpenSSL은 Eric A. Young과 Tim Hudson이 만든 SSLeay에 그 근거를 두고 있다. SSLeay의 개발은 Young과 Hudson이 RSA Security로 적을 옮긴 1998년 12월 이래 비공식적으로 중단되어 있다.
거의 모든 버전의 유닉스 계열 운영 체제(솔라리스, 맥 OS X, 리눅스, BSD 포함) 및 OpenVMS, 윈도에서 OpenSSL을 이용할 수 있다.
OpenSSL의 현재 최신 버전은 2015년 1월 22일 발표된 1.0.2 판이다.
(원문출처 : http://ko.wikipedia.org/wiki/OpenSSL)
'호기심_메모' 카테고리의 다른 글
C 프로그램이 만들어지는 과정 (0) | 2015.03.19 |
---|---|
chal2(1) (0) | 2015.03.19 |
Find 명령어 (0) | 2015.03.11 |
L4/L7 스위치 (0) | 2015.03.11 |
서버 support lifecycle information (EOS) (0) | 2015.01.17 |