By 泪痕之木

本文介绍了Active Directory证书服务的安装, Web服务器证书的申请和颁发,以及IIS如何配置SSL密码套件。关于PKI、证书、证书格式等知识,请参考本人另一篇文章《openssl安装使用》。

实验环境

操作系统:Windows Server 2012 R2 Datacenter—GUI安装

IP:192.168.80.240

主机名:dc01.lhzm.com(已安装Active Directory域服务、DNS服务器)

1 Active Directory证书服务安装

安装Active Directory证书之前请先安装Active Directory域服务和DNS服务器,这里不再介绍。

Active Directory证书服务-编程知识网

打开服务器管理器

Active Directory证书服务-编程知识网

添加角色和功能

Active Directory证书服务-编程知识网

下一步(之后的操作,如果没有特殊说明,则按默认配置下一步)

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

勾选Active Directory证书服务

Active Directory证书服务-编程知识网

添加功能

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

勾选“证书颁发机构”和“证书颁发机构Web注册”

Active Directory证书服务-编程知识网

添加功能

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

安装结束

Active Directory证书服务-编程知识网

2 Active Directory证书服务配置

2.1 CA配置

点击旗帜图标,配置目标服务器上的Active Directory证书服务,进行CA的配置(根证书和私钥等)

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

勾选“证书颁发机构”和“证书颁发机构Web注册”

Active Directory证书服务-编程知识网

企业CA

Active Directory证书服务-编程知识网

根CA

Active Directory证书服务-编程知识网

创建新的私钥

Active Directory证书服务-编程知识网

选择对证书进行签名的Hash算法,这里选择了SHA256(只是加密类型和加密强度的区别,2048位的RSA加密和SHA256散列算法已经足够安全)

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

指定根证书的有效期

Active Directory证书服务-编程知识网

证书数据库用于存储颁发证书的信息

Active Directory证书服务-编程知识网

配置

Active Directory证书服务-编程知识网

CA配置结束

Active Directory证书服务-编程知识网

在运行中输入:inetmgr,打开IIS

Active Directory证书服务-编程知识网

Certsrv便是证书服务颁发机构Web注册在IIS默认站点下生成的应用程序

Active Directory证书服务-编程知识网

证书服务颁发机构Web注册页面如下

Active Directory证书服务-编程知识网

2.2 证书模板

打开证书颁发机构,默认已经包含了常见的证书模板,在证书模板中定义了颁发证书的信息(加密程序、证书有效期、是否允许导出私钥等)

Active Directory证书服务-编程知识网

在运行中输入:mmc

Active Directory证书服务-编程知识网

添加/删除管理单元

Active Directory证书服务-编程知识网

选择证书模板,点击添加

Active Directory证书服务-编程知识网

选择“计算机帐户”

Active Directory证书服务-编程知识网

本地计算机

Active Directory证书服务-编程知识网

确定

Active Directory证书服务-编程知识网

右击证书模板-Web服务器,复制模板

Active Directory证书服务-编程知识网

在常规中可以定义模板的名称、有效期

Active Directory证书服务-编程知识网

在请求中可以选择:允许导出私钥

Active Directory证书服务-编程知识网

加密中可以看到默认使用的加密程序

Active Directory证书服务-编程知识网

说明:上述配置完毕后,点击确定。除了设置允许导出私钥,其他信息没有做任何更改,只是为了展示Web服务器证书模板的信息。

再回到证书颁发机构,证书模板-新建-要颁发的证书模板

Active Directory证书服务-编程知识网

选择Web服务器的副本

Active Directory证书服务-编程知识网

此时去证书服务颁发机构Web注册就可以看到刚刚发布的证书模板了

Active Directory证书服务-编程知识网

3 Web服务器证书申请

3.1 通过IIS创建证书申请

3.1.1 创建证书申请

在IIS中双击服务器证书

Active Directory证书服务-编程知识网

在配置CA的过程默认已经生成了两个证书,无须理会。点击“创建证书申请”

Active Directory证书服务-编程知识网

这里申请了通配符证书:*.lhzm.com

Active Directory证书服务-编程知识网

指定RSA加密的位长为2048位

Active Directory证书服务-编程知识网

随意命名一个txt文件,完成(此txt文件保存的是证书申请信息,点击完成后才会创建)

Active Directory证书服务-编程知识网

3.1.2 Web注册证书

打开证书颁发机构Web注册页面,点击申请证书

Active Directory证书服务-编程知识网

高级证书申请

Active Directory证书服务-编程知识网

使用Base64编码提交证书申请

Active Directory证书服务-编程知识网

打开之前创建证书申请时生成的txt文件,复制所有内容

Active Directory证书服务-编程知识网

将复制的内容粘贴到如下位置,选择证书模板:Web服务器。提交

Active Directory证书服务-编程知识网

选择Base64编码格式,点击下载证书链(使用证书链,该CA和其子CA颁发的证书都会被信任)

Active Directory证书服务-编程知识网

生成的证书为PKCS#7格式

Active Directory证书服务-编程知识网

IIS站点-服务器证书,点击完成证书申请

Active Directory证书服务-编程知识网

浏览到刚刚获取的证书,并命名一个好记的名称

Active Directory证书服务-编程知识网

证书导入成功,可以看到证书的有效期为2年,和之前看到的Web服务器证书模板相匹配

Active Directory证书服务-编程知识网

利用MMC,添加证书,也可以在本地计算机—个人—证书中看到已有的证书

Active Directory证书服务-编程知识网

3.1.3 IIS站点绑定证书

选中IIS站点,点击绑定

Active Directory证书服务-编程知识网

添加:类型-https; SSL证书-*.lhzm.com;主机名:www.lhzm.com

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

在本地host文件添加域名www.lhzm.com的解析,由于本机为域控,存在DNS服务器,所以这里直接在DNS添加相应A记录

在运行输入:dnsmgmt.msc

Active Directory证书服务-编程知识网

正向查找区域—lhzm.com,右击—新加主机记录

Active Directory证书服务-编程知识网

将www.lhzm.com解析到本机192.168.80.240

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

访问HTTPS站点

Active Directory证书服务-编程知识网

访问成功,由于使用了SSL协议,可以看到锁状图标

Active Directory证书服务-编程知识网

3.1.4 查看证书信息

可以看到SSL连接使用的密码套件,颁发者(CA)和该证书的一些信息

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

3.1.5 导出证书和私钥-PFX

IIS—服务器证书,选中某个证书后,右击—导出

Active Directory证书服务-编程知识网

导出的证书包含私钥,为PKCS#12(PFX)格式,所以必须设置口令

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

3.2 通过证书颁发机构创建证书申请

证书申请的创建也可以由证书颁发机构Web注册完成,但此方式的缺点是私钥不是由自己的IIS服务器生成,而是由CA生成。

申请证书—高级证书申请—创建并向此CA提交一个申请

Active Directory证书服务-编程知识网

提示:必须配置HTTPS访问

Active Directory证书服务-编程知识网

由于这台服务器是CA服务器,所以先直接使用默认生成的证书作为HTTPS的证书

Active Directory证书服务-编程知识网

使用HTTPS访问,会要求认证,输入本机的用户名和密码即可

Active Directory证书服务-编程知识网

证书模板选择Web服务器副本,因为默认的Web服务器证书模板私钥不可导出

Active Directory证书服务-编程知识网

姓名:相当于IIS创建证书申请的通用名称,openssl的CommonName,所以这里是写域名的地方

Active Directory证书服务-编程知识网

勾选“标记私钥为可导出”

Active Directory证书服务-编程知识网

点击安装此证书

Active Directory证书服务-编程知识网

通过MMC,添加证书—用户管理单元

Active Directory证书服务-编程知识网

可以看到安装到当前用户下的证书:*.test.com

Active Directory证书服务-编程知识网

选中证书后,右击—所有任务—导出

Active Directory证书服务-编程知识网

选择“是,导出私钥”

Active Directory证书服务-编程知识网

默认配置,下一步

Active Directory证书服务-编程知识网

勾选“密码”,输入一段口令

Active Directory证书服务-编程知识网

导出到桌面,命名为test.pfx

Active Directory证书服务-编程知识网

将证书导入IIS

Active Directory证书服务-编程知识网

查看证书信息,“颁发给”列是该证书匹配的域名

Active Directory证书服务-编程知识网

4 SSL密码套件

Apache、Tomcat、Nginx等Web程序都可以指定使用哪些SSL密码套件,IIS自然也可以。IIS密码套件的指定有如下两种方式:

4.1 组策略-SSL配置

通过组策略可以指定使用的SSL密码套件及套件的优先顺序

注意:域策略的优先级高于本地组策略,所以未加域的计算机应修改本地组策略,域成员计算机修改域策略,域控制器则修改域控制器策略。

本地组策略在运行输入:gpedit.msc

Active Directory证书服务-编程知识网

这里使用的是域控制器的IIS,所以编辑域控制器策略

Active Directory证书服务-编程知识网

计算机配置—策略—管理模板—网络—SSL配置设置,双击“SSL密码套件的顺序”

Active Directory证书服务-编程知识网

选择“已启用”,从右边的列表选择希望使用的密码套件复制到输入框,多个密码套件直接使用“ , ”隔开,密码套件越靠前则优先级越高

Active Directory证书服务-编程知识网

配置完毕后,在运行输入“gpupdate”,立即更新策略,也可通过重启服务器更新策略

Active Directory证书服务-编程知识网

Active Directory证书服务-编程知识网

4.2 IISCrypto

组策略只能指定SSL密码套件及密码套件的顺序,想要指定SSL的协议版本、加密算法、散列算法、密钥交换算法还需要通过修改注册表实现。然而直接编辑注册表操作繁琐且风险较大,所以我们可以通过一个简单的工具IISCrypto来实现这些操作。

从以下站点下载IISCrypto工具,https://www.nartac.com

GUI:适用于Windows Server GUI版(安装图形界面的版本)

CLI:适用于Windows核心版(没有安装图形界面,只存在一个CMD窗口的版本)

.Net Framework 2.0:适用于Windows Server 2012之前版本Windows

.Net Framework 4.0:适用于Windows Server 2012和之后版本Windows

Active Directory证书服务-编程知识网

IISCrypto运行后可以配置SSL协议、密码套件、加密算法、散列算法、密钥交换算法

也可以使用推荐的模板配置SSL:

Best、PCI(支付卡安全标准)、FIPS 140-2(美国联邦信息处理标准)

说明:关于这些配置模板的信息可以参考如下链接:

https://www.nartac.com/Support/IISCrypto/FAQ

Active Directory证书服务-编程知识网

配置完成后应用,提示:需手动重启服务器应用配置

Active Directory证书服务-编程知识网

重启服务器后,再次访问IIS站点,可以发现已经不再使用之前的密码套件,而是浏览器从指定的密码套件中按优先级选择了自己支持的密码套件

Active Directory证书服务-编程知识网

转载于:https://blog.51cto.com/leihenzhimu/1720162