gpt4 book ai didi

ssl - openssl 协商 STARTTLS 的 SSL 加密

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:12 25 4
gpt4 key购买 nike

我正在使用 openssl 正常连接到 SMTP 服务器(未加密),发送 STARTTLS 命令,协商 SSL 加密,然后与加密 session 交互。

这是我正在使用的命令(通过 telnet):

openssl s_client -starttls smtp -crlf -connect 1.2.3.4:25

如何确保 TLS 握手成功?

这是到目前为止使用的命令序列:

<< 220 example.com ESMTP ready
>> EHLO localhost
<< 250-smtp.mail.yahoo.com
<< 250-PIPELINING
<< 250-AUTH PLAIN LOGIN CRAM-MD5
<< 250 STARTTLS
>> STARTTLS
<< 220 2.0.0 Start TLS
>> openssl s_client -starttls smtp -crlf -connect 127.0.0.1:587

最佳答案

您似乎混淆了 shell(在其中键入诸如 telnetopenssl 之类的命令)和套接字的协议(protocol)。

使用 telnet 连接到 SMTP 等协议(protocol)的端口是一种快速破解方法,它允许您直接输入在为该协议(protocol)实现客户端时通常必须编程的内容。它可以对基于文本的协议(protocol)起作用一点,但它有局限性。特别是,您将很难以这种方式输入 TLS 握手:首先,您可能无法在键盘上为您需要发送的某些字节找到正确的键;其次,您肯定无法阅读服务器发送给您的内容。简而言之,这种方法没有任何意义。

openssl s_client -starttls smtp -crlf -connect 127.0.0.1:587 已经做了你想用 telnet 做的事情:它打开到该服务器的连接,发送 EHLO SMTP 命令,发送STARTTLS SMTP 命令,然后开始握手。 OpenSSL 命令本身根本不是 SMTP 协议(protocol)的一部分,不能在 SMTP 套接字上发送。运行此命令时您将获得的结果应该与已执行握手的 telnet session 类似,因为您应该能够像使用 telnet 一样使用其标准输入/输出。

也就是说,发送 SMTP 命令的 telnetopenssl s_client 充其量只是调试技术。

关于ssl - openssl 协商 STARTTLS 的 SSL 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14640560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com