前两天因为需要修正一个Windows Live Contacts Gadget在https连接下无法工作的错误,在dev machine的IIS上设置了一下SSL功能。
大家都知道要开启SSL服务关键需要两个东西:
1. A Certificate Authority (such VeriSign.com)
2. A site certificate
如果你使用的是Windows Server 2003或者XP Advanced Server,你其实可以利用系统提供的 “Certificate Services”服务来“冒充”一个CA并给自己发一个site certificate,这里有一个tutorial:
Building your own certificate authority: http://searchwindowssecurity.techtarget.com/tip/1 ,289483,sid45_gci1110403,00.html
如果你使用的是XP Professional,就没有CA服务了。但作为程序调试或测试用的话,其实就只需要生成一个self- signed certificate就可以了。等browser提示你是否接受这个untrusted certificate的时候,只要选Yes就 行。
生成self-signed certificate有很多方法。稍微繁琐一点的可以用OpenSSL (OpenSSL for windows: http://www.openssl.org/related/binaries.html )或者keytool (http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/keytool.html )来sign一个certificate,然后再在IIS中导入这个certificate就行了。如果你想对IIS的相关设置有所了解的话,可以试试做一遍,这里也有一个tutorial:
Enabling SSL in IIS on Windows XP Professional: http://www.somacon.com/p41.php
当然,如果你想省掉所有这些麻烦也行,最简单的在IIS启动SSL的方法只要3步:
1. 下载 IIS 6.0 Resource Kit Tools: http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en
2. 安装.
3. “All Programs->IIS Resources->SelfSSL->SelfSSL”, 在命令行中键入 “selfssl”, 回答 “y”, and you are done.
现在你试试在browser里访问:https://localhost,你会发现会出现一个窗口询问是否接受一个untrusted certificate,选Yes, and you are in a safe channel now.
最后附上微软的官方教程
为 Web 服务器配置 SSL
要在 IIS 中启用 SSL,首先必须获得用于加密和解密通过网络传输的信息的证书。IIS 具有自己的证书请求工具,您可以使用此工具向证书颁发机构发送证书请求。此工具简化了获取证书的过程。如果您使用的是 Apache,则必须手动获取证书。
在 IIS 和 Apache 中,您都会收到来自证书颁发机构的证书文件,此文件必须配置在计算机上。Apache 使用 SSLCACertificateFile 指令读取其源文件中的证书。而在 IIS 中,您可以使用网站或文件夹属性的目录安全性选项卡来配置和管理证书。
您可以将证书从 Apache 迁移到 IIS;但是 Microsoft 建议您重新创建或获取一个新的 IIS 证书。
配置文件夹或网站以使用 SSL/HTTPS
- 此过程假定您的站点已经具备了证书。
- 以管理员身份登录到 Web 服务器计算机。
- 单击开始,指向设置,然后单击控制面板。
- 双击管理工具,然后双击 Internet 服务管理器。
- 从左窗格中的不同服务站点的列表中选择网站。
- 右键单击希望为其配置 SSL 通信的网站、文件夹或文件,然后单击属性。
- 单击目录安全性选项卡。
- 单击编辑。
- 如果希望网站、文件夹或文件要求 SSL 通信,请单击需要安全通道 (SSL)。
- 单击需要 128 位加密以配置 128 位(而不是 40 位)加密支持。
- 要允许用户不必提供证书就可以连接,请单击忽略客户证书。或者,如果要让用户提供证书,请使用接受客户证书。
- 要配置客户端映射,请单击启用客户证书映射,然后单击编辑将客户证书映射到用户。如果配置了此功能,可以将客户证书分别映射到 Active Directory 中的每个用户。可以使用此功能以根据用户访问网站时提供的证书自动识别用户。可以将用户一对一映射到证书(一个证书标识一个用户),或者将许多证书映射到一个用户(根据特定的规则,对照证书列表来匹配特定的用户。第一个有效的匹配项成为映射。)
- 单击确定。