텔넷 또는 넷캣 클라이언트가 SSL을 통해 통신 할 수 있습니까?


62

SSL을 통한 IMAP, HTTPS 및 SSL / TLS를 통한 다른 보안 텍스트 기반 인터넷 프로토콜을 사용하여 클라이언트 연결을 테스트하고 싶습니다. telnet 또는 netcat이 파이프 또는 대체 프로그램과 같은 SSL / TLS를 통과하도록하는 방법이 있습니까?


답변:


131

Telnet / Netcat 클라이언트는 없습니다. 두 개의 별도 프로그램이며 최소 10 개의 다른 Telnet 클라이언트와 최소 6 개의 다른 Netcat 버전이 있습니다 (원래 netcat, GNU netcat, OpenBSD netcat, nmap의 ncat; 나머지는 잊어 버렸습니다).

선호하는 도구는 TLS 라이브러리 자체에서 제공됩니다. 그러나 조금 장황 할 수도 있습니다.

  • GnuTLS 에는 Linux에 TLS 클라이언트 도구가 있습니다.

    gnutls-cli imap.gmail.com -p 993
    

    -sSTARTTLS에 사용 ; 필요한 프로토콜 명령을 수동으로 입력하고 CtrlD준비가되면를 눌러야 합니다.

    IPv6을 지원하고 기본적으로 서버 인증서의 유효성을 검사합니다.

  • OpenSSL 에는 TLS 클라이언트 도구가 있습니다.

    openssl s_client -connect imap.gmail.com:993
    

    모든 운영 체제에서 사용할 수 있습니다. STARTTLS는 -starttls imap또는 -starttls smtp옵션을 통해 지원되며 프로그램이 자동으로 협상합니다. (그렇지만 초기 서버 응답을 버리지 만 일반적으로 괜찮습니다.)

    1.1 이상 버전 만 IPv6을 지원합니다.

    버전 ≥ 1.0.2 (IIRC) 만 기본적으로 서버 인증서의 유효성을 검사합니다. 이전 버전에는 수동 -CApath 스펙이 필요합니다.

(NSS 및 SChannel 테스트 도구도 갖고 싶지만 찾을 수 없었습니다.)

또한 프로그램은 동일한 라이브러리를 사용하지만 구성 노브가 더 적을 수 있습니다. 일부는 기본적으로 피어 인증서 검사를 건너 뜁니다 ...

  • socat :

    socat openssl:imap.gmail.com:993 stdio
    

    readline 모드는 편의상 사용할 수 있습니다.

    socat ssl:imap.gmail.com:993 readline
    

    STARTTLS는 지원되지 않습니다.

  • nmap의 ncat 은 TLS를 지원하지만 STARTTLS는 지원하지 않습니다.

    ncat --ssl imap.gmail.com 993
    
  • Debian 의 telnet-ssl 패키지 와 같은 일부 Telnet 클라이언트 도 TLS를 지원합니다.

    telnet-ssl -z ssl imap.gmail.com 993
    

    이스케이프 메뉴 starttls에서 STARTTLS를 활성화 할 수 있습니다 Ctrl].


4
나는 asker가 허용 된 것으로 표시하지 않아도된다는 질문 대신 귀하의 답변을 단순히 좋아할 수 있기를 바랍니다.
Sammitch

gnutls-cli도 IPv6로 STARTLS를 테스트 할 수있는 유일한 것으로 보입니다. 감사!
karoshi

OpenSSL s_client은 1.1 릴리스에서 IPv6을 지원합니다.
grawity

1
OpenSSL s_client에는 R 또는 Q로 시작하는 행이 명령으로 취급되는 "유용한"기능이 있습니다 ( manual 참조 ). 사용 -ign_eof하지 않으려면 사용하십시오. 또한 s_client확인이 실패하더라도 계속됩니다. "반환 코드 확인 : 0 (확인)"이라는 메시지가 표시되는지 확인하고 서버가이 메시지를 스푸핑하려고하지 않기를 바랍니다. gnutls-cli가능 하면 사용 하는 것이 좋습니다.
tom

1
다행히도 마찬가지 -verify_return_error입니다.
grawity

5

당신은보고 할 수 있습니다 하려면 openssl s_client가 , 예를 들어,

# openssl s_client -connect dummy.com:8443

2

네, stunnel이라는 프로그램이 있습니다

구성 파일이 있습니다.

수신 할 포트, 전달할 포트를 알려줍니다.

클라이언트 쪽 또는 서버 쪽 또는 둘 다에서 작동합니다.

따라서 SSL을 지원하지 않는 서버를 효과적으로 지원하는 서버로 바꿀 수 있습니다.

또는 SSL을 지원하지 않는 클라이언트를 효과적으로 지원합니다.

또는 클라이언트와 서버 모두 SSL 연결을 갖도록합니다.


1

크로스 플랫폼 지원이 필요한 경우 sclient ( git ) 도 있습니다 (예 : Windows).

example.com의 tls를 풀어주는 로컬 서버를 만듭니다.

$ sclient example.com:443 localhost:3000
> [listening] example.com:443 <= localhost:3000

telnet으로 example.com에 요청하십시오.

$ telnet localhost 3000
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
> GET / HTTP/1.1
> Host: example.com
> Connection: close 
> 
> 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.