分类
网络新闻

情人节将至,网上购物谨防成为垃圾邮件目标

2012年的情人节就要到了,很多人想在节日里购买一些物美又价廉的礼物送给朋友。但是,垃圾邮件制造者也正在密切关注、寻找情人节期间特价商品的购买者,所以,这个期间如果您需要在线购买打折商品,那么请一定要提高警惕!

随着情人节的临近,赛门铁克研究人员检测到的垃圾邮件数量开始大幅增加。珠宝、晚餐和贵重礼品等商品以难以置信的低折扣出售,通常是情人节垃圾邮件的主题,其他常见的虚假促销信息还包括网络药品、假冒电子贺卡、礼品卡、巧克力和鲜花,所有这些垃圾邮件的目的不外乎是获取用户的个人和财务信息。

以某一垃圾邮件为例,该邮件通过承诺附赠免费礼物来吸引用户购买金、银或白金珠宝首饰。点击链接后,用户会被自动跳转至另一页面,在这个页面上,用户会被要求填写个人信息以领取他们所选择的赠品。

情人节将至,网上购物谨防成为垃圾邮件目标-1

 

社交网络垃圾邮件在获取用户个人信息方面,丝毫不逊于其他信息盗窃技术。针对情人节的虚假应用层出不穷,这些应用通常将用户引至某一调查网站。下面是此类虚假应用的一个例子。

情人节将至,网上购物谨防成为垃圾邮件目标-1

 

 

赛门铁克(Symantec)建议互联网用户在进行网络购物时,遵循下列做法,以避免遭到钓鱼攻击:

· 不要打开未经许可且来源不明的电子邮件。

· 不要直接点击电子邮件内的任何链接,而要在地址栏中键入该链接。

· 不要打开自称为情人节贺卡、电子贺卡等的附件。

· 在有SSL证书保护的可靠网站上进行购物。

· 安装有效的防病毒和反垃圾邮件解决方案的软件。

分类
公司新闻

赛门铁克SSL证书呈现最大的增长势头,EV SSL证书增长52.25 %

赛门铁克公司宣布,根据2012年1月Netcraft的调查显示,它取得了最大整体证书量的增长,共获得10400张证书。赛门铁克还以占据65.6%的市场份额领跑扩展验证EV  SSL证书的市场,进一步表明,当谈到网络安全,大多数互联网企业信赖赛门铁克。

EV SSL证书的应用,以惊人的速度继续增长。与2011年1月相比较, EV SSL证书年同比增长52.25 %。赛门铁克公司是提供EV SSL证书的供应商,在EV SSL市场保持了65.6%的市场份额。1月Netcraft的2012年的报告还显示,相对于其他认证机构的渠道组合,赛门铁克更积极于网络推进EV SSL证书的应用。

 

分类
知识中心

SSL证书和数字证书安全服务概述

随着Internet的分布越来越广泛,安全问题也日益突出,保护传送数据的需求也越来越强烈。在今天的Internet上,最常见的安全是通过使用数字证书实现的。数字证书可以在一个不信任的网络上辨识一个客户和服务器,并且可以加密数据。这里将讨论其采用的技术以及微软提供的确保Internet安全的工具。

具体的内容有:

Secure Sockets Layer (SSL) 的介绍以及为什么它是安全的基础

加密以及它在客户端和服务器端的角色

客户证书映射的一个介绍和建议

Internet上的证书和证书授权

安装微软Certification Authority服务器的介绍

Secure Sockets Layer (SSL)简介

通过使用X.509 certificates, RSA Public Key Ciphe和其它额外的安全特性来进行通信和认证,Internet Information Services 5 为Secure Sockets Layer (SSL) 3.0提供了一个高性能的实现。SSL证书可以让一个客户和服务器以协商好的安全和认证级别来进行通信。当一个连接被初始化时,SSL证书需要协商好一个对称(symmetric )的session key和认证级别。这个对称的key是用来加密和解密数据的。在连接正在被建立的时候,还需要进行客户/服务器的认证。当协商完成后,客户和服务器可以通过加密数据,以一个安全的方式进行数据传送。

