您的位置:首页 > 运维架构

使用openssl进行ssl/tls加密传输会话测试

2009-04-07 18:21 513 查看
【小蜗牛嘻哈之作



我们首先看看下面一段“对话”:
[root@pps ~]# openssl s_client -connect localhost:110 -starttls pop3
...
【这里是一大段有关证书、SSL/TLS会话等内容】
...
---
+OK Dovecot ready.
user snail
+OK
pass snail'password
+OK Logged in.
list
+OK 6 messages:
1 1731
2 43178
3 1727
4 43183
5 43217
6 43171
.
quit
+OK Logging out.
closed
[root@pps ~]#

这样的会话情况,是和"telnet localhost 110"进行POP3会话情况是一样的,而这里和telnet不一样的是,整个会话过程所传输的信息都是加密的。如上示例,我的机器上(localhost)需要开启POP3服务,并且POP3服务支持SSL/TLS加密传输。(我用的是Dovecot做的POP3/IMAP服务器)

参数说明:
s_client 用作一个普通的SSL/TLS会话的客户端
-starttls prot 在开始TLS传输之前使用STARTTLS命令来使得相关协议(prot)支持它。
我使用的openssl(0.9.8b)版本只支持smtp和pop3协议。
更新的版本应该支持imap协议。

如果没有指定"--starttls pop3",则出现POP3不支持SSL/TLS会话的现象:
[root@pps ~]# openssl s_client -connect localhost:110
CONNECTED(00000003)
2730:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:567:

如果某个服务器某端口“一开始”就支持SSL/TLS会话了,那就没有必要"--starttls"了。如果POP3S服务在默认的993端口监听着的话,就不必那么费劲使用"--starttls"了:
[root@pps ~]# openssl s_client -connect localhost:993
...
---
* OK Dovecot ready.
...

下面我再举个简单的例子。我使用两个终端,在一个终端运行以下命令:
[root@pps ~]# openssl s_server -accept 2009 -key server.pem -cert server.pem
Using default temp DH parameters
ACCEPT

参数解释:
s_server 用作一个普通的SSL/TLS会话的服务器端
-accept port 监听的端口
-cert arg 使用的证书(默认是server.pem)
-key arg 使用的密钥(默认是server.pem)

我这里使用的server.pem是随便生成的,证书和密钥都同在server.pem文件里。

然后我在另外一个终端运行命令如下:
[root@pps ~]# openssl s_client -connect localhost:2009
...
【这里是一大段有关证书、SSL/TLS会话等内容】
...
---

这个时候,在服务器端(s_server)也会出现SSL-Session相关信息。

好,我在客户端(s_client)这边输入"Hello, I'm a client.",回车,我们可以看到在服务器端可以立刻显示出来我输入的内容,在服务器端输入"Hello, I'm the server.",也可以立刻在客户端看到服务器输入的内容,最后我在服务端输入"quit"结束会话。而整个会话传输过程,都是加密的,只有在两端才是解密的明文内容。

【注意】如果双方在会话过程中,第三方客户端连接将被阻塞。

------------------------------------------------------------------------------------------
赵小蜗牛
QQ: 755721501
E-mail: [email]snailwarrior@qq.com[/email]
在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux openssl ssl 休闲 tls