ASP.NET 安全模型 Part.2(SSL)

       SSL(Secure Sockets Layer,安全套接字层)技术对 HTTP 上的通信进行加密。SSL 被大量的浏览器支持并确保客户端和 Web 服务器间交换的信息不会被窃听者轻易解密。必须使用 SSL 加密那些敏感数据。例如,用户提交的用户名和密码等。否则,恶意客户能够窃取用户凭证并用这个凭证登录系统。

       IIS 提供了对 SSL 的内置支持。因为 SSL 在 HTTP 底层操作,使用 SSL 不会改变 HTTP 请求的方式。所有的加密和解密由 Web 服务器软件(这里是 IIS)的 SSL 功能负责。唯一的区别是被 SSL 保护的 URL 地址以 https:// 开头而不是以 http:// 开头

       SSL 通信还使用不同的端口,Web 服务器通常为 SSL 请求使用 443 端口,而对普通请求使用 80 端口

       为了让服务器支持 SSL 连接,它必须安装 X.509 证书。你必须购买一份证书,安装它并正确配置 IIS

1. 理解证书

       在发送敏感数据前,客户端必须确定是否信任某个网站,证书设计就是出于这个目的。它能够部分的验证用户的标识。证书可以安装在任意类型的计算机上,但它们最经常出现在 Web 服务器上。

       对于证书,组织从已知的 CA(Certificate Authority,证书授权)购买证书并把它安装到自己的 Web 服务器上。客户端隐式地信任 CA,因此也就会信任 CA 签发的证书。

       这个模型能够很好的工作是因为恶意用户不太可能购买并安装一个伪造的证书。CA 保存每个注册用户的信息。不过,证书从不保证服务器可信任、应用程序安全或者业务的合法性。证书仅在有限的范围内有效。

       证书自身包含一些标识信息。它以 CA 的私钥签名以保证它可信且没有被篡改。业界标准的证书类型是 x.509v3,包含如下信息:

  • 持有者的名称、组织、地址
  • 持有者的公钥。它用于加密通信中的 SSL 会话密钥
  • 证书的有效日期
  • 证书的序列号

       两个最大的证书授权中心是:

       如果你不需要 CA 的标识验证功能(例如,你的证书只用于本地局域网),可以创建并使用自己的证书,然后配置所有的客户端信任它。这需要活动目录以及证书服务器(它们是 Windows 2003 Server 和 Windows 2000 Server 的一部分)。

2. 理解 SSL

       所有证书都有一个公钥。公钥是非对称密钥对的一部分。基本思想是公钥可以任意地提供给所有用户。对应的私钥被仔细保管并仅对服务器可用。有意思的是,所有用某个公钥加密的内容都能被一个私钥解密。也就是说,客户端能获得这个公钥并用它编码秘密的消息,而该消息只能被对应的私钥解密。换句话说,客户端可以创建只有服务器才能够读取的消息。

       这个过程成为非对称加密,它是 SSL 的基本构建块之一。非对称加密的一个重要原则是不能通过分析对应的公钥获得私钥,如果非要这么做,计算代价非常昂贵;但非对称加密也有自身限制,它远比对此加密要慢,所生成的消息更大

      对称加密是多数人会感觉比较熟悉的加密类型。它使用相同的安全密钥加密和解密消息。对称加密的缺点是会话双方都需要知道密钥的内容。但是不能在因特网使用对称加密,恶意用户会截取它并用之解密加密的会话。

       SSL 神奇的一面是它结合了对称加密和非对称加密。非对称加密管理初始的密钥交互,然后用这个秘密的值对称加密所有后续消息,这样就确保了最佳的性能

       整个过程如下所示:

  1. 客户端发送连接到服务器的请求。
  2. 服务器对自己的证书签名并把它发送到客户端,这里包括交换的握手部分。
  3. 客户端检查证书是否由自己信任的 CA 颁发。如果是,它执行下一步。如果客户端不识别该 CA,可能会显示一个警告信息,允许用户决定是否继续。证书保存在操作系统的“受信任的根证书颁发机构”时,客户端就能识别该 CA。你可以通过 IE 选项,单击“内容”标签页中的“证书”按钮找到保存的所有证书
    1. image
  4. 客户端将证书中的信息和从网站获得的信息(域名和公钥)进行比较、验证证书有效性
  5. 客户端告诉服务器它支持什么样的通信加密密钥
  6. 服务器选择最强的密钥长度并通知客户端
  7. 根据指定的密钥长度,客户端随机产生一个对称加密密钥,它保障了最优性能,对称加密比非对称加密快
  8. 客户端使用服务器的公钥(来自证书)加密会话密钥,并把加密后的会话密钥发送给服务器
  9. 服务器接收到加密后的会话密钥并用自己的私钥解密。现在,服务器和客户端都拥有共享的密钥,它们将在会话中使用该密钥加密所有的信息

       你可能会注意到,对称密钥随机产生并仅用于会话期间。这减小了安全风险。首先,通过密码分析学破解加密后的内容较难一些,因为不能利用来自其他会话的消息。其次,即使密钥被恶意用户知道了,它也仅在会话过程中可用。

3. 在 IIS 7.x 中配置 SSL

       首先,给 Web 服务器颁发一个证书。在 IIS 管理器中选中 Web 服务器的根节点,然后选择“服务器证书”:

       image

       打开详细信息后,管理控制台将列出 Web 服务器上安装的所有服务器证书。在 IIS 7.x 里有意思的是可以在同一个 Web 服务商安装多个服务器证书,用于配置不同网站:

       image

       在这个视图的右侧,显示了安装服务器证书所需的任务。它可以自动创建证书请求,你可以用它向 CA 请求新的证书。如果要创建一个新请求,点击“创建证书请求”任务链接即可,它会创建 Base64 编码的请求,你可以使用这个 Base64 编码的请求向 CA 提交请求。从 CA 接收到证书后,可以单击“完成证书请求”任务链接完成运行的请求。这样就可以为一台独立的 Web 服务器请求和配置 SSL 证书了。

       如果要为自己的 CA 请求证书,那可以通过单击“创建域证书…”继续向导…

       关于 SSL 详细的知识这里就不再多说了,查阅相关资料。

原文地址:https://www.cnblogs.com/SkySoot/p/2997951.html