加密通信

加密是通过令数据变得不规则以确保它不容易被非相关的人阅读。Internet Information Services 5提供的加密特性和Internet Information Server 4类似,除了两个例外:服务器证书现在和单个的网站绑定在一起,现在还有一个新的向导可以令服务器证书的设置变得更加简单。

在Internet Information Services 5中设置SSL加密和Internet Information Server 4是一样的,除了一个例外:你现在可以使用Server-Gated Cryptography SGC证书和加密。SGC在银行业的站点使用,通过它可以在Internet Information Services的出口版本中使用128位加密。

客户和服务器的加密通信需要在两端进行设置。客户或者Web浏览器,可以支持40位或者128位加密,或者两者都支持,而服务器只可以在安装服务器证书后才可以加密通信。

128位和40位的客户

与Microsoft Internet Explorer 5.0类似,Internet浏览器支持两个加密的级别:40位和128位加密。40位的加密要弱一些;对于出口版本来说(即加拿大和美国以外的国家),这是最大的加密级别,因为美国政府认为强的加密级别对于国家安全是一个威胁,而北美版本的Internet Information Services, Internet Explorer和Netscape Navigator则支持128位加密

要知道Internet Explorer安装的是哪一个级别的加密,只需要点菜单中的帮助,然后选择About Internet Explorer的选项就可以了。

加密和认证

虽然加密和认证通常都放在一起讨论,但它们是两个不同的主题。认证是确认在通信中的个人或者进程身份的方法。认证可以是单向的,这是在一方确认对方的身份,或者是双向的,这时双方都需要确认对方的身份。

使用服务器证书

一个服务器证书是你的服务器的一个电子ID,它可让你的服务器执行两个重要的功能来确保通信的安全:为用户标识自己和加密传送到这些用户的信息。SSL加密需要一个服务器证书被绑定到你的网站中。该证书包含有“Keys”,在你的网站和请求安全信息的用户间建立一个安全连接时,需要用到这些keys。

在Internet Information Server 4中,服务器证书是被绑定到Web服务中的,并不是个别的网站,除非一个网站拥有一个独立的IP地址。在Internet Information Services 5中,你可以绑定服务器证书到任何的网站,不过每个站点只可以设置一个证书。还有,在Internet Information Server 4中,你需要使用Key Manager来绑定证书。在Internet Information Services 5中,你可以使用Web Site Certificate向导,令整个过程变得更加简单。该向导可引导你设置请求和安装一个证书的全过程。

客户证书映射

客户端的证书和服务端的是等价的。客户证书是一个数字ID,该ID是用来向你的Web服务器标识一个客户的,并且可让你的服务器使用客户证书映射。客户证书映射将一个客户的证书映射为一个Windows用户帐号,并且可以自动认证和允许带有这些证书和正确帐号的用户进行访问。

例如,一个称为Vicky的用户拥有一个客户证书,她点击了一个到该公司网站的雇员信息部分的连接,她的浏览器就会将其证书信息放到其服务器请求的头部,服务器就会检索该证书的一个映射。如果用户的证书是正确的,并且映射到一个有效的Windows用户帐号,而且该帐号允许访问这些内容,Vicky就会被自动地认证,请求的数据也会出现在她的浏览器中。

证书映射的类型

在Internet Information Services 5中,有两类的证书映射:一对一和多对一。一对一映射将一个特别的证书和某个Windows用户帐号联系起来。客户证书的一个拷贝必须放到服务器上以作认证之用。如果用户使用另一个客户证书作同样的请求,将需要重新建立映射。

多对一的映射仅使用证书中的某些信息,并且与一定的标准作对比以进行用户帐号映射。只要该证书符合这些标准,认证就会成功。这样多个证书就可以被映射到一个用户帐号,而且证书的拷贝无需要存放到服务器中。

