如何在Web服务器上设置SSL?

如何在Web服务器上设置SSL?,第1张

采用SSL实现加密传输(1) 在默认情况下,IIS使用HTTP协议以明文形式传输数据,Web Service就是使用HTTP协议进行数据传输的。Web Service传输的数据是XML格式的明文。没有采取任何加密措施,用户的重要数据很容易被窃取,如何才能保护网络中传递的这些重要数据呢? SSL(Security Socket Layer)的中文全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。 SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。 注意SSL网站不同于一般的Web站点,它使用的是"HTTPS"协议,而不是普通的"HTTP"协议。因此它的URL(统一资源定位器)格式为"https://网站域名"。 下面讲解如何使用SSL来增强IIS服务器和Web Service的通信安全。 实现步骤如下。 1.为服务器安装证书服务 要想使用SSL安全机制功能,首先必须为Windows Server 2003系统安装证书服务。进入"控制面板",运行"添加或删除程序",接着进入"Windows组件向导"对话框,如图7-13所示。 图7-13 Windows组件向导 勾选"证书服务"选项,单击"下一步"按钮。 接着选择CA类型。这里选择"独立根CA"选项,如图7-14所示。单击"下一步"按钮,为自己的CA服务器起名,并设置证书的有效期限,如图7-15所示。 图7-14 选择CA类型 图7-15 设置CA信息 最后指定证书数据库和证书数据库日志的位置,如图7-16所示,单击"下一步"按钮。 图7-16 指定证书数据库 因为需要复制系统文件,所以需要插入Windows的安装光盘,如图7-17所示。安装证书服务需要停止当前的IIS运行,所以要单击"是"按钮。 图7-17 复制系统文件 最后,显示完成了证书服务的安装,单击"完成"按钮,如图7-18所示。 图7-18 安装完成7.9.2 采用SSL实现加密传输(2) 2.配置SSL网站 1)创建请求证书文件 要想让Web Service使用SSL安全机制,首先需将Web Service配置为网站。然后为该网站创建请求证书文件。 依次单击"控制面板"→"管理工具"按钮,运行"Internet 信息服务(IIS)管理器",在管理器窗口中展开"网站"目录,用鼠标右键单击要使用SSL的Web Service网站,在弹出的快捷菜单中选择"属性"命令,在网站属性对话框中切换到"目录安全性"选项卡,如图7-19所示, 图7-19 网站属性 然后单击"服务器证书"按钮,弹出"IIS证书向导"对话框。 在"IIS证书向导"对话框中选择"新建证书"选项,单击"下一步"按钮,如图7-20所示。 图7-20 服务器证书 选择"现在准备证书请求,但稍后发送"选项。单击"下一步"按钮,如图7-21所示。 图7-21 证书向导 在"名称"输入框中为该证书取名,然后在"位长"下拉列表中选择密钥的位长(默认为1024,长度越长保密性越好,但性能会越差)。单击"下一步"按钮,如图7-22所示。 图7-22 设置证书名称 设置单位信息,如图7-23所示,然后单击"下一步"按钮。设置公共名称,如图7-24所示。 图7-23 设置单位信息 图7-24 设置公共名称 注意 公共名称必须输入为访问站点的域名,例如要想用地址 https://www.maticsoft.com 访问Web Service,则此处必须填写为" www.maticsoft.com ",否则将提示使用了不安全的证书,导致站点无法访问。并且切记, www.maticsoft.com 和 www.maticsoft.com:8001 带端口的访问也是不同的,如果设置的是 www.maticsoft.com ,则网站设置为 www.maticsoft.com:8001 来访问也是无法使用的。 然后,单击"下一步"按钮,设置国家地区,如图7-25所示。 图7-25 设置国家地区 设置证书的单位、部门、站点公用名称和地理信息,一路单击"下一步"按钮。 最后指定请求证书文件的保存位置。这样就完成了请求证书文件的创建。 7.9.2 采用SSL实现加密传输(3) 2)申请服务器证书 完成上述设置后,还要把创建的请求证书文件提交给证书服务器。 在服务器端的IE浏览器地址栏中输入"http://localhost/CertSrv/default.asp"。 在"Microsoft 证书服务"欢迎窗口中单击"申请一个证书"链接,如图7-26所示。 接下来在证书申请类型中单击"高级证书申请"链接,如图7-27所示。 图7-26 申请证书 图7-27 选择证书类型 然后在高级证书申请窗口中单击"使用base64编码的CMC或PKCS#10……"链接,如图7-28所示。 图7-28 选择编码 接下来在新打开的窗口中,打开刚刚生成的"certreq.txt"文件,将其中的内容复制到"保存的申请"中,如图7-29所示。 图7-29 提交证书申请 单击"提交"按钮,显示"证书挂起"页面,如图7-30所示。 图7-30 证书挂起7.9.2 采用SSL实现加密传输(4) 3)颁发服务器证书 提交证书申请以后,还需要颁发服务器证书。依次选择"开始"→"设置"→"控制面板",双击"管理工具",再双击"证书颁发机构",在打开的对话框中选择"挂起的申请"选项,如图7-31所示。 (点击查看大图)图7-31 挂起的申请 找到刚才申请的证书,然后用鼠标右键单击该项,在弹出的快捷菜单中选择"所有任务"→"颁发"命令,如图7-32所示。 颁发成功后,选择"颁发的证书"选项,双击刚才颁发的证书,在弹出的"证书"对话框中的"详细信息"标签页中,单击"复制到文件"按钮,如图7-33所示。 图7-32 颁发证书 图7-33 复制到文件 弹出"证书导出向导"对话框,连续单击"下一步"按钮,选择"Base64编码X.509"选项,如图7-34所示。 (点击查看大图)图7-34 选择导出文件格式 单击"下一步"按钮,并在"要导出的文件"对话框中指定文件名,最后单击"完成"按钮。 4)安装Web服务器证书 重新进入IIS管理器的"目录安全性"标签页,单击"服务器证书"按钮,弹出"挂起的证书请求"对话框,选择"处理挂起的请求并安装证书"选项,单击"下一步"按钮,如图7-35所示。 (点击查看大图)图7-35 处理挂起的证书 指定刚才导出的服务器证书文件的位置,如图7-36所示。 (点击查看大图)图7-36 选择导出位置 接着设置SSL端口,使用默认的"443"即可,最后单击"完成"按钮。7.9.2 采用SSL实现加密传输(5) 5)配置网站启用SSL通道 在网站属性"目录安全性"标签页中单击安全通信栏的"编辑"按钮,然后,勾选"要求安全通道(SSL)"选项,如图7-37所示。 (点击查看大图)图7-37 启用网站SSL通道 忽略客户端证书:选择该选项可以允许用户不必提供客户端证书就可访问该站点。 接受客户端证书:选择该选项可以允许具有客户端证书的用户进行访问,证书不是必需的。具有客户端证书的用户可以被映射;没有客户端证书的用户可以使用其他身份验证方法。 要求客户端证书:选择该选项则仅允许具有有效客户端证书的用户进行连接。没有有效客户端证书的用户被拒绝访问该站点。选择该选项从而在要求客户端证书前,必须选择"要求安全通道(SSL)"选项。 最后单击"确定"按钮,即完成启用SSL了。在完成了对SSL网站的配置后,用户只要在IE浏览器中输入"https://网站域名"就能访问该网站。 注意 勾选上SSL后,必须用HTTPS来访问,而访问网站的端口也会使用SSL端口,默认为443。 如果在你访问站点的过程中出现无法正常访问的情况,那么请检查服务器防火墙是否禁止对SSl端口443的访问,这点比较容易被忽视,当然你也可以自己修改端口。 如果还是不能访问,出现提示"你试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序。HTTP错误403.1-禁止访问:执行访问被拒绝。"那么请检查网站主目录的执行权限,将执行权限设置为纯脚本即可,如图7-38所示。 图7-38 设置执行权限 6)客户端安装证书 如果IIS服务器设置了"要求客户端证书",则其他机器或用户想通过HTTPS访问和调用该Web服务,就需要将CA的根证书导入到客户端证书的可信任机构中,客户端才可以正常访问Web服务。 (1)选择"开始"→"运行"命令,在弹出的对话框中输入"mmc",出现如图7-39所示的界面。 图7-39 启动控制台 (2)选择"文件"→"添加/删除管理单元"命令,出现如图7-40所示的界面。 图7-40 添加/删除管理单元 (3)单击"添加"按钮,在可用独立管理单元列表中选择"证书"选项,出现如图7-41所示的界面。 (4)选择"计算机账户"选项,单击"下一步"按钮,选择"本地计算机"选项,然后依次单击"完成"→"关闭"→"确定"按钮。 图7-41 添加证书管理单元 进入当前用户的证书管理单元,界面如图7-42所示。 (点击查看大图)图7-42 选择证书导入位置 选中"个人"下的"证书节点"选项,单击鼠标右键,在弹出的快捷菜单中选择"所有任务"→"导入"命令,如图7-43所示。 (点击查看大图)图7-43 导入证书 选择我们刚才颁发的服务器证书cert.cer,将其导入到个人的存储位置,导入后如图7-44所示。 (点击查看大图)图7-44 导入到证书 7)SSL的优点与缺点 优点:它对Web服务提供的数据完整性没有任何影响,当值返回给客户时,值还是保持原样,并没有因在传输过程中使用了加密技术而发生变化。 缺点:它对站点的整体性能有影响,因为它需要进行很多加解密的数据处理。 0 0 0 (请您对文章做出评价)

