远程协助
当前位置:重庆拓磊计算机运营维护中心 > 文档中心 > 操作系统 >
标题:OPENSSL服务_安全信息传输_Windows教程重庆数据加密    日期:2020-03-18

随着计算机网络技术的发展,方便快捷的互连网使人们渐渐习惯了从Web页上收发E-mail、购物和交易,这时Web页面上需要传输重要或敏感的数据,例如用户的银行帐户、密码等,所以网络安全就成为现代计算机网络应用急需解决的问题。

现行网上银行和电子商务等大型的网上交易系统普遍采用HTTP和SSL相结合的方式。服务器端采用支持SSL的Web服务器,用户端采用支持SSL的浏览器实现安全通信。

SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Inte.net上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。本文着重在SSL协议和SSL程序设计两方面谈谈作者对SSL的理解。

一. SSL协议初步介绍

安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。

通过以上叙述,SSL协议提供的安全信道有以下三个特性:

1) 数据的保密性

信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密匙要用一个安全的方法传送。加密过的数据可以公开地传送。

2) 数据的一致性

加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。

3) 安全验证

加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的标识。

SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。目前,大部分的Web 服务器及浏览器都广泛支持SSL 技术。当浏览器试图连接一个具有SSL认证加密的服务器时,就会唤醒一个SSL会话,浏览器检查认证,必须具备下面三个条件:

1)有一个权威机构发放证书,当然可以创建自我签订的证书(x509 结构)。

2)证书不能过期。

3)证书是属于它所连接的服务器的。

只有全部具备了这三个条件,浏览器才能成功完成认证。通过这三个条件,用户能确认其浏览器连接到正确的服务器,而不是连接到一些想盗取用户密码等重要信息的虚假的服务器上。

在当今的电子商务中还有一项被广泛使用的安全协议是SET协议。SET(Secure Electronic Transaction,安全电子交易)协议是由VISA和MasterCard两大信用卡公司于1997年5月联合推出的规范。SET能在电子交易环节上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺诈的可能性。SET交易分三个阶段进行:用户向商家购物并确定支付;商家与银行核实;银行向商家支付货款。每个阶段都涉及到RSA对数据加密,以及RSA数字签名。使用SET协议,在一次交易中,重庆IT外包,要完成多次加密与解密操作,故有很高的安全性,但SET协议比SSL协议复杂,商家和银行都需要改造系统以实现互操作。

在Linux 下,比较流行支持SSL认证的是OpenSSL服务器。OpenSSL项目是一个合作的项目,开发一个健壮的、商业等级的、完整的开放源代码的工具包,用强大的加密算法来实现安全的Socket层(Secure Sockets Layer,SSL v2/v3)和传输层的安全性(Transport Layer Security,TLS v1)。这个项目是由全世界的志愿者管理和开发OpenSSL工具包和相关文档。

如何在Linux下配置OpenSSL服务器,首先从OpenSSL的主页(http://www.openssl.org/)上下载openssl-version.tar.gz软件包来编译安装,与Apache服务器配合可以建立支持SSL的Web服务器,并可以使用自我签订的证书做认证,关于如何编译、安装OpenSSL服务器,可以参考一下OpenSSL HOWTO文档。

二. SSL 程序设计初步介绍

SSL 通讯模型为标准的C/S 结构,重庆电脑外包公司,除了在 TCP 层之上进行传输之外,与一般的通讯没有什么明显的区别。在这里,我们主要介绍如何使用OpenSSL进行安全通讯的程序设计。关于OpenSSL 的一些详细的信息请参考OpenSSL的官方主页 http://www.openssl.org。

在使用OpenSSL前,必须先对OpenSSL 进行初始化,以下的三个函数任选其一:

SSL_library_init(void);

OpenSSL_add_ssl_algorithms();

SSLeay_add_ssl_algorithms();

事实上 后面的两个函数只是第一个函数的宏。

如果要使用OpenSSL的出错信息,使用SSL_load_error_strings (void)进行错误信息的初始化。以后可以使用void ERR_print_errors_fp(FILE *fp) 打印SSL的错误信息。

一次SSL连接会话一般要先申请一个SSL 环境,基本的过程是:

1. SSL_METHOD* meth = TLSv1_client_method(); 创建本次会话连接所使用的协议,如果是客户端可以使用

SSL_METHOD* TLSv1_client_method(void); TLSv1.0 协议

SSL_METHOD* SSLv2_client_method(void); SSLv2 协议

SSL_METHOD* SSLv3_client_method(void); SSLv3 协议

SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 协议

服务器同样需要创建本次会话所使用的协议:

SSL_METHOD *TLSv1_server_method(void);

SSL_METHOD *SSLv2_server_method(void);

SSL_METHOD *SSLv3_server_method(void);

SSL_METHOD *SSLv23_server_method(void);

需要注意的是客户端和服务器需要使用相同的协议。

2.申请SSL会话的环境 CTX,使用不同的协议进行会话,其环境也是不同的。申请SSL会话环境的OpenSSL函数是

SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 参数就是前面我们申请的 SSL通讯方式。返回当前的SSL 连接环境的指针。

然后根据自己的需要设置CTX的属性,典型的是设置SSL 握手阶段证书的验证方式和加载自己的证书。

void SSL_CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )

设置证书验证的方式。

下一篇:Web服务器的安全和攻击防范(3)_Windows教程重庆IT桌面运维

联系我们
  • 客服热线:023-63522929(7 x 24h)
  • 在线客服:
  • 微信公众号 官方微博