两者之间的区别可以用以下的情况说明。当一个带证书的请求到来时,服务器有两种的方式来映射它。服务器可以对自己说“我需要查找一个2002年3月建立的证书,它的序列号是ZXV345T4689AS234,如果我找不到该证书,我就会发送一个403-禁止的错误信息,并且处理完毕”,或者,服务器也可以这样“我正在查找XYZ Certificate公司建立的任何证书,它是为ABC公司建立的,在2002年3月1日到2002年6月1日之间。如果我找到类似的证书就可以了”。第一种情况就是一对一映射,后者是一个多对一映射。

很容易看到,一对一映射更加安全,不过它需要更多的设置和维护工作,而多对一的安全性要差一点,不过可以更加灵活,而且需要较少的管理维护工作。

Fortezza卡和证书映射

智能卡上带有证书的一个拷贝,并且可以用作映射。将证书的信息拷贝到卡上后,证书的处理就象其它的客户证书一样。通常一对一的映射被用在Fortezza卡上,因为它是为更高的安全性而设计的。

通过SSL进行基本的认证

SSL加密可以和基本的认证混合使用以加强安全性。SSL通常是用来加密与Web服务之间的数据传输的–例如,在一个在线购买中加密一个用户的信用卡密码。当SSL和基本的认证混合使用时,用户的帐号和密码也是加密的,这样就更加安全。

对于使用非微软浏览器的客户来说,带SSL的基本认证就更加有利了。这些非微软浏览器的客户可以被Internet Information Services认证,它们的用户名和密码也不会以明文的方式在Internet上传输。

数字证书

Internet Information Services还支持X.509数字证书以作访问控制。这些数字证书必须是经由一个信任的证书授权建立,并且必须在客户的计算机上维护。它们的运作和一个ID卡类似–这就是在客户企图访问Web服务器的一个资源时,它会送出数字证书的信息。不过,相对于简单的ID卡证书来说,它多了一层的安全性。在产生数字证书时,用户必须提供一个密码。以后使用该证书时,客户还必须再次输入该密码以确保客户是该数字证书的真正拥有者。

使用数字证书需要一个适当的协议,例如SSL协议,该协议通常需要存在于客户和服务器上。通常服务器都会提供一个证书给客户以表明服务器或者域名的身份。

选择你的映射方法

选择哪种映射方法和几个方面有关,不过主要的两点是安全级别的需要和可用的管理资源。如果你需要高的安全性,那么一对一映射是最理想的,只要你可以付出资源来管理它。如果你的管理资源有限,需要映射的客户也很多,那么多对一就很适合,只要你需要的安全性不是特别高。具体选择哪种方式,以下是一些建议:

。小型网络,对安全性要求不高;无需证书。即使网络小,还是选择多对一的方式,因为对信息的安全性要求不高。你可以创建一个简单的证书并且使用一个软盘来共享它。

。小型网络,对安全性要求不高;需要证书。如果你需要知道谁正在访问什么,你可以使用多对一的映射,其中一个标准是使用用户名,并且映射到单个的用户帐号。这样需要更多的工作,不过仍然比一对一好,因为用户可以替换证书而无需要重新设置

。小型网络,带有保密的信息,需要证书。在这种情况下,最好使用一对一的映射,并且映射验证到个别的帐号。这意味着如果用户使用一个另外的证书,就必须重新设置一个新的映射。不过这里假定用户的数目比较少。你也可以使用Windows 2000的Active Directory认证特性,要了解更多的相关信息,可以查看Windows 2000的文档。

。大型网络,对安全性的要求不高;不需要证书。解决的方案和小型的网络一样,不过你可以为每个部门或者组选择一个不同的验证。

。大型网络,带有保密的信息;需要证书。从安全的角度来说,你需要选择一对一。不过,为了简化管理,你可以可以选择多对一。主要是按你的需要,如果你使用一对一,可以考虑使用Active Directory来简化管理。

。对安全性要求很高:如果是这样,你可以选择使用Fortezza智能卡的一对一映射。你只需要将智能卡放入到读取器就可以进去。不过,如果你有大量的客户,这将是一个管理的噩梦。

服务器证书和证书授权