但是HTTPS的通讯是加密的,所以默认情况下你只能看到HTTPS在建立连接之初的交互证书和协商的几个消息而已,真正的业务数据(HTTP消息)是被加密的,你必须借助服务器密钥(私钥)才能查看。即使在HTTPS双向认证(服务器验证客户端证书)的情况下,你也只需要服务器私钥就可以查看HTTPS消息里的加密内容。

1. 配置Wireshark选中Wireshark主菜单Edit->Preferences,将打开一个配置窗口;窗口左侧是一棵树(目录),你打开其中的Protocols,将列出所有Wireshark支持的协议;在其中找到SSL并选中,右边窗口里将列出几个参数,其中“RSA keys list”即用于配置服务器私钥。该配置的格式为:

,,,

各字段的含义为:

---- 服务器IP地址(对于HTTPS即为WEB服务器)。

---- SSL的端口(HTTPS的端口,如443,8443)。

---- 服务器密钥文件,文件里的私钥必须是明文(没有密码保护的格式)。

例如: 192.168.1.1,8443,http,C:/myserverkey/serverkey.pem

若你想设置多组这样的配置,可以用分号隔开,如:

192.168.1.1,8443,http,C:/myserverkey/clearkey.pem10.10.1.2,443,http,C:/myserverkey/clearkey2.pem

openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out serverreq.pem /

-outform PEM -subj "/O=ABCom/OU=servers/CN=servername"M而且你的服务器私钥文件serverkey.pem还在,则可以这样导出服务器私钥明文文件:

openssl rsa -in serverkey.pem >clearkey.pem

执行命令式需要输入私钥的保护密码就可以得到私钥明文文件clearkey.pem了。

(2)若你已把serverkey.pem丢了,但还有pkcs12格式的服务器证书库文件,该文件当初用类似于以下命令生成的:

openssl pkcs12 -export -in servercert.pem -inkey serverkey.pem /

-out tomcat.p12 -name tomcat -CAfile "$HOME/testca/cacert.pem" /

-caname root -chain

则,你可以用下面命令把服务器私钥从tomcat.p12(pkcs12格式)文件里导出来:

openssl pkcs12 -in tomcat.p12 -nocerts -nodes -out clearkey.pem

执行命令式需要输入pkcs12的保护密码。

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。

(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

(5)Web服务器利用自己的私钥解密出会话密钥。

(6)Web服务器利用会话密钥加密与客户端之间的通信。

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

如果需要将网站从http切换到https到底该如何实现呢?

这里需要将页面中所有的链接,例如js,css,图片等等链接都由http改为https。例如:http://www.baidu.com改为https://www.baidu.com

BTW,这里虽然将http切换为了https,还是建议保留http。所以我们在切换的时候可以做http和https的兼容,具体实现方式是,去掉页面链接中的http头部,这样可以自动匹配http头和https头。例如:将http://www.baidu.com改为//www.baidu.com。然后当用户从http的入口进入访问页面时,页面就是http,如果用户是从https的入口进入访问页面,页面即使https的。

SSL介绍:

安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。

SSL是Netscape于1994年开发的,后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。

目前有三个版本:2、3、3.1,最常用的是第3版,是1995年发布的。

在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。

SSL协议的三个特性

① 保密:在握手协议中定义了会话密钥后,所有的消息都被加密。

② 鉴别:可选的客户端认证,和强制的服务器端认证。

③ 完整性:传送的消息包括消息完整性检查(使用MAC)。

SSL的位置

SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

SSL的工作原理

握手协议(Handshake protocol)

记录协议(Record protocol)

警报协议(Alert protocol)

1、握手协议

握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。

每个握手协议包含以下3个字段

(1)Type:表示10种消息类型之一

(2)Length:表示消息长度字节数

(3)Content:与消息相关的参数

握手协议的4个阶段

1.1 建立安全能力

SSL握手的第一阶段启动逻辑连接,建立这个连接的安全能力。首先客户机向服务器发出client hello消息并等待服务器响应,随后服务器向客户机返回server hello消息,对client hello消息中的信息进行确认。

Client hello消息包括Version,Random,Session id,Cipher suite,Compression method等信息。

ClientHello 客户发送CilentHello信息,包含如下内容:

(1)客户端可以支持的SSL最高版本号

(2)一个用于生成主秘密的32字节的随机数。(等会介绍主秘密是什么)

(3)一个确定会话的会话ID。

(4)一个客户端可以支持的密码套件列表。

密码套件格式:每个套件都以“SSL”开头,紧跟着的是密钥交换算法。用“With”这个词把密钥交换算法、加密算法、散列算法分开,例如:SSL_DHE_RSA_WITH_DES_CBC_SHA, 表示把DHE_RSA(带有RSA数字签名的暂时Diffie-HellMan)定义为密钥交换算法;把DES_CBC定义为加密算法;把SHA定义为散列算法。

(5)一个客户端可以支持的压缩算法列表。

ServerHello服务器用ServerHello信息应答客户,包括下列内容

(1)一个SSL版本号。取客户端支持的最高版本号和服务端支持的最高版本号中的较低者。

(2)一个用于生成主秘密的32字节的随机数。(客户端一个、服务端一个)

(3)会话ID

(4)从客户端的密码套件列表中选择的一个密码套件

(5)从客户端的压缩方法的列表中选择的压缩方法

这个阶段之后,客户端服务端知道了下列内容:

(1)SSL版本

(2)密钥交换、信息验证和加密算法

(3)压缩方法

(4)有关密钥生成的两个随机数。

1.2 服务器鉴别与密钥交换

服务器启动SSL握手第2阶段,是本阶段所有消息的唯一发送方,客户机是所有消息的唯一接收方。该阶段分为4步:

(a)证书:服务器将数字证书和到根CA整个链发给客户端,使客户端能用服务器证书中的服务器公钥认证服务器。

(b)服务器密钥交换(可选):这里视密钥交换算法而定

(c)证书请求:服务端可能会要求客户自身进行验证。

(d)服务器握手完成:第二阶段的结束,第三阶段开始的信号

这里重点介绍一下服务端的验证和密钥交换。这个阶段的前面的(a)证书 和(b)服务器密钥交换是基于密钥交换方法的。而在SSL中密钥交换算法有6种:无效(没有密钥交换)、RSA、匿名Diffie-Hellman、暂时Diffie-Hellman、固定Diffie-Hellman、Fortezza。

在阶段1过程客户端与服务端协商的过程中已经确定使哪种密钥交换算法。

如果协商过程中确定使用RSA交换密钥,那么过程如下图:

这个方法中,服务器在它的第一个信息中,发送了RSA加密/解密公钥证书。不过,因为预备主秘密是由客户端在下一个阶段生成并发送的,所以第二个信息是空的。注意,公钥证书会进行从服务器到客户端的验证。当服务器收到预备主秘密时,它使用私钥进行解密。服务端拥有私钥是一个证据,可以证明服务器是一个它在第一个信息发送的公钥证书中要求的实体。

其他的几种密钥交换算法这里就不介绍了。可以参考Behrouz A.Forouzan著的《密码学与网络安全》。

1.3 客户机鉴别与密钥交换:

客户机启动SSL握手第3阶段,是本阶段所有消息的唯一发送方,服务器是所有消息的唯一接收方。该阶段分为3步:

(a)证书(可选):为了对服务器证明自身,客户要发送一个证书信息,这是可选的,在IIS中可以配置强制客户端证书认证。

(b)客户机密钥交换(Pre-master-secret):这里客户端将预备主密钥发送给服务端,注意这里会使用服务端的公钥进行加密。

(c)证书验证(可选),对预备秘密和随机数进行签名,证明拥有(a)证书的公钥。

下面也重点介绍一下RSA方式的客户端验证和密钥交换。

这种情况,除非服务器在阶段II明确请求,否则没有证书信息。客户端密钥交换方法包括阶段II收到的由RSA公钥加密的预备主密钥。

阶段III之后,客户要有服务器进行验证,客户和服务器都知道预备主密钥。

1.4 完成

客户机启动SSL握手第4阶段,使服务器结束。该阶段分为4步,前2个消息来自客户机,后2个消息来自服务器。

1.5 密钥生成的过程

这样握手协议完成,下面看下什么是预备主密钥,主密钥是怎么生成的。为了保证信息的完整性和机密性,SSL需要有六个加密秘密:四个密钥和两个IV。为了信息的可信性,客户端需要一个密钥(HMAC),为了加密要有一个密钥,为了分组加密要一个IV,服务也是如此。SSL需要的密钥是单向的,不同于那些在其他方向的密钥。如果在一个方向上有攻击,这种攻击在其他方向是没影响的。生成过程如下:

2、记录协议

记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务:

(1)保密性:使用握手协议定义的秘密密钥实现

(2)完整性:握手协议定义了MAC,用于保证消息完整性

记录协议的过程:

3、警报协议

客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/540323.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-26
下一篇2023-06-26

发表评论

登录后才能评论

评论列表(0条)

    保存