OpenSSL 과 s_client
OpenSSL
SSL/TLS 프로토콜을 구현한 라이브러리 중 하나로, 통신전문과 문서를 암호화 할 수 있음
s_client (SSL/TLS client program)
SSL/TLS 를 사용하는 원격 호스트에 접속하기 위한 일반적인 SSL/TLS client를 구현하는 명령어
openssl 로 운영중인 웹서버의 SSL 인증서 정보 살펴볼 수 있음
사용법
$ openssl s_client [옵션]
s_client 옵션
-connect host:port | 접속할 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. 개인키 사용하며 기본값은 pem(표준 : X.509) |
-pass arg | private key를 위한 password 전달 |
-showcerts | 전체 서버 인증서 체인을 표시 |
-state | ssl 세션 상태 출력 |
-debug | 디버그 모드 (16진수로 출력) |
-ciphers | 이용가능한 모든 cipherset 출력 |
-cipher cipherlist | cipherlist 지정(서버와 클라이언트 간 이용할 cipher) |
출력결과 살펴보기
# example
$ openssl s_client -connect www.google.com:443
1. Certificate chain
첫줄은 subject(공개키를 인증서에서 인증하는 엔티티), 두번째 줄은 발급자(서명자) 정보 출력
2. Server certificate
BEGIN ~ END 까지 서버인증서
3. TLS Connect Info
새로운 세션이 생성되었으며 protocol version 과 사용되는 cipher suite 정보를 알 수 있음
그리고 그 밑에 중요한 정보가 하나 뜨는데 'Secure Renegotiation IS supported' 가 그것임
*재협상(Renegotiation, 기존 보안 세션 내에서 새 핸드쉐이크 협상을 시작하는 것) 관련 보안 이슈는 https://kimkmg.tistory.com/43?category=628216 글 참고
출처
https://websecurity.tistory.com/100
SSL/TSL/인증서/OpenSSL/S_client 사용법
SSL 포스팅하면서...이번에 over the wire bandit 문제를 풀면서 나도 찾아본 개념들인데 좋게 설명된 내용들을 한번 정리해 보기로 했다. 전송 계층 보안 전송 계층 보안 (영어: Transport Layer Security, TLS),
websecurity.tistory.com
https://m.blog.naver.com/millionaire_jh/220659855526
[OpenSSL] s_client
# s_client ?? -> SSL/TLS client Program -> openssl 명령으로 운영중인 웹서버의 SS...
blog.naver.com