要激活Internet Information Services的SSL安全特性,你必须获得并安装一个有效的服务器证书(server certificate)。服务器证书是包含有你的Web服务器信息的数字证书,组织会验证服务器的Web内容以及你的站点的全域名(FQDN)。它的运作和传统的证书一样,服务器证书可以令用户验证你的服务器,检查Web内容的有效性,并且建立一个安全的连接。

数字证书是通过使用FQDN指派给一部主机的。因此证书与任何的IP地址限制无关。你可以修改主机的IP地址而不会对证书有任何的影响。例如,如果http://www.company.com这个网站拥有一个证书,那么无论该域名是指向IP地址192.168.110.123还是IP地址123.110.168.192,或者网站的IP地址在证书建立和安装后被修改,都没有关系。

服务器证书的成功在于用户是否信任证书中的信息的有效性。因此,证书通常是通过一个互相信任的第三方组织来建立的,它被称为Certificate Authority (CA)。CA的主要职责是确认该组织注册到了一个证书。这样就可以确保证书中的标识信息的有效性。

要做到这一点,一个CA必须拥有一个CA证书。CA证书可标识建立服务器证书的CA,从而确认服务器的验证。当然,在这种层次关系中,与其它的层次关系一样,必然有一个是顶层的。那么谁来验证CA的证书呢?在最顶部的CA必须签署自己的证书,这是由于在定义上来说没有更高层次的CA。一个自己签署的CA被称为一个root certificate(根证书)。根证书是一个带有.crt扩展名的文本文件。

可供选择地,一个组织可以建立它自己的服务器证书而无需一个CA来签署它们。例如,在一个大型公司的内部网中处理雇员薪水和利益信息,公司可以维护一个证书服务器,并且假定负责验证登记者的身份并且建立服务器证书。

证书服务器

要认证一个带有证书的服务器(该证书由某个特别的CA建立),可户需要验证该CA处于Web浏览器的可信任CA的列表中。大部分常见的CA根证书已经安装在大多数的Web浏览器中。

要查看Microsoft Internet Explorer 5信任的CA,可以执行以下的步骤。

1。打开Microsoft Internet Explorer 5

2。在工具菜单上,点击Internet选项

3。选内容标签

4。在证书栏中按Authorities的按钮

证书管理的对话框中的三个标签包含了这个Internet Explorer拷贝所知道的全部证书列表。

每个证书都包含有主题和证书建立者的信息,还有它的有效性和开始日期、有效日期,还有为其它客户或者服务器标识证书的加密指纹。

要查看一个数字证书中的信息,可以选择一个证书然后按查看证书的按钮。

要为你的Web服务器增加一个新的CA到被信任的授权列表,你必须显式地加入CA的证书到你的Web服务器中,它被称为根证书。你可以使用Microsoft Internet Explorer version 4.0以上或一个称为Ilisca.exe的命令行工具来为你的服务器加入一个新的根证书。

证书的通配符映射

通配符证书允许多个带有同样域名或者子域名的主机使用同样的数字证书。例如,使用通配符证书,一个证书可以建立在*.domain.com或者domain.com上,这样它就可以用来支持诸如http://www.domain.com和http://www2.domain.com的站点。要记住在一般的情况下,一个证书只能建立在一个指定的主机上。例如http://www.domain.com。

证书通配符映射的好处是你只需要购买一个证书就可以在多个网站上使用,对于保护一个网站来说这样的成本较低而且很值得。不过并不是全部的第三方CA都允许你申请一个可以用在多个主机上的证书。这样的一个证书有一个共同的名字,例如*.domain.com 或者 domain.com。并不是全部的Web浏览器或者Web服务器支持它们的使用。

当一个Netscape的客户检查该证书中的主机名时,它使用一个脚本扩展过程来查看它是否匹配。在给出的例子中,任何以domain.com结束的主机都可以接受。不过,Internet Explorer并没有实现通配符证书名字检查,所以 Internet Explorer的客户将接收到一个警告的信息,提示该主机名并不和证书中的匹配。在某些情况下,通配符可以在Internet Explorer 4.0或以上运作,不过微软宣称Internet Explorer并不可以在通配符下工作,因此并不能确保通配符可以在任何的微软产品下工作。

