SSL(Secure Sockets Layer) 是一个能够确认网站身份、将所传送数据加密的安全性通讯珕定,以确保使用者与网站之间数据传送的安全性。
SSL 的功能:
1. 验证身份 (authentication) 2. 加密 (encryption) 3. 数据完整性 (data integrity)
一、 X509协议简介
SSL 采用的是 X.509协议,由上而下金字塔式的凭证制度。在 X.509 中,每一个合格的凭证上,都会有一个签名。最下层的凭证上,会有一个认证中心 (CA)的签名,表示这个认证中心 (CA) 检查过,确认所有者数据无误。中间的认证中心(CA) 上,也会有管辖它的最高层认证中心 (Root CA)的签名,表示最高层认证中心授权给它,可以签发别人的凭证。只有最高层认证中心上,因为它已经是最大,没有再上层可以给它签名了,所以只好自己签自己,凭证上的签名是自己签的。X.509标准用于在大型计算机网络提供目录服务,X.509提供了一种用于认证X.509服务的PKI结构,两者都属于ISO和ITU提出的X系列国际标准,目前,有许多公司发展了基于X.509的产品,例如Visa、MasterCard 、Netscape,而且基于该标准的Internet和Intranet产品越来越多。X.509是目前唯一的已经实施的PKI系统。X.509 V3是目前的最新版本,在原有版本的基础上扩充了许多功能,目前电子商务的安全电子交易(SET)协议也采用基于X.509 V3。
相关名词解释:
什么是数字签名 数字签名是用 Private Key针对某一段数据用 Digest Hash 算法(如 SHA1 )做出来的一Digest 摘要码。只要原来的数据有所不同,演算出来的 Digest 摘要码就会跟着变动。日后收到这个 Public Key 的人,只要检查上面认证中心的签名,就可以工具这个代码和它上面所载的所有人数据相不相符。也就知道连接的服务器,是不是真正的Web服务器。
private key(私钥) 公钥算法中使用的加密密钥对的安全密钥部分。私钥通常用于解密对称会话密钥、对数据进行数字签名或解密已使用相应公钥加密的数据。
public key(公钥) 公钥算法中使用的加密密钥对的非安全部分。公钥通常用于加密会话密钥、验证数字签名或加密可使用相应私钥解密的数据。
什么是凭证? 凭证的原文是 Certificate ,是附上所有人 (owner) 的数据(公司名称、服务器名称、个人真实姓名、电子邮件E-mail 、通讯地址等数据),后面加上数字签名的 Public Key 。凭证上会附有几个数字签名,代表这些签名的人,确认过这个 Public Key 的所有人,和凭证上所载的数据相符,没有假造。在 X.509 中,最下层每一个合格的凭证 (Certificate) 上,会有一个认证中心 (CA) 的签名,表示这个认证中心 (CA) 检查过,确认凭证上的所有者数据无误。当程序碰到没见过的凭证时,只要检查凭证上认证中心 (CA) 的签名无误,即代表这个认证中心 (CA) 查核过这个凭证 (Certificate) ,凭证上的资料无误。
什么是认证中心? 认证中心的原文是 CA ,是 Certificate Authority 的缩写。认证中心是 X.509 的一环。认证中心也是一种凭证,上面附有认证中心本身的资料,但不是用来加解密,而是用来签发凭证,证明凭证所有人和凭证上所载的数据无误。每一个合格的认证中心 (CA)上,会有一个管辖它的最高层认证中心 (Root CA) 的签名,表示最高层认证中心授权给它,可以签发别人的凭证。当程序碰到没见过的凭证,凭证上签名的认证中心 (CA) 也没见过时,只要检查认证中心上附的最高层认证中心(Root CA) 的签名无误,即代表这个最高层认证中心 (Root CA) ,认为这个认证中心 (CA) 的凭证签发过程很仔细,检查数据很详实,所以授权给它,准许它可以签发凭证 (Certificate) 。所以这个认证中心 (CA) 签发的凭证 (Certificate) ,凭证上的资料也没有问题
二、SSL协议简介
SSL协议工作在Linux TCP/IP协议和HTTP协议之间,SSL是一个介于HTTP协议与TCP之间的一个可选层,其关系如图3所示。
图3 SSL协议和Linux TCP/IP协议和其他协议之间关系
SSL Handshake Protocol 中文名称:SSL握手协议,用来完成客户端和服务器之间对话的建立。 SSL握手协议是SSL协议中最复杂的协议。服务器和客户端使用这个协议相互鉴别对方的身份、协商加密算法和MAC算法以及在SSL记录协议中加密数据的加密密钥和初始向量。握手协议是建立SSL连接首先应该执行的协议,必须在传输任何数据之前完成。
SSL Change Cipher Spec Protocol中文名称:SSL修改密文协议,以实际建立对话用密码组的约定。SSL Change Cipher Spec Protocol是一个最简单的SSL相关协议,它只有一个报文,报文由值为1的单个字节组成。这个协议的唯一作用就是将挂起状态被复制到当前状态,改变连接将要使用的密文族。
SSL Alert Protocol中文名称:SSL告警协议,在客户端和服务器之间传输SSL出错消息。 SSL告警协议是将SSL有关的告警信息传送给通信的对方实体。SSL告警协议跟其它使用SSL的应用协议(如HTTP协议)一样,报文安装当前状态的被压缩和加密。
SSL Record协议中文名称:SSL记录协议,为不同的高层协议提供安全服务,HTTP、FTP等高层应用协议都可以在SSL协议上运行。顾名思义,Record协议是在描述SSL信息交换的过程中的记录格式。SSL协议是介于应用层和网络层之间,因此它会接收来自应用层的信息,并加以包装后交由下一层(也就是网络层来传送)。
SSL层: 借助下层协议的的信道安全的协商出一份加密密钥,并用此密钥来加密HTTP请求。TCP层:与web server的443端口建立连接,传递SSL处理后的数据。 接收端与此过程相反。 SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果
实践操作 1.安装vsftpd mount /media/cdrom #挂载光盘 rpm -ivh media/cdrom/RedHat/RPMS/vsftpd-2.0TAB #安装ftp
2.配置文件:vi /etc/vsftpd/vsftpd.conf 3.建立列表:userlist_enable=yes userlist_deny=no userlist_file=/etc/vsftpd.user_list
chroot_local_user=yes #禁止所有用户切换目录
4.openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
Country Name (2 letter code) [GB]:CN #两个字母的国家代号# State or Province Name (full name) [Berkshire]:Beijing #省份名称# Locality Name (eg, city) [Newbury]:beijing dax City #城市名称 # Organization Name (eg, company) [My Company Ltd]:x41 #公司名称# Organizational Unit Name (eg, section) []:x41 #组织名称# Common Name (eg, your name or your server's hostname) []:localhost #域名# Email Address []:goodcjh@2911.net #Email地址# Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:goodcjh An optional company name []:goodcjh 5.vi /etc/vsftpd/vsftpd.conf ssl_enable=yes allow_anon_ssl=no rsa_cert_file=/路径/vsftpd.pem |