首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >openssl为STARTTLS协商SSL加密

openssl为STARTTLS协商SSL加密
EN

Stack Overflow用户
提问于 2013-02-01 13:52:58
回答 1查看 46.9K关注 0票数 13

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

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

代码语言:javascript
复制
openssl s_client -starttls smtp -crlf -connect 1.2.3.4:25

如何确保TLS握手成功?

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

代码语言:javascript
复制
<< 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    
EN

回答 1

Stack Overflow用户

发布于 2013-02-01 20:00:21

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

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

openssl s_client -starttls smtp -crlf -connect 127.0.0.1:587已经完成了您正在尝试使用telnet执行的操作:它打开到该服务器的连接,发送EHLO SMTP命令,发送STARTTLS SMTP命令,然后开始握手。OpenSSL命令本身根本不是SMTP协议的一部分,不能在SMTP套接字上发送。运行此命令时得到的结果应该类似于已经执行的telnet会话和握手,因为您应该能够以与telnet相同的方式使用它的标准输入/输出。

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

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14640560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档