OpenSSL
是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL
协议,并提供丰富的应用程序供测试或其它目的使用。
SSL是Secure Sockets Layer
(安全套接层协议)的缩写,可以在Internet
上提供秘密性传输。Netscape公司在推出第一个Web
浏览器的同时,提出了SSL
协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet
上保密通讯的工业标准。
SSL
能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL
协议要求建立在可靠的传输层协议(TCP
)之上。SSL
协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP
,FTP
,TELNET
等)能透明地建立于SSL
协议之上。SSL
协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
安全信道特性
数据保密性:
信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密
的过程需要用到密钥来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密钥要用一个安全的方法传送。加密过的数据可以公开地传送。数据完整性
加密也能保证数据的一致性。例如:消息验证码(MAC
),能够校验用户提供的加密信息,接收者可以用MAC
来校验加密数据,保证数据在传输过程中没有被篡改过。安全验证
加密的另外一个用途是用来作为个人的标识,用户的密钥可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。
OpenSSL包含一个命令行工具用来完成OpenSSL库中的所有功能,更好的是,它可能已经安装到你的系统中了。
OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH
使用它加密SSH
,但是,你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
功能
基本功能
OpenSSL
整个软件包大概可以分成三个主要的功能部分:SSL
协议库、应用程序以及密码算法库。OpenSSL
的目录结构自然也是围绕这三个功能部分进行规划的。
作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL
协议,并提供了丰富的应用程序供测试或其它目的使用。辅助功能
BIO
机制是OpenSSL
提供的一种高层IO
接口,该接口封装了几乎所有类型的IO
接口,如内存访问、文件访问以及Socket
等。这使得代码的重用性大幅度提高,OpenSSL
提供API
的复杂性也降低了很多。
OpenSSL
对于随机数的生成和管理也提供了一整套的解决方法和支持API
函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。如果你有足够的耐心,将会在深入使用OpenSSL的过程慢慢发现很多这样的小功能,让你不断有新的惊喜。
SSL和TLS协议
OpenSSL实现了SSL
协议的SSLv2
和SSLv3
,支持了其中绝大部分算法协议。OpenSSL
也实现了TLSv1.0,TLS
是SSLv3
的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。
虽然已经有众多的软件实现了OpenSSL
的功能,但是OpenSSL
里面实现的SSL
协议能够让我们对SSL
协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL
实现的SSL
协议是开放源代码的,我们可以追究SSL
协议实现的每一个细节;二是OpenSSL
实现的SSL
协议是纯粹的SSL
协议,没有跟其它协议(如HTTP
)协议结合在一起,澄清了SSL
协议的本来面目。