注册 登录
LUPA开源社区 返回首页

xiang002的个人空间 http://www.lupaworld.com/?328269 [收藏] [复制] [分享] [RSS]

我的博客

细数Linux管理员大赞的OpenSSL测试技巧

已有 1140 次阅读2011-11-14 11:54 |系统分类:IT技术|

OpenSSL是一款开源工具包,用于实现安全套接层(SSL)和传输层安全(TLS)协议,它对于大多数负责安全网络工作的Linux管理员来说是必不 可少的一款日常工具。但是OpenSSL还包括丰富的功能,连经验老到的资深人士也可能不太熟悉这些功能。你可以使用OpenSSL来测试POP和 IMAP服务器,并且测试服务器的连接速度,还有其他值得关注的用途。

  OpenSSL测试POP和IMAP服务器

  当你部署一台新的邮件服务器,或者对旧的邮件服务器进行更改时,传统的telnet仍是测试未加密的POP和IMAP服务器会话的保留工具。 但是如果是使用TLS/SSL加密的服务器,该怎么办呢?Telnet无法与这些服务器进行对话。要测试这些服务器,最快速、最容易的办法就是使用 OpenSSL的s_client选项。s_client是一个普通的SSL/TLS客户端,用来测试使用TLS/SSL的所有服务器。

  要测试POP服务器,先给自己发送一堆测试消息,那样你就有东西可以处理了。使用域名或IP地址和端口号,连接到POP3S服务器;端口995是标准的POP3S端口:

  $ openssl s_client -connect mailserver.com:995

  你会看到好多信息一闪而过,最后会出现这样的内容:

  Verify return code: 18 (self signed certificate)

  ---

  +OK Hello there.

  这个响应表明这是一台Courier POP3服务器。另一种流行的POP3服务器Dovecot会有这样的响应:

  Verify return code: 18 (self signed certificate)

  ---

  +OK Dovecot ready.

  我想,大概Courier很害羞,不想表明身份。每一种响应都确认了服务器在运行,在响应客户端请求;核实了TSL/SSL加密处于正常工作 状态。如果你想了解更多的详细信息,可以用tee命令把相当冗长的输出结果记下来,以便进一步分析。该命令将命令结果导到文本文件上,同时将它显示在屏幕 上:

  $ openssl s_client -connect mailserver.com:995   tee pop3s.txt

  如果输出内容看起来正确,也没有报告你的SSL证书有何问题,那么服务器极可能处于良好的工作状态,准备投入运行。要不然,你可能会看到这个常见的错误消息:

  Verify return code: 20 (unable to get local issuer certificate)

  这意味着,OpenSSL找不到你存储的可信证书管理机构(CA)。安装的每一个Linux系统都默认存储了Verisign、Thawte 和Comodo等各大商业CA的证书,以及你在上网冲浪或使用电子邮件时添加的任何CA.(比如当你访问网站时,Firefox弹出一些警示内容,表明该 网站在使用不可信的CA,提示你是否果真确信要访问该网站?你是否想要添加例外。)你可以告诉s_client你的邮件服务器的CA在哪里:

  $ openssl s_client -connect mailserver.com:995 -CApath /etc/ssl/certs/

  然后,它应该会显示Verify return code: 0 (ok)。

  现在,你可以收阅电子邮件,看看测试邮件有没有送达。输入下面的粗体命令,使用你自己的登录信息。非粗体的几行是服务器响应:

  $ +OK Dovecot ready

  user carla

  +OK

  pass password

  +OK Logged in.

  stat

  +OK 2 4761

  list

  +OK

  1 2232

  2 2531

  .

  retr 1

  +OK 2232 octets

  Return-path:

  […]


  stat告诉你收件箱里面有多少封邮件及邮件大小。list列出了你的邮件。retr检索邮件,并按照列表号来显示,显示了所有标题,然后是邮件正文。你完成后,只需输入quit.

  测试IMAP服务器

  测试IMAP服务器需要使用一套不同的命令。粗体的行同样是你输入的命令。为了简洁起见,我只摘了服务器输出的一部分:

  $ openssl s_client -connect mailserver.com:993

  […]

  * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.

  . login carla password

  . OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE […] LIST-STATUS QUOTA] Logged in

  . list “” “*”

  LIST (\HasChildren) “.” “INBOX”

  * LIST (\HasNoChildren) “.” “INBOX.work”

  * LIST (\HasNoChildren) “.” “INBOX.personal”

  * LIST (\HasNoChildren) “.” “INBOX.Trash”

  . examine INBOX

  * FLAGS (\Answered \Flagged \Deleted \Seen \Draft Junk NonJunk $Forwarded)

  * OK [PERMANENTFLAGS ()] Read-only mailbox.

  * 1 EXISTS

  * 1 RECENT

  * OK [UNSEEN 1] First unseen.

  […]

  . OK [READ-ONLY] Select completed.

  . fetch 1 rfc822.text

  * 1 FETCH (RFC822.TEXT {9}

  test message, do not read. Kthx.

  )

  . OK Fetch completed.

  . logout结束会话。list “” “*”命令列出了你的所有邮箱,而examine INBOX意味着列出收件箱里面的邮件。fetch 1 rfc822.text只显示邮件文本,不显示标题。要注意开头的点;这是个命令标记,必须要有。标记可以是任何字符或字符组合,不得有空格,而且必须放 在你输入的每个命令前面。IMAP 会用你选择的命令标记给其回复作上标记,不过不知什么原因,它把点换成了星号。如果你使用数字或字母,它就会使用那些数字或字母;你可以试用不同的标记, 就很容易看到。IMAP允许多个连接,所以标记告诉你命令和响应属于哪一个连接。

  RFC 1939详细描述了所有POP3命令和会话中的正确步骤,RFC 3501则详细描述了IMAP4。
  测试远程连接速度

  OpenSSL随带一个内置的基准测试套件,该套件含有连接测试速度:

  $ openssl s_time -cipher DHE-RSA-AES256-SHA -connect mailserver.com:993

  我拷贝了来自s_client会话的密文列表,服务器在其中告诉你它支持哪些密文。你还可以不用指定任何密文,就运行测试。OpenSSL会 提出抱怨,但还是会运行测试。当你不指定密文时,运行起来速度通常比较慢,所以如果你的邮件客户端让你可以选择使用哪个密文,你可能会看到运行速度比较 快。

  你可以在任何服务器上使用这个命令,比如能够支持HTTPS的Web服务器:

  $ openssl s_time -connect webserver.com:443

  OpenSSL参考手册页不是很详细或很有帮助。要获得更多的信息,一个办法就是故意以错的方式运行命令,比如openssl s_time foo.OpenSSL在作出响应时会提供选项摘要。如果你更喜欢阅读出色的入门书,Joshua Davies所着的《使用密码和PKI实现SSL/TLS》(Implementing SSL / TLS Using Cryptography and PKI)是这方面的经典图书之一,而且该书内容很新。如果你不想花钱,可以下载OpenSSL源代码,研读与源代码捆绑的说明文档。

  最后,为了供你参考备用,下面列出了Web服务器和邮件服务器的标准端口;当然,任何Linux系统上的/etc/services都含有完整的列表。

  -smtp 25/tcp

  -http 80/tcp

  -pop3 110/tcp/udp

  -imap4 143/tcp/udp

  -https 443/tcp/udp

  -ssmtp 465/tcp

  -imaps 993/tcp/udp

  -pop3s 995/tcp/udp
 已同步至 xiang002的微博

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册
验证问答 换一个 验证码 换一个

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部