分发证书

一个组织需要为客户或者厂商提供证书,有三个条件。首先,它可以创建自己的内部CA,以满足它自己的安全和可用性需要。第二,它可以将它的CA需求输出给第三方,例如VeriSign或者Thawte。第三,它可以与一个第三方的CA建立一个相连的CA,这样可允许该组织为终端用户建立证书,同时也可以保障第三方CA的安全性。

例如,一个厂商可能决定为它的员工建立证书,而办公室处于三个不同的州,或者一个顾问公司要为它的卖方建立证书以控制访问公司的外部网。这个例子中,该组织可以选择领先的厂商,例如BBN (GTE), Chrysalis或者Atalla购买安全的key管理硬件,或者选择购买证书授权软件,例如Microsoft, Xcert, 或者Nortel Entrust的。这些技术可以允许该组织根据其需要,建立一定安全级别的包含有客户信息的证书。

不幸的是,大多数的浏览器在开始的时候都不认识这些证书。每个需要检验证书可信性(这些证书由内部的CA建立)的浏览器都将需要被修改,以在签署证书的时候响应该组织的root key。这意味着每个Microsoft Internet Explorer, Microsoft Outlook和Netscape Communicator的拷贝都需要加入该组织CA的root key,而且必须在数据被这些证书签名前加入,这样它们才可以被信任。在一个小的或者可控制的环境下,这是没有问题的。不过在一个异类、多平台的环境下,例如Internet,这是不可能的。

一个相连的证书程序允许一个第三方的CA传送全部和第三方CA相关的信任到该组织的CA。所有信任第三方CA提供的数字证书的软件将会立刻信任相连CA建立的证书。

安装和设置证书服务

证书授权服务器是Windows 2000 Server的一个附件,它放在Windows 2000 Server的安装盘上。它可让你为建立和管理X509版本3的数字证书创建一个自定制的服务以作证书之用。你可以为Internet或者公司的内部网创建服务器证书,从而可让你的组织完全控制它自己的证书管理策略。

它包含了一个向导来设置安装。要注意的是:你将需要在安装的时候提供精确的信息。在安装证书服务前先查看一下需要的信息。

要使用常用的设置选项来安装证书授权服务器附件,你可以使用以下的步骤:

1。将Windows 2000 Server CD-ROM放入光驱,然后选择Install Add-on Components.

2。Windows组件向导将会提示你选择安装哪些组件。选择证书服务的选择框。你将会马上看到一个对话框,提示你一旦安装证书服务,该计算机将不能重命名,也不能加入或者由一个域中移走。

在选择YES来继续前,你应该考虑一下以下几点:

。由于在安装证书服务后,除非你重新安装Windows 2000,否则你将不能修改计算机的名字,因此你需要确保你对当前的名字感到满意,或者在继续前先换一个名字。

。由于在安装证书服务后,你将不能令计算机加入到一个域或者将它由域中移走,你将需要确保你对当前域或者子域的名字感到满意,否则在继续前先换一个名字。

。在继续前你要确保计算机加入到适当的域中

3。接着,在Windows组件向导中选择证书授权类型,有四种类型:

Enterprise root CA

Enterprise subordinate CA

Stand-alone root CA

Stand-alone subordinate CA

一个网络上的第一个CA必须是一个root CA。要创建一个Enterprise CA,必须允许Active Directory。一个Stand-alone CA 并不需要Active Directory。在你的局域网中可选择Stand-alone CA 来实现证书服务。

证书授权服务不但定义证书服务功能如何在你的服务器上运作,还定义了你将需要如何来管理它。

4。在Windows组件向导中选择CA Identifying Information。输入适当的数据然后继续安装。

5。在Windows组件向导中选择Data Storage Location。我建议使用默认的位置就可以了。按Next继续。

