SSH工作在TCP之上,可以在启动一个SSH应用后,在其通道里运行其它协议的应用,如邮件。
SSL可以认为是如果应用程序本身支持SSL,那么他启动后就自动使用SSL连接去运行了,我们当然就没必要再使用SSH了。
SSL 可以认为是程序代码级是否支持的一种特性
SSH是我们后天可以选择的一种工具,它将我们的连接给包了起来tunnel技术
从名字上看:
SSL :secure socket layer,为程序构建时期为了安全性而加入的一个协议层
SSH :secure shell安全的壳,为已经能正常运行的程序添加的壳
有人建议不要拿着两个东西比较,不是一个范畴,要比的话应该拿telnet和ssh比较
昨天Jim突然问我,SSH和SSL有什么不一样吗?我一听,是啊,有什么区别吗?…实事求是得告诉他我不知道:(
晚上回来查了查,呵呵,了解啦.
在OSI七层模型中,这两个安全传输协议其实都是建立在应用层上的:
(图片来源:Wikipedia)
在最初的设计意图中,SSL(Secure Sockets Layer (SSL) and Transport Layer Security (TLS))被设计为加强Web安全传输(HTTP/HTTPS/)的协议(事实上还有SMTP/NNTP等),SSH(Secure Shell)更多的则被设计为加强Telnet/FTP安全的传输协议,默认地,它使用22端口.
以SSL为例,基本上SSL在传输过程中所处的位置如下:
---------
| HTTP |
---------
| SSL |
---------
| TCP |
---------
| IP |
---------
如果利用SSL协议来访问网页,其步骤如下:
用户:在浏览器的地址栏里输入https://www.sslserver.com
HTTP层:将用户需求翻译成HTTP请求,如
GET /index.htm HTTP/1.1
Host http://www.sslserver.com
SSL层: 借助下层协议的的信道安全的协商出一份加密密钥,并用此密钥来加密HTTP请求。
TCP层:与web server的443端口建立连接,传递SSL处理后的数据。
接收端与此过程相反。
SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果。
SSL协议分为两部分:Handshake Protocol和Record Protocol,。其中Handshake Protocol
用来协商密钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。 Re
cord Protocol则定义了传输的格式。
参考文章:
[1]Secure Shell
http://en.wikipedia.org/wiki/Secure_Shell
[2]Transport Layer Security
http://en.wikipedia.org/wiki/Transport_Layer_Security
[3]SSL/TLS/WTLS原理
http://groups.google.com/group/cn.bbs.comp.ms-windows/browse_thread/thread/e8508d4535c81d2b/2cca1b45b182ceff%232cca1b45b182ceff
[4]What is the difference between SSH and SSL?
http://www.rpatrick.com/tech/ssh-ssl/