SSL/TSL/인증서/OpenSSL/S_client 사용법

반응형


SSL 포스팅하면서...

이번에 over the wire bandit 문제를 풀면서 나도 찾아본 개념들인데 좋게 설명된 내용들을 한번 정리해 보기로 했다.


전송 계층 보안

전송 계층 보안 (영어: Transport Layer Security, TLS), 보안 소켓 레이어 (Secure Sockets Layer, SSL)는 암호 규약이다. 그리고 '트랜스포트 레이어 보안'이라는 이름은 '보안 소켓 레이어'가 표준화 되면서 바뀐 이름이다. 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보해준다. 이 규약은 웹 브라우징, 전자 메일, 인스턴트 메신저, voice-over-IP (VoIP) 같은 응용 부분에 적용되고 있다. TLS는 IETF 표준 규약이다. 최종 갱신은 RFC 5246이고, 최종 갱신 버전은 넷스케이프에서 만든 SSL 표준을 바탕으로 했다.


① SSL

SSL(Secure Socket Layer)은 넷스케이프사에서 전자상거래 등의 보안을 위해 개발하였다. 이후 TLS(Transport Layer Security)라는 이름으로 표준화되었다. SSL은 특히 전송계층(Transport Layer)의 암호화 방식이기 때문에 HTTP 뿐만 아니라 NNTP, FTP, XMPP등 응용계층(Application Layer) 프로토콜의 종류에 상관없이 사용할 수 있는 장점이 있다. 기본적으로 Authentication, Encryption, Integrity를 보장한다.

[SSL 확인방법]

  • URL 옆의 열쇠 표시
  • http 대신 https URL 접두사
  • 트러스트 씰
  • 녹색 주소창(EV SSL 인증서를 발급한 경우)

② TSL

전송 계층 보안(Transport Layer Security): SSL의 뒤를 잇는 표준이다.

  - 스레드 로컬 저장소: 다중 스레드 프로그램에서 각 스레드가 로컬 데이터를 저장할 수 있는 공간이다.

  - 동티모르의 IOC 코드

  - 텔스트라의 ASX 코드

데이터 출처 : 위키백과



인증서

신원을 확인하고, 문서의 위조와 변조, 거래 사실의 부인 방지 등을 목적으로 공인인증기관(CA)이 발행하는 전자적 정보

[인증서 구성]

1. 인증서 소유자의 e-mail 주소

2. 소유자의 이름

3. 인증서의 용도

4. 인증서 유효기간

5. 발행 장소

6. Distinguished Name (DN)

  - Common Name (CN)

  - 인증서 정보에 대해 서명한 사람의 디지털 ID

7. Public Key

8. 해쉬(Hash)

[인증서가 필요한 곳]

  • 로그인 및 암호
  • 금융 정보(예: 신용카드 번호, 은행 계좌)
  • 개인 정보(예: 이름, 주소, 주민등록번호, 생년월일)
  • 독점적 정보
  • 법률 문서 및 계약서
  • 고객 목록
  • 의료 기록

[인증서 발급기관]

CA

디지털서명을 이용한 전자상거래 등에 있어서 누구나가 객관적으로 신뢰할 수 있는 제3자(Trusted Third Party)를 의미함

전자서명 및 암호화를 위한 디지털 인증서를 발급,관리하는 서비스 제공 기관/서버



OpenSSL

SSL과 TLS는 보안 통신을 위해 사용하는 프로토콜이다. 이 프로토콜을 구현한 라이브러리 중 하나가 OpenSSL이며 오픈 소스로 구현되어있다. OpenSSL 라이브러리는 통신 전문을 암호화 하는 것은 물론, 문서를 암호화 할 수도 있다.

[open ssl 설치]

#> wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz

#> tar xvfz openssl-1.1.0c.tar.gz

#> cd openssl-1.1.0c

#> ./config shared

#> make

#> make install


S_client

s_client(SSL/TLS client Program)는 openssl 명령으로 운영중인 웹서버의 SSL인증서 정보를 살펴볼 수 있다.

SSL/TLS 를 사용하는 원격 호스트에 접속하기 위한 일반적인 SSL/TLS client를 구현하는 명령어이다.

SSL에 대해 매우 유용한 진단도구이다.

[s_client 사용법]

#> openssl s_client -connect [서버]:443 [옵션]


[s_client 옵션]

옵션

 설명

-connect host:port

접속할 호스트와 포트 기본값은 localhost:443

-ssl2, -ssl3, -tls1, -dtls1

설정한 프로토콜만 통신

no_ 를 앞에 붙이면 설정한 프로토콜을 제외하고 통신 ex) -no_ssl2  

-msg

프로토콜 메세지 출력

-CAfile [file]

서버인증시 사용할 수 있는 클라이언트 체인인증서

-cert [file]

client public key 서버인증서

-key [file]

client private key 개인키 사용 기본 perm

-pass arg

private key를 위한 password을 전달

-showcerts

전체 서버 인증서 체인을 표시

-state

ssl 세션 상태 출력

-debug

디버그 모드 디버그 메세지를 16진수로 출력

-verify

서버 인증서 체인의 최대 길이를 지정하고 서버 인증서 확인


각각의 개념과 간단한 설치 및 사용법에 대해서 포스팅을 해보았는데 openssl 에 관해서 조금 더 자세한 내용이 필요하다면 다음 cookbook을 참조하면 좋을 것 같다.

OpenSSL Cookbook 링크

반응형

'Security > other security' 카테고리의 다른 글

[File Signature Collection] 파일 시그니처 모음  (0) 2017.07.19
TAGS.

Comments