6。如果你已经在你的计算机上安装并运行Internet Information Services,按Yes继续。微软的证书服务将会提示你在继续安装前,必须停止Internet Information Services。Windows组件向导将会设置组件,并且将文件拷贝到你的机器上。你可以通过安装进度条来监视安装的过程。

7。当Windows组件向导提示你已经完成配置所选的组件时,按Finish。

这篇文章详细讨论了Windows 2000中的证书服务,要记得在企图安装证书服务前,先要确认所需要的全部信息。

分类
公司新闻

VeriSign信任签章将过渡到新的诺顿(Norton)安全签章

2012年4月, VeriSign信任签章将过渡为新的诺顿安全签章,由VeriSign提供支持。
不管搜索浏览到新的诺顿签章还是购买新的诺顿签章,让你的客户保持平和心态,因为它是互联网上最具公认的信任标识。您的客户已经投入了时间和金钱在他们的网站上,去建设海量的内容,进行搜索引擎优化,并投资网络广告。

越来越多的终端客户认为诺顿安全签章保障他们在线做生意安全和可信的必不可少的工具,当用户看到诺顿安全签章时,他们知道,这是可信的链接,可信的站点和可信的交易。
赛门铁克可信服务的合作伙伴将在2012年4月开始销售与诺顿安全签章相关的产品。

更多VeriSign信任签章(VeriSign Trust Seal)介绍请查看:https://www.ert7.com/verisign/ssl/2998.html

 

分类
知识中心

如何利用数字证书实现的安全SSL访问(二)

要解决一个问题,就要发挥刨根问底的精神,把问题彻底解决。这里使用了第三方程序集WebPageSecurity.dll来协助解决SSL的这个问题。下载地址为http://www.codeproject.com/KB/ aspnet/WebPageSecurity/WebPageSecurity_Src.zip。需要注意的是,输入The Code Project网站(http://www.codeproject.com/)的注册账号之后才能下载。

具体的实现步骤如下。

(1)首先将程序集添加到Bin文件夹。编译项目文件包WebPageSecurity,就可以获得WebPageSecurity.dll了。即添加WebPageSecurity.dll到Bin文件夹。

(2)配置Web.Config。在<configSections>节点下加入以下配置:

  1. <section name=”secureWebPages” type=”Ventaur.
    Web.Security.Configuration.SecureWebPageSettings,
    WebPageSecurity”/>

在<configuration>节点下加入以下配置:

  1. 01:  <secureWebPages mode=”RemoteOnly”
    ignoreHandlers=”WithStandardExtensions”>
  2. 02:     <files>
  3. 03:         <add path=”Login.aspx” />
  4. 04:         <add path=”Legal/Privacy.aspx” />
  5. 05:         <add path=”Legal/Copyright.aspx” secure=”Ignore” />
  6. 06:     </files>
  7. 07:     <directories>
  8. 08:         <!–<add path=”/” recurse=”True” />–>
  9. 09:         <add path=”Admin” recurse=”True” />
  10. 10:         <add path=”Admin/Info/” secure=”Insecure” />
  11. 11:     </directories>
  12. 12:  </secureWebPages>

在上面的代码中,第1行加入secureWebPages配置节点。第2行给具体的页面文件使用SSL加密,默认情况是使用SSL。第5行配置不需要SSL加密的页面,secure=”Ignore”表示忽略此页面使用SSL加密。第7行给文件夹下的所有文件使用SSL加密。第10行配置不需要SSL加密的文件夹,secure=”Ignore”表示忽略此文件夹下的所有文件,使用SSL加密。

小知识:Mode值。Mode值主要有以下4种选择情况,分别是On(Default),RemoteOnly,LocalOnly,Off。其中,On(Default)表示来自各个方向的请求使用SSL;RemoteOnly表示来自于远程客户的请求使用SSL网站部署到服务器上;LocalOnly表示在本地调试时使用;Off表示SSL不可用。

(3)添加Module到Application。在<httpModules>节点下加入以下配置:

  1. <add name=”WebPageSecurity”
  2.  type=”Ventaur.Web.Security.
    SecureWebPageModule, WebPageSecurity” />

