ActiveDirectory证书服务
By 泪痕之⽊
本⽂介绍了Active Directory证书服务的安装, Web服务器证书的申请和颁发,以及IIS如何配置SSL密码套件。关于PKI、证书、证书格式等知识,请参考本⼈另⼀篇⽂章《openssl安装使⽤》。
实验环境
操作系统:Windows Server 2012 R2 Datacenter—GUI安装
IP:192.168.80.240
主机名:dc01.lhzm(已安装Active Directory域服务、DNS服务器)
1 Active Directory证书服务安装
安装Active Directory证书之前请先安装Active Directory域服务和DNS服务器,这⾥不再介绍。
打开服务器管理器
添加⾓⾊和功能
下⼀步(之后的操作,如果没有特殊说明,则按默认配置下⼀步)
勾选Active Directory证书服务
添加功能
勾选“证书颁发机构”和“证书颁发机构Web注册”
添加功能
安装结束
2 Active Directory证书服务配置
2.1 CA配置
点击旗帜图标,配置⽬标服务器上的Active Directory证书服务,进⾏CA的配置(根证书和私钥等)
勾选“证书颁发机构”和“证书颁发机构Web注册”
企业CA
根CA
创建新的私钥
选择对证书进⾏签名的Hash算法,这⾥选择了SHA256(只是加密类型和加密强度的区别,2048位的RSA加密和SHA256散列算法已经⾜够安全)
指定根证书的有效期
证书数据库⽤于存储颁发证书的信息
配置
CA配置结束
在运⾏中输⼊:inetmgr,打开IIS
Certsrv便是证书服务颁发机构Web注册在IIS默认站点下⽣成的应⽤程序
证书服务颁发机构Web注册页⾯如下
2.2 证书模板
打开证书颁发机构,默认已经包含了常见的证书模板,在证书模板中定义了颁发证书的信息(加密程序、证书有效期、是否允许导出私钥等)
在运⾏中输⼊:mmc
添加/删除管理单元
选择证书模板,点击添加
选择“计算机帐户”
本地计算机
确定
右击证书模板-Web服务器,复制模板
在常规中可以定义模板的名称、有效期
在请求中可以选择:允许导出私钥
加密中可以看到默认使⽤的加密程序
说明:上述配置完毕后,点击确定。除了设置允许导出私钥,其他信息没有做任何更改,只是为了展⽰Web服务器证书模板的信息。
再回到证书颁发机构,证书模板-新建-要颁发的证书模板
选择Web服务器的副本
此时去证书服务颁发机构Web注册就可以看到刚刚发布的证书模板了
3 Web服务器证书申请
3.1 通过IIS创建证书申请
3.1.1 创建证书申请
在IIS中双击服务器证书
在配置CA的过程默认已经⽣成了两个证书,⽆须理会。点击“创建证书申请”
这⾥申请了通配符证书:*.lhzm
指定RSA加密的位长为2048位
随意命名⼀个txt⽂件,完成(此txt⽂件保存的是证书申请信息,点击完成后才会创建)
3.1.2 Web注册证书
打开证书颁发机构Web注册页⾯,点击申请证书
⾼级证书申请
使⽤Base64编码提交证书申请
打开之前创建证书申请时⽣成的txt⽂件,复制所有内容
将复制的内容粘贴到如下位置,选择证书模板:Web服务器。提交
选择Base64编码格式,点击下载证书链(使⽤证书链,该CA和其⼦CA颁发的证书都会被信任)
⽣成的证书为PKCS#7格式
IIS站点-服务器证书,点击完成证书申请
浏览到刚刚获取的证书,并命名⼀个好记的名称
证书导⼊成功,可以看到证书的有效期为2年,和之前看到的Web服务器证书模板相匹配
利⽤MMC,添加证书,也可以在本地计算机—个⼈—证书中看到已有的证书
3.1.3 IIS站点绑定证书
选中IIS站点,点击绑定
添加:类型-https; SSL证书-*.lhzm;主机名:www.lhzm
在本地host⽂件添加域名的解析,由于本机为域控,存在DNS服务器,所以这⾥直接在DNS添加相应A记录
在运⾏输⼊:dnsmgmt.msc
正向查区域—lhzm,右击—新加主机记录
将解析到本机192.168.80.240
访问HTTPS站点
访问成功,由于使⽤了SSL协议,可以看到锁状图标
3.1.4 查看证书信息
可以看到SSL连接使⽤的密码套件,颁发者(CA)和该证书的⼀些信息
nginx ssl证书配置3.1.5 导出证书和私钥-PFX
IIS—服务器证书,选中某个证书后,右击—导出
导出的证书包含私钥,为PKCS#12(PFX)格式,所以必须设置⼝令
3.2 通过证书颁发机构创建证书申请
证书申请的创建也可以由证书颁发机构Web注册完成,但此⽅式的缺点是私钥不是由⾃⼰的IIS服务器⽣成,⽽是由CA⽣成。申请证书—⾼级证书申请—创建并向此CA提交⼀个申请
提⽰:必须配置HTTPS访问
由于这台服务器是CA服务器,所以先直接使⽤默认⽣成的证书作为HTTPS的证书
使⽤HTTPS访问,会要求认证,输⼊本机的⽤户名和密码即可
证书模板选择Web服务器副本,因为默认的Web服务器证书模板私钥不可导出
姓名:相当于IIS创建证书申请的通⽤名称,openssl的CommonName,所以这⾥是写域名的地⽅
勾选“标记私钥为可导出”
点击安装此证书
通过MMC,添加证书—⽤户管理单元
可以看到安装到当前⽤户下的证书:*.test
选中证书后,右击—所有任务—导出
选择“是,导出私钥”
默认配置,下⼀步
勾选“密码”,输⼊⼀段⼝令
导出到桌⾯,命名为test.pfx
将证书导⼊IIS
查看证书信息,“颁发给”列是该证书匹配的域名
4 SSL密码套件
Apache、Tomcat、Nginx等Web程序都可以指定使⽤哪些SSL密码套件,IIS⾃然也可以。IIS密码套件的指定有如下两种⽅式:
4.1 组策略-SSL配置
通过组策略可以指定使⽤的SSL密码套件及套件的优先顺序
注意:域策略的优先级⾼于本地组策略,所以未加域的计算机应修改本地组策略,域成员计算机修改域策略,域控制器则修改域控制器策略。
本地组策略在运⾏输⼊:gpedit.msc
这⾥使⽤的是域控制器的IIS,所以编辑域控制器策略
计算机配置—策略—管理模板—⽹络—SSL配置设置,双击“SSL密码套件的顺序”
选择“已启⽤”,从右边的列表选择希望使⽤的密码套件复制到输⼊框,多个密码套件直接使⽤“ , ”隔开,
密码套件越靠前则优先级越⾼
配置完毕后,在运⾏输⼊“gpupdate”,⽴即更新策略,也可通过重启服务器更新策略
4.2 IISCrypto
组策略只能指定SSL密码套件及密码套件的顺序,想要指定SSL的协议版本、加密算法、散列算法、密钥交换算法还需要通过修改注册表实现。然⽽直接编辑注册表操作繁琐且风险较⼤,所以我们可以通过⼀个简单的⼯具IISCrypto来实现这些操作。
GUI:适⽤于Windows Server GUI版(安装图形界⾯的版本)
CLI:适⽤于Windows核⼼版(没有安装图形界⾯,只存在⼀个CMD窗⼝的版本)
.Net Framework 2.0:适⽤于Windows Server 2012之前版本Windows
.Net Framework 4.0:适⽤于Windows Server 2012和之后版本Windows
IISCrypto运⾏后可以配置SSL协议、密码套件、加密算法、散列算法、密钥交换算法
也可以使⽤推荐的模板配置SSL:
Best、PCI(⽀付卡安全标准)、FIPS 140-2(美国联邦信息处理标准)
说明:关于这些配置模板的信息可以参考如下链接:
配置完成后应⽤,提⽰:需⼿动重启服务器应⽤配置
重启服务器后,再次访问IIS站点,可以发现已经不再使⽤之前的密码套件,⽽是浏览器从指定的密码套件中按优先级选择了⾃⼰⽀持的密码套件