我需要一个有经验的人来指导我完成这个小项目:-)
我们有一个具有 Active Directory 证书服务角色的域控制器 [Win2k8 R2]。我们将其命名为 ServerOne.OurDomain.com。
我有第二台 Windows 2008 R2 服务器 ServerTwo.OurDomain.com,它运行 Apache Tomcat Web 服务器。我们正在为所有需要 SSL 连接到 OAuth 服务器的用户设置 Outlook 插件。我摸索着按照说明将 OAuth 模块添加到 Tomcat,并在端口 8443(Tomcat 的默认 SSL 端口)上使用 SSL 启用连接器。
但是现在我不知道如何“把 2 和 2 放在一起”——如何从我们的内部 CA 生成证书,以便在连接到 ServerTwo.OurDomain.com 时不会出现 SSL 证书错误?到目前为止,我使用 JRE“keytool.exe”程序在 ServerTwo 上创建了“密钥库”文件,当然证书会将其显示为没有 CA 链的自签名证书 [例如,当您单击浏览器中的锁定图标时]。
非常感谢在这方面提供的任何帮助。
答案1
我最终自己解决了这个问题。我记录了我的步骤;希望这能帮助将来遇到同样问题的人:
在 Tomcat 上生成 CSR
- 创建密钥库和私钥:keytool -genkey -alias tomcat -keyalg RSA -keystore keystore
- “Keytool”位于 Java 的 JDK 或 JRE 主目录的“bin”文件夹中
- “keystore” 包括密钥库文件的路径,例如“C:\store\keystore”
- 填写所要求的信息,注意“名字和姓氏”实际上是要求填写 FQDN
- 创建 CSR 文件:keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore keystore
- [然后我复制到一个公共共享:] copy certreq.csr Z:\
签署证书
- 在具有 Active Directory 证书服务角色的服务器上,在提升的命令提示符中:certreq -submit -attrib "CertificateTemplate: WebServer" Z:\certreq.csr certificate.cer
- 在弹出窗口中选择你正在处理的 CA
- [然后我将其复制回共享:] copy certificate.cer Z:\
导入根 CA 证书
- 在具有 Active Directory 证书服务角色的服务器上:
- 服务器管理器-->角色-->Active Directory 证书服务-->[您的 CA]-->已颁发的证书
- 打开由您的 CA 签名的列表中的任意一个,转到“证书路径”选项卡
- 如果根 CA 是您的服务器的 CA,则“查看证书”
- 详细信息选项卡 --> 复制到文件... [然后我保存到 Z:\RootCA.cer]
- 在 Tomcat 服务器上:
- keytool -import -trustcacerts -alias rootca -file Z:\RootCA.cer -keystore 密钥库
- 输入“yes”以信任该证书
导入 Tomcat 的证书
- keytool -import -trustcacerts -alias tomcat -file Z:\certificate.cer -keystore 密钥库
参考:
- 步骤1:https://www.globalsign.com/support/csr/serversign_tomcat.php
- 第2步:http://www.visualsvn.com/support/topic/00035/
- 显然我只被允许在这个网站上发布 2 个超链接。
请注意,如果此时您的浏览器仍然不相信它是由受信任的根 CA 签名的,则您可能必须通过组策略推出根 CA 服务器。。。对我来说,这是一个快速的 Google 搜索。我已经在执行这些步骤之前进行了设置,所以我不确定这是否重要。
答案2
因为您刚刚创建了一个自签名证书,所以由于您不是受信任的证书颁发机构,因此这不会自动进行身份验证。
最简单、最快捷的方法就是将证书安装到您本地的受信任证书存储中,但您需要在每台机器上执行此操作,因此这将非常耗时,并且当您一年后设置新机器并忘记执行此操作时会导致问题,因此更好的部署方法是使用 GPO。如果您已设置组策略,请按照说明进行操作这里。