(4)新建基类BasePage.cs,让所有的ASPX页面继承于BasePage类。

当然,在实际测试过程中,总会遇到这样或那样的麻烦。下面就是测试过程中遇到的一个典型问题。在一台机器上配置好了SSL,由于项目中用到了WebPageSecurity(一个HTTP/HTTPS自动切换的httpmodule),所以在web.config文件中做了相应的设定。弄完后,测试页面,页面没有自动切换。郁闷啊,当时耗费了将近半天时间。

最后检查web.config中的配置发现,把<httpmodules>遗漏了。一查,web.config这个文件里根本没有<httpmodules>的配置,至此,原因终于大白。

通过上述测试,无需在IIS上对每个页面进行配置,SSL加密页面与非SSL页面就可以自动转换了。尤其是对于有大量SSL页面的时候,上面的解决方案可供选择。当我们在网络上轻松游走于各大银行网站的时候,适当想想这些背后的代码方案,还是挺有意思的。原来,安全随时就在我们身边,风景也随时就在我们身边,只是我们的生活太匆忙而忽略了!

分类
知识中心

如何利用数字证书实现的安全SSL访问(一)

在网络上,信息在传递过程中会经过其他计算机。随着网上支付的不断发展,人们对信息安全的要求越来越高。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。因此Netscape公司提出了SSL协议,旨在达到在开放网络上安全保密地传输信息的目的,这种协议在Web上获得了广泛的应用。在网络安全应用过程中,经常会遇到和SSL相关的问题。下面列举两个典型的SSL开发应用,详细剖析SSL安全应用的内部奥秘。

1.揭开SSL安全开发的神秘面纱

SSL又叫”安全套接层(Secure Sockets Layer)协议”,是一种在客户端和服务器端之间建立安全通道的协议。SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的HTTP协议,我们在与网站建立SSL安全连接时使用HTTPS协议,即采用https://ip:port/的方式来访问。

IETF(http://www.ietf.org/)对SSL做了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS 1.0与SSL 3.0的差别非常微小。以下是服务器传输的证书,主要通过Wireshark抓取IE浏览器和Gmail的通信过程所得

我们可以看到”SSLv3″、”Certificate”等字眼。不错,这里就是SSL通信过程了。SSL安全套接层协议包括服务器认证、客户认证(可选)、SSL链路上的数据完整性和SSL链路上的数据保密性。在实际应用中,SSL主要使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性。SSL安全协议主要提供3方面的服务:

认证用户和服务器,使得它们能够确信数据将被发送到正确的客户机和服务器上。

加密数据以隐藏被传送的数据。

维护数据的完整性, 确保数据在传输过程中不被改变。

对于电子商务应用来说,使用SSL可保证信息的真实性、完整性和保密性。想到这里,我们自然会思索:电子商务网站、银行网站或证券公司的网站,这样的应用也应该差不多吧!答案是肯定的。这里就列举几个典型的应用,看看其中有些什么玄机。

2.使用ASP.NET实现SSL安全转向应用

银行的网站包括了机密性页面,比如网上支付的金额,也包括了非机密页面,比如某某行长造访某地。因此,有的页面需要SSL,有的页面不需要SSL。对于某些安全性较高的网页,如网上支付或用户登录页面,可能会使用到HTTPS(SSL/TLS)来提高安全性,而其他的页面则不需要。

那么,如何自动快速地在HTTPS和HTTP之间进行切换呢?这里介绍如何在ASP.NET中强制某action使用HTTPS和如何进行向HTTPS页面的跳转。我们先实现强制一个action使用HTTPS。这里写了一个RequireHttpsAttribute,它的作用是将非HTTPS连接转换成HTTPS连接,这样所有使用了RequireHttps这个filter的controller都会强制使用HTTPS连接。

RequireHttpsAttribute是个什么东东呢?首先来看看这段代码:

  1. 01:  public class RequireHttpsAttribute :
    AuthorizeAttribute
  2. 02:  {    /// 重写OnAuthorization方法
  3. 03:      public override void OnAuthorization
    (AuthorizationContext filterContext)
  4. 04:      {
  5. 05:          if (!filterContext.HttpContext.
    Request.IsSecureConnection)
  6. 06:          {
  7. 07:              string path = filterContext.
    HttpContext.Request.Path;
  8. 08:              string host = System.Configuration
  9. .ConfigurationManager.AppSettings[“HostName”];
  10. 09:              string port = System.Configuration
  11. .ConfigurationManager.AppSettings[“HttpsPort”];
  12. 10:              if (port != null)
  13. 11:              {host = string.Format(“{0}:
    {1}”, host, port);}
  14. 12:              filterContext.HttpContext.Response.Redirect(
  15. string.Format(“https://{0}{1}”, host, path));
  16. 13:           }
  17. 14:      }
  18. 15:  }

首先看看代码分析。

(1)AuthorizeAttribute类,代表一个属性,用来限制访问者对Action方法的访问。

(2)OnAuthorization()方法,当请求一个认证时会调用此方法;AuthorizationContext类用来封装AuthorizeAttribute类常用的一些信息。

(3)如果已经是HTTPS连接则不处理,否则重定向到HTTPS连接

(4)获取当前请求的Path路径。

(5)从web.config中获取host,也可以直接从httpContext中获取。

(6)从web.config中获取HTTPS的端口。

(7)如果端口号为空表示使用默认端口,否则将host写成host:port的形式。

(8)重定向到HTTPS连接。

由于HTTPS和HTTPS服务使用不同的端口号,而且HTTPS不能绑定主机头,只能通过不同端口的方式来区分各个站点,所以这里将host和port信息写到了web.config里,以方便配置。在web.config的appSettings节加入如下信息即可:

  1. 01:  <appSettings>
  2. 02:       <add key=”HostName” value=”localhost”/>
  3. 03:       <add key=”httpsPort” value=”443″/>
  4. 04:  </appSettings>

HttpsPort可以不写,将使用默认的443。然后在要使用HTTPS连接的controller或action前加上[RequireHttps],如:

 

  1. 01:  [RequireHttps]
  2. 02:  public ActionResult About()
  3. 03:  {
  4. 04:      return View();
  5. 05:  }

这样,当我们用http://localhost/Home/访问该页面时,会自动跳到https://localhost/Home。但是这样还有一个问题,网页中的链接都是HTTP的,当点击进入需要使用HTTPS连接的网页时都要进行一次Redirect。所以要将网页中的链接也改成HTTPS。其实,只需要将view中所有链接到HTTPS页面的Html.Action()使用适当的重载方法来写即可。ASP.NET提供了2种重载可以将protocol设置为HTTPS。在新建ASP.NET MVC Web Application后默认生成的站点中,shared文件夹下的site.master文件中有个指向/Home/About的ActionLink。原来是:

  1. Html.ActionLink(“Home”, “Index”, “Home”)

对其进行改写:

  1. Html.ActionLink(“About”, “About”, “Home”,
    “https”, “localhost”, “”,null, null)

这样,生成出来的链接就是HTTPS的了,点击以后直接会使用HTTPS连接而无需再进行一次Redirect,之后新的要到HTTPS页面的链接也可仿照次写法。在调试过程中,也是一波三折,比如这里就遇到了无法启动HTTP SSL服务的解决方法。在调网站程序的时候,打开IIS管理器,发现里面的网站目录上有一个红叉,启动网站失败,没有日志记录;再检查”服务”项目,发现IIS ADMIN已经启动,RPC已经启动,但是HTTP SSL无法启动,并提示”与World Wide Web Publishing Service服务相依的HTTP SSL服务因下列错误而无法启动:系统找不到指定的文件”,在服务里面启动”World Wide Web Publishing Service”,仍然提示错误。在测试过程中发现,出现上面的错误是由于防火墙的原因。在防火墙MacAfee的设置里增加访问设置,问题迎刃而解。