对于 Java 从业人员来说,大多数人也许都比较熟悉如何使用和配置 Tomcat、JBoss 等 Web 服务器,但对于 IIS 的使用和配置也许会感到陌生,为了照顾部分 .NET 平台的开发和使用者,同时也为了扩展 Java 从业人员的技术视野,笔者在这篇文章中将会和大家探讨如何在 IIS 里面如何配置 HTTPS。本文将以 Window 2012 R2 服务器为例子,和大家分享如何使用自签名的证书配置 HTTPS 以及如何使用第三方 CA 签发的证书配置 HTTPS。
环境准备
假设大家已经安装好了 IIS 并创建了一个默认的 Web 应用,笔者就在机器名为 iis-web-01 的服务器上安装了一个基于 HTTP 的默认的 IIS 的 Web 应用,如下图所示意。
配置自签名的 HTTPS
下面来看如何为 IIS 配置自签名的 HTTPS 应用。首先,在开始菜单栏里面打开服务器管理(Server Manager),点击上面的工具(Tools)菜单,在工具菜单中选择 IIS 管理器(Internet Information Services(IIS)Manager)。
其将会打开一个如下图的界面。
选择网站左边的根节点,并在中间部分找到服务器证书(Server Certificates)的选项,并双击打开,将会弹出下面的界面。
点击上图中右边的创建自签名证书(Create Self-Signed Certificate)选项,将会弹出下面的页面,在友好名字(Friendly Name)一项中输入服务器的名称(笔者的环境为:iis-web-01)并选择存储证书的位置为 Web Hosting。
当单击 OK 按钮后,创建的服务器证书就自动保存在服务器证书(Server Certificates)列表里面了,如下图。
点击你要配置的网站,比如,笔者要把默认的网站配置成 HTTPS,则选择左边的默认网站(Default Web Site),并点击最右边的绑定(Bindings…)选项。
其会弹出一个对话框,单击对话框右边的“添加(Add)”按钮。
在弹出的窗体中选择 Type 为 HTTPS,端口(Port)为 443,在最下面的 SSL 证书(SSL Certificate)中选择上面已经创建好的自签名的名字为 iis-web-01 的证书,最后单击 OK 按钮。
打开浏览器,并在其中输入 https://iis-web-01/,其界面如下,IIS 中的自签名的 HTTPS 配置成功。
配置私有 CA 签名证书请求的 HTTPS
上面演示的是如何在 IIS 配置自签名的 HTTPS,那么接下来我们会涉及到先使用 IIS 自带的功能生成一个证书请求,然后利用在《第04课:使用 XCA 管理和生成 SSL 证书》一文中生成的 CA 去签名 IIS 导出的 SSL 证书请求。
1. 生成证书请求
上面演示的是如何在 IIS 配置自签名的 HTTPS,那么接下来会涉及到先使用 IIS 自带的功能生成一个证书请求,下面看具体的步骤。和上面的章节的步骤类似,打开 IIS 管理器(Internet Information Services(IIS)manager),选择网站左边的根节点,并在中间部分找到服务器证书(Server Certificates)的选项,并双击打开,在弹出的页面中,这次选择点击创建证书请求(Create Certificate Request),如下图所示意。
在弹出下面的一个对话框中,输入证书请求的相关信息,如下:
单击“下一步”按钮后,秘钥服务提供者选择“Microsoft RSA SChannel Cryptographic Provider”并选择秘钥长度为2048位。
继续单击“下一步”按钮,指定 SSL 证书请求导出的文件路径,如下图所示意,笔者导出到 C:\ssldemo\iis-web-01.csr。
单击“完成”按钮后,将会在 C:\ssldemo 目录下看到一个名字为 iis-web-01.csr 的 SSL 证书请求。
2. 使用 XCA 签名证书请求
打开在《第04课:使用 XCA 管理和生成 SSL 证书》已经生成的 XCA 的数据库,并把上面的 iis-web-01.csr 导入到 XCA 数据了里面,如下图所示意。
导入证书请求成功后,选择 iis-web-01 的证书请求,并点击右键,在弹出的菜单中点击签署(Sign)。
在弹出的窗体中,点击源(Source)页面,并注意下面的用红色标出的两处。
- 使用 51Talk Docter Root CA 签署证书请求。
- 使用
Https_Server
的模板。
最后单击“确认”按钮,我们发现 IIS 的证书请求被成功签名。
3. 导出 CA 证书和被签署好的服务器证书
因为 iis-web-01 的证书请求已经被签署好了,现在需要从 XCA 中导出,并导入到 IIS 中。在 XCA 导出的步骤如下,在 XCA 的证书(Certificate)页面,选择已经被签署好的 iis-web-01 的证书,并单击“导出(Export)”按钮。
在弹出的页面,一定要选择导出的格式为 DER(*.cer),其就是被私有 CA 签署的 SSL 证书,并输入要导出的路径名称,单击 OK 按钮,服务器证书导出完毕。
接下来要导出 51Talk Docter Root CA 的证书,首先选择根证书(51Talk Docter Root CA),然后导出步骤和格式和服务器证书一样。
把导出的两个证书 iis-web-01.cer,51TalkDocter_Root_CA.cer
,拷贝到 IIS 服务器上,比如 C:\ssldemo 目录下。
打开 IIS 管理器(Internet Information Services(IIS)manager),选择网站左边的根节点,并在中间部分找到服务器证书(Server Certificates)的选项,并双击打开,在弹出的页面中,这次选择点击“完成证书请求”(Create Certificate Request),如下图所示意。
在弹出的上面的窗体中,在第一个选项(File Name containing the certification authority's response)的文件选中框中选择我们刚刚被私有 CA 签署过的证书 c:\ssldemo\iis-web-01.cer,给其取一个友好的别名(Friendly Name),比如,在我的例子我取名为“iis-web-01-signBy-CA”,存储位置选择“Personal”,然单击 OK 按钮,iis-web-01.cer 被成功导入到 IIS 服务器证书(Server Certificates)列表里面。
服务器的 SSL 证书已经被成功导出了,那么51TalkDocter_Root_CA.cer
根证书该如何处理呢?因为51TalkDocter_Root_CA.cer
是一个私有的 CA 根证书,不是操作系统默认自带的 CA 根证书,所以我们需要把其安装到 Windows 操作系统的受信任的根证书列表中。
具体操作步骤如下:
双击 c:\ssldemo\51TalkDocter_Root_CA.cer
证书,其会弹出一个窗体显示证书。
注意其上面有以一个红色叉号,表示当前这个证书是不受操作系统信任的一个 SSL 证书。
单击下面的安装证书(Install Certificate …)按钮,将会弹出证书导入向导(Certificate Import Wizard)窗体,如下图,并单击“下一步”按钮。
在下面的窗体中,选择“Place all certificates in the following store” 复选框,并单击 最右侧的“Browser..”按钮,其将会弹出“Select Certificate Store”的窗体,在弹出的“Select Certificate Store”的窗体中选择“Trust Root Certification Authorities”,如下图所示。
单击“下一步(Next)”按钮,最后单击“完成(Finish)”按钮。
在弹出的 Security Waring 窗体中单击 Yes 按钮,51TalkDocter_Root_CA.cer
这个私钥的 CA 根证书将会成功导入到操作系统受信任的根证书列表中。
再次双击打开 c:\ssldemo\51TalkDocter_Root_CA.cer
证书,会发现以前的红色叉号已经消失。
目前为止,服务的证书和私有 CA 的根证书都导入完毕。
注意,如果私有 CA 证书由多级,比如有根私有 CA 证书,还有中级 CA 证书,需要安装类似的步骤都导入到操作系统的可信任的根证书和可信任的中级证书列表里面。
4. 在 IIS 中选择被签署过的 SSL 服务器证书
这个步骤比较简单,和上面的私有签名的步骤类似,单击你要配置的网站,比如,笔者要把默认的网站配置成 HTTPS,则选择左边的默认网站(Default Web Site),并单击最右边的绑定(Bindings…)选项,会弹出下面的类似窗体。
在弹出的对话窗体中,双击类型为 HTTPS 的行,其会弹出一个窗体,在弹出的窗体中,SSL Certificate 下拉框中选择“iis-web-01-signBy-CA” 这个在本文上面《导出 CA 证书和被签署好的服务器证书》一节已经被导入到 IIS 服务器证书列表中的证书名称,最后单击 OK 按钮。
恭喜你,被私有 CA 自签名的 SSL 服务器的证书在 IIS 已经配置成功了。激动人心的时刻到了,用浏览器打开这个网址:https://iis-web-01/,发现这个网站的 SSL 证书已经变成了我们刚刚导入的 SSL 服务器证书。
总结
本文主要给大家分享了如何在 IIS 中配置自签名的 HTTPS 和被私有 CA 签名的 HTTPS。
需要注意的是,如果大家在生成环境,把证书请求发给了世界上知名的第三方的 CA 签署了证书请求后,其被签署的 SSL 服务器证书和签署服务器证书请求的世界上知名的第三方的 CA 证书以及其中间证书的导入步骤和本文《配置私有 CA 签名证书请求的 HTTPS》一节中的步骤类似。千里之行始于足下,知易行难,建议大家按照上面的步骤动手试一下,肯定会有新的收获。最后祝大家学习开心,生活愉快!