利用OpenSSL实现IIS服务器安全通信

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第11卷第1期沙洲职业工学院学报V ol. 11, No.1 2008年3月 Journal of Shazhou Professional Institute of Technology Mar. , 2008 利用OpenSSL实现IIS服务器安全通信
汤建龙,陆国浩
(沙洲职业工学院,江苏张家港 215600)
摘要:简述了基于SSL的信息安全通道的原理及应用,介绍了利用OpenSSL软件包在windows 2000 server上IIS服务器搭建一条基于SSL的信息安全通道的过程,其中包括对CA服务的配置,WEB服务器端证书的申请、安装和配置,以及客户端和服务端SSL的通信过程。

关键词:OpenSSL;IIS;证书
中图分类号:TP39 文献标识码:A 文章编号:1009-8429(2008)01-0012-05
Realizing the Secure Communication on the IIS server with the OpenSSL
TANG Jian-long,LU Guo-hao
( Shazhou Professional Institute of Technology, Zhangjiagang 215600, China )
Abstract: This paper summarizes the principle and the application of SSL-based information security channel, introduces the process for the SSL-based information security channel with the Open SSL software package on the Windows 2000 server and the IIS server, including the CA service configuration, the application for, the installation as well as the disposition of the WEB server certificate, and the SSL course of communications between the client end and the server end.
Key words: OpenSSL; IIS; Certificate
0 引言
随着计算机网络技术的发展,互连网成为人们日常生活中获取信息的主要方式之一。

人们可以方便地从互连网上查阅信息、收发E-mail、购物和交易,在这些信息中有很多是重要或敏感的数据,怎样保证这些信息在网络上进行安全有效地传输成为现代计算机网络应用急需解决的问题。

现在网络上保证信息安全传输的方式主要采用HTTP协议和SSL协议相结合的方式。

服务器端采用支持SSL协议的Web服务器,客户端采用支持SSL协议的浏览器实现安全通信。

SSL协议在电子商务和网上银行领域获得了极大的发展,已成为Internet上保密通讯的工业标准。

利用开放源代码的OpenSSL 软件包建立网络安全通信是一种保护网络信息的有效方法。

1 SSL通信原理
SL(Secure Socket Layer安全套接层协议)是Netscape公司提出的基于公钥密码体制的网络安全传输协议。

它通常用于TCP/IP协议层和应用程序之间进行安全可靠连接,它能够在网络上提供一条安全的传输信道,该信道是保密的、经过验证的、可靠的并且能对信道中传输的信息进行完整性校验。

[1] SSL协议是一个分层的协议,共有两层组成。

处于SSL协议的底层的是SSL记录层协议(SSL Record Protocol),它位于可靠的传输层协议(如TCP和UDP)之上,用于封装高层协议的数据。

高层协议主要包括SSL握手协议(SSL Handshake Protocol)、改变加密约定协议(Change Cipher Spec Protocol)、报警协议(Alert Protocol)等。

SSL协议的层次结构如图1所示。

收稿日期:2008-01-19
作者简介:汤建龙(1973-),男,沙洲职业工学院电子信息工程系工程师;
陆国浩(1979-),男,沙洲职业工学院电子信息工程系讲师,硕士。

汤建龙,陆国浩:利用OpenSSL实现IIS服务器安全通信
HTTP FTP …
SSL握手协议 SSL改变加密约定协议 SSL报警协议
SSL记录层协议
TCP层
IP层
底层协议
图1 SSL协议的层次结构图
其中SSL握手协议允许服务方和客户方相互认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥,是SSL协议的核心。

SSL协议通信过程如图2所示。

图2 SSL协议通信过程示意图
SSL协议通信的过程一般要经过以下几个步骤完成:
(1)客户端向服务端发起对话,协商传送对称加密算法、密钥交换算法、摘要算法等。

(2)服务端确认通信采用的算法,并向客户端发送服务器数字证书,验证服务端的身份。

(3)客户端检查服务端的数字证书是否正确,通过CA机构颁发的数字证书验证了服务端的真实有效性后,生成了利用服务端的公钥加密的本次对话的对称密钥发送给服务端。

(4)服务端用自己的私钥解密获取本次通信的对称密钥。

(5)客户端和服务端利用协商的对称密钥加密交换信息,并发送给对方。

[2]
2 OpenSSL软件包简介
1995年,Eric A. Young和Tim J. Hudson开始编写后来具有巨大影响的OpenSSL软件包,这是一个没有太多限制的开放源代码的软件包,可以利用这个软件包完成SSL协议的安全通信过程。

1998年,OpenSSL项目组接管了OpenSSL的开发工作,并推出了OpenSSL的0.9.1版,到目前为止,最新的0.9.8的版本的OpenSSL算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都支持。

OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,可以在不同的平台使用SSL协议完成数据的安全通信。

OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得
13
汤建龙,陆国浩:利用OpenSSL 实现IIS服务器安全通信
OpenSSL具有广泛的适用性。

作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

[3]
3 利用OpenSSL软件包实现IIS服务器的安全通信
Microsoft的IIS服务器也提供了对SSL协议的支持,利用OpenSSL软件包可以在windows 2000 server 下的IIS服务器上构建基于SSL协议的安全信息通道。

首先下载windows下最新的Win32Open SSL-0_9_8g.exe,并将它安装到C:\OpenSSL下。

然后在命令窗口中用OpenSSL相关命令完成数字证书的配置、申请、生成和安装过程。

3.1 为CA创建一个1024位的RSA私有密钥
openssl genrsa -des3 -out ca.key 1024 //输入openssl genrsa命令创建一个1024位的私有密钥保存到ca.key文件中
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key: //输入私有密钥
Verifying - Enter pass phrase for ca.key: //再次输入私有密钥
3.2 用CA的RSA私有密钥创建一个自签名的CA证书[1]
openssl req -config openssl.conf -new -x509 -days 3650 -key keys/ca.key -out certs/ca.cer //输入openssl req命令利用私有密钥创建一个10年的X509格式的CA证书ca.cer
Enter pass phrase for keys/ca.key: //输入CA的私有密钥
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:CN //以下输入CA的相关信息
State or Province Name (full name) []:Jiangsu
Locality Name (eg, city) []:Suzhou
Organization Name (eg, company) []:IIS
Organizational Unit Name (eg, section) []:IIS
Common Name (eg, your websites domain name) []:IIS
Email Address []:iis@
3.3 IIS服务器上创建一个证书请求
启动管理工具中的“Internet信息服务”,在“Internet信息服务”界面中右击要申请数字证书的站点,在弹出的快捷菜单中选择“属性”,出现站点属性对话框。

单击属性对话框中的“目录安全性”页标签,然后单击“服务器证书”按纽。

出现“IIS证书向导”对话框,按向导提示生成证书请求,以文件形式保存在C:\certreq.txt。

IIS服务器上创建证书请求的过程如图3所示。

14
汤建龙,陆国浩:利用OpenSSL 实现IIS 服务器安全通信
15
图3 IIS 服务器上创建证书请求过程图
3.4 CA 对IIS 服务器证书请求签名
openssl ca -config openssl.conf -cert certs/ca.cer -in requests/certreq.txt -keyfile keys/ca.key -days 730 -out certs/iis.cer //输入openssl ca 命令利用服务端的请求文件和私有密钥创建一个2年的PKCS#12格式的服务端证书iis.cer
Using configuration from openssl.conf
Loading 'screen' into random state - done
Enter pass phrase for keys/ca.key: //输入CA 的私有密钥
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :PRINTABLE:'IIS'
organizationalUnitName:PRINTABLE:'IIS'
organizationName :PRINTABLE:'IIS'
localityName :PRINTABLE:'Suzhou'
stateOrProvinceName :PRINTABLE:'Jiangsu'
countryName :PRINTABLE:'CN'
Certificate is to be certified until Dec 19 07:23:45 2009 GMT (730 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries Data Base Updated
汤建龙,陆国浩:利用OpenSSL 实现IIS 服务器安全通信
16 3.5 将证书转化成x509格式
openssl x509 -in certs/iis.cer -out certs/iisx509.cer //输入openssl x509命令将PKCS#12 格式的iis.cer 证书转化成X509格式证书iisx509.cer
3.6 IIS 服务器导入证书
进入到站点属性对话框中,单击“服务器证书”,在“IIS 证书向导”对话框中,按提示操作即可安装服务器证书。

步骤如下:选择“处理挂起的请求并安装证书”;输入证书文件名时,单击“浏览”,选择生成的证书文件iisx509.cer ,按照向导执行直到完成安装。

4 通过SSL 访问IIS 服务器中的WEB 站点
在Windows 系统的IE 浏览器中输入以下网址https://WEB 服务器地址:SSL 端口 /index.htm ,其中https 表示浏览器要通过安全信息通道(即ssl,安全套接层)访问web 站点,并且如果服务器的SSL 端口不是默认的443端口,那么在访问的时候要指明SSL 端口。

在连接刚建立时浏览器会弹出一个安全警报对话框,这是浏览器在建立SSL 通道之前对服务器端证书的分析,用户单击“确定”以后,IE 客户端和IIS 服务端可以建立一条安全通道。

在IE 浏览器的底部状态栏中的小锁已经关闭,表示已经可以通过SSL 进行安全通信。

IE 客户端通过SSL 浏览IIS 服务端的结果如图4所示。

图4 IE 客户端通过SSL 浏览IIS 服务端结果图
5 结束语
如何保障敏感数据在Internet 上的安全通信是当今网络技术发展的热点问题之一,针对这一问题,不同的网络层次具有不同的解决方案。

SSL 协议是位于传输层与应用层之间,防止数据在传输过程中被窃听、篡改、伪造的安全措施。

本文在对SSL 协议工作原理进行分析的基础上,利用OpenSSL 软件包在IE 客户端和IIS 服务端实现了SSL 的安全通信,保证了信息在网络上的安全传输。

参考文献:
[1] William Stallings 著,杨明,等译.密码编码学与网络安全:原理与实践[M].北京:电子工业出版社,2006.
[2] Eric Rescorla 著,崔凯译.SSL 与TLS[M].北京:中国电力出版社,2002.
[3] 王志海,童新海,沈寒辉.OpenSSL 与网络信息安全——基础、结构和指令[M].北京:清华大学出版社,2007.。

相关文档
最新文档