经过几天的折磨,终于搞定了。写一下博客,和大家分享一下。顺便自己也记录一下,呵呵。
背景是这样的,我负责公司的办公系统,此办公系统是.NET编写的架设在IIS6.0上的,所用的服务器是WINDOWS2003,IIS+openssl 实现客户端证书的认证,这样做第一考虑的是从安全角度,第二还考虑到系统中会根据证书的有无来实现权限的操作。
我所做的工作是架设一台备机,同样的操作系统,同样的设置,证书系统一定要移植过来,不能重新架设,因为每位用户都有属于自己的证书,一旦重新架设就意味这N份证书又要重新生成,然后用户客户端重新再导入,所以一定要完整的移植过来。(两台服务器不一样,GHOST是没戏了,问题是主机GHOST时候都会出错,真F了,还是别碰这孩子了。。。)
给大家图文并茂展现一下:(网上很多相关资料,在这里我就借花献佛了。)
一、首先是证书颁发机构移动到备份服务器上,下面是备份和还原的步骤。
服务器:Windows Server 2003
(警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。)
备份:
  1. 在证书颁发机构管理单元中,右键单击 CA 名称,单击“所有任务”,然后单击“备份 CA”以启动证书颁发机构备份向导。
  2. 单击“下一步”,然后单击“私钥和 CA 证书”。
  3. 单击“证书数据库和证书数据库日志”。
  4. 使用一个空文件夹作为备份位置。确保新服务器可以访问该备份文件夹。
  5. 单击“下一步”。如果指定的备份文件夹不存在,则证书颁发机构备份向导将创建它。
  6. 键入并确认 CA 私钥备份文件的密码。
  7. 单击“下一步”,然后验证备份设置。应当显示下列设置:
    • 私钥
    • CA 证书颁发的日志
    • 挂起的申请
  8. 单击“完成”。
  9. 保存此 CA 的注册表设置。为此,请按照下列步骤操作:
  10. 单击“开始”,单击“运行”,在“打开”框中键入 regedit,然后单击“确定”。
  11. 找到下面的注册表子项,然后右键单击它:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration
  12. 单击“导出”。
  13. 将注册表文件保存在自定义的 CA 备份文件夹中。
 
还原:
  1. 删除旧服务器上的证书服务。
  2. 重新命名旧服务器,或者将其永久与网络断开连接。
  3. 在新服务器上安装证书服务。为此,请按照下列步骤操作。
    (注意:新服务器的计算机名称必须与旧服务器的计算机名称相同。)
  4. 在控制面板中,双击“添加或删除程序”。
  5. 单击“添加/删除 Windows 组件”,单击 Windows 组件向导中的“证书服务”,然后单击“下一步”。
  6. 在“CA 类型”对话框中,单击适当的 CA 类型。
  7. 单击“用自定义设置生成密钥对和 CA 证书”,然后单击“下一步”。
  8. 单击“导入”,键入备份文件夹中 .P12 文件的路径,再键入在第 2f 步中选择的密码,然后单击“确定”。
  9. 在“公钥/私钥对”对话框中,验证是否选中“使用现有密钥”。
  10. 单击两次“下一步”。
  11. 接受“证书数据库设置”的默认设置,单击“下一步”,然后单击“完成”结束证书服务的安装。停止证书服务的相关服务。
  12. 找到在第 3 步中保存的注册表文件,然后双击该文件以导入注册表设置。在证书颁发机构管理单元中,右键单击 CA 名称,单击“所有任务”,然后单击“还原 CA”。
    证书颁发机构还原向导启动。
  13. 单击“下一步”,然后单击“私钥和 CA 证书”。 单击“证书数据库和证书数据库日志”。
  14. 键入备份文件夹位置,然后单击“下一步”。 验证备份设置。
  15. 应当显示“颁发的日志”和“挂起的申请”设置。 单击“完成”,然后单击“是”以在还原 CA 数据库时重新启动证书服务。
二、上面的操作是保证证书机构的完整性。下面是IIS上证书的备份和还原,注意下面步骤很重要。
备份:
1.进入IIS所要操作的“网站”,右键“属性”,进入“目录安全性”标签。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_IIS
2.点击“服务器证书”,然后“下一步”,按下图设置导出pfx备份文件。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_IIS_02
3.然后“下一步”,选择路径和文件名,这里随意,但是最好不要改后缀名,然后“下一步”输入密码,后面会有很多密码,别弄混了。“下一步”直到“完成”。
 
还原:
1.进入IIS所要操作的“网站”,右键“属性”,进入“目录安全性”标签。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_休闲_03
2.点击“服务器证书”,然后“下一步”,按下图设置导入pfx备份文件。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_休闲_04
3.然后“下一步”,选择刚才的备份的pfx文件导入,输入刚才的密码。
 
到此IIS的还原工作已经完成,证书和设置都和主服务器上一样了。
 
三、配置openssl,由于我用的是openssl的执行版,不需要安装,所以原文件都复制过来,服务器证书和用户个人证书都复制过来。
四、开始,运行,MMC,打开控制台,然后点“文件”,“添加/删除管理单元”,点“添加”,然后点“证书”,然后选择“我的用户帐户”,点“完成”。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_openssl_05
五、点击“确定”后,进入下面界面,右键点“受信任的根证书颁发机构”
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_职场_06
六、点“所有任务”,然后“导入”,然后“下一步”,导入“cacert.cer”这个文件。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_openssl_07
七、“下一步”,选择“将所有的证书装入下列存储区”,然后点“浏览”
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_openssl_08
八、这一步很重要,勾选“物理存储区”,选择“受信任的根证书颁发机构”,点“本地计算机”,然后点“确定”。
IIS6.0 + openssl执行版 + Windows2003 --  移植篇_职场_09
九、导入“clent.crt”也是相同的步骤六 - 八。
十、最简单的方法双击证书文件就可以安装。但是一定要注意第八步。
 
到此还原完成要注意的是,主机和备机机器名要相同,第八步很关键。
(稍后奉上IIS + openssl + Windows2003--配置篇)