安装 SSL 证书

 



 

简介

ServiceDesk Plus 可以作为 HTTPS 服务运行。但这需要一个由有效证书颁发机构 (CA) 签署的 SSL(安全套接层)证书。

默认情况下,在首次启动时,它会创建一个自签名证书。此自签名证书不会被用户浏览器信任。因此,在连接到 ServiceDesk Plus 时,您需要手动验证证书信息以及 ServiceDesk Plus Server的主机名,并强制浏览器接受该证书。

为了使 ServiceDesk Plus Server能够向 Web 浏览器和用户正确标识自身,您需要为 ServiceDesk Plus 主机从 CA 获取一个新的签名证书。您可以使用 keytool(Java 自带)创建证书、获取 CA 签名并在 ServiceDesk Plus 中使用。

在 ServiceDesk Plus 中安装 SSL 的步骤

配置 ServiceDesk Plus 使用 SSL 所涉及的步骤如下。         

步骤 1:创建 Keystore 文件

步骤 2:创建 .CSR(证书签名请求)文件

步骤 3a: 从 ServiceDesk Plus UI 安装 SSL 证书

步骤 3b: 安装您的 SSL 证书

 

注意:在所有图片中,请将高亮文本替换为您希望用于 ServiceDesk Plus 的别名名称。

在向 CA 申请证书之前,您需要创建 Tomcat 专用的“.keystore”文件和“.csr”文件。.keystore 文件和 .csr 文件将包含创建这些文件的人员所提供的信息。

步骤 1:创建 Keystore 文件

  • 导航到 <SDP-home>/jre/bin 文件夹。

  • 打开命令提示符并执行以下命令:
keytool -genkey -alias <URL> -keyalg RSA -ext san=dns:<URL>,dns:<Servername> -keysize 2048 -keystore sdp.keystore

 

Server名称:表示托管 Servicedesk Plus 的计算机名称。
URL:访问 ServiceDesk Plus 所使用的 URL。
SAN(主题备用名称):允许用户为单个 SSL 证书提供附加主机名。这是对 X.509 规范的扩展。

 

请忽略如下图所示的警告消息,并继续执行下一步。 

 

对于11138 及更早版本,密码中不能包含 $ 符号。
对于11139 及更高版本,密码中不能包含 " \ 符号。 
  • 出现提示时请输入密码。密码中不能包含以下任一特殊字符:$、" 和 \。

  • 以下是在创建 keystore 时会要求提供的详细信息:

  • 名字和姓氏:输入访问 ServiceDesk Plus 所使用的 URL。 

例如:helpdesk.domain.com

注意:如果您订购的是通配符证书,则 URL 应以 * 字符开头。名字和姓氏应填写为 *.domain.com

  • 您的组织单位名称
  • 您的组织名称
  • 城市/地点
  • 州/省
  • 双字母国家代码
  • 当再次提示输入密钥密码时,按 Enter/Return请勿输入密码。

  • 将生成 Keystore。

请保存该 keystore 文件,因为在导入证书时会用到它。

 

 

步骤 2:创建 .CSR(证书签名请求)文件

  • 导航到 <SDP-home>/jre/bin 文件夹。

  • 打开命令提示符并执行以下命令:

keytool -certreq -alias <URL> -ext san=dns:<URL>,dns:<Servername> -file key.csr -keystore sdp.keystore

 

URL:与创建 keystore 文件时提供的 URL 相同
将生成 CSR。CSR 文件是临时文件,应提交给 CA 以获取 CA 签名证书文件。

 

 

sdp.keystore 和 key.csr 文件将创建在 <SDP-home>/jre/bin 文件夹下。

 

您可以通过 UI 手动安装 SSL 证书。

步骤 3a:  从 ServiceDesk Plus UI 安装 SSL 证书

  • 将证书文件从 CA 下载到您的 keystore(sdp.keystore)所在的 位置
  • 转到 管理 常规设置 导入 SSL 设置
  • 在显示的界面中,浏览证书文件并选择主证书或域证书文件。请注意,您只能选择扩展名为 .cer、.crt、.p7b、.pfx、.keystore 或 .jks 的文件。
  • 对于 .pfx、.keystore, .jks 文件,请提供 keystore 密码并单击 导入 按钮以安装 SSL 证书。 
  • 对于 .cer 或 .crt 文件,请提供 keystore 文件和密码 ,并选择中间证书/根证书的上传方式。然后,单击 导入 按钮以安装 SSL 证书。
  • 对于 .p7b 文件,只需提供 keystore 文件和密码 ,然后单击 导入 按钮以安装 SSL 证书
  • 重新启动application以使更改生效。 

注意:如果您的私钥是 .key 文件,则无需输入任何密码。  

以下屏幕截图说明了 .cer/.crt 文件的处理流程,其中中间证书/根证书是手动上传的。   

 

  

注意:您最多可以上传四个中间证书/根证书。

步骤 3b:安装您的 SSL 证书

将通过电子邮件从 CA 收到的证书文件下载到您在创建 CSR 过程中保存 keystore(sdp.keystore)的目录中。证书必须安装到这个完全相同的 keystore 中。如果您尝试安装到其他 keystore,将无法生效。

您下载的证书必须按正确顺序安装到 keystore 中,证书才能被信任。如果证书安装顺序不正确,则证书将无法正确进行身份验证。要查找正确顺序,请双击域证书,然后转到“证书路径”。

这些证书通常为 .cer 或 .crt 格式。如果您的证书扩展名为 .p7b,请按照安装 .P7b 证书中的说明将证书导出为 .cer 或 .crt 格式。

从上面的证书路径可以推断出,在导入域证书之前,我们需要先导入另外两个证书。首先是根证书,其次是中间证书,最后是域证书。某些 CA 还可能使用另一个称为交叉中间证书的证书。这些证书可以从厂商网站下载。
 

需要牢记的事项


1. 如果证书类型为 .cer 或 .crt,则您可以选择“自动”或“手动”上传方式。如果选择手动,则必须手动选择根证书和中间证书。
2. 如果选择“自动”,并且在“构建证书链”过程中证书导入失败,建议您手动提取根证书和中间证书,然后在上传方式中选择“手动”,选择相应证书后再执行导入。
3. 如果没有 keystore,但有私钥文件(扩展名为 .key),则在通过 UI 导入证书时,可以使用该文件替代 keystore。
注意: 有关如何提取证书(根证书和中间证书),请参阅此处提供的知识库文章。


安装根证书文件

每次将证书安装到 keystore 时,系统都会提示您输入 keystore 密码,即您在生成 CSR 时选择的密码。请输入以下命令以安装根证书文件:

keytool -import -trustcacerts -alias root -file <File_Name>.crt -keystore sdp.keystore

注意:如果系统提示如下消息:“Certificate already exists in system-wide CA keystore under alias <Alias Name> Do you still want to add it to your own keystore? [no]:”,请选择“Yes”。

您将收到确认消息,显示“Certificate was added to keystore”。

安装中间证书和交叉中间证书(如有)。

请按照 CA 提供的说明进行操作。

keytool -import -trustcacerts -alias intermediate -file <File_Name>.crt -keystore sdp.keystore

keytool -import -trustcacerts -alias cross -file <File_Name>.crt -keystore sdp.keystore

您将收到确认消息,显示“Certificate was added to keystore”。

安装主证书或域证书文件

请输入以下命令以安装主证书文件:

keytool -import -trustcacerts -alias <your_alias_name or [Domain Name]> -file your_domain_name.crt -keystore sdp.keystore

请注意,<your_alias_name or [Domain Name]> 应替换为创建 keystore 时提供的别名名称(如步骤 1 中所述)。这一次,您将收到不同的确认消息,即“Certificate reply was installed in keystore”

如果您希望信任该证书,请选择 y 或 yes 现在,您的证书已安装到 keystore 文件(sdp.keystore)中。

 

 

配置Server(9400 及以上版本)

  • 将 sdp.keystore 文件从 <ServiceDesk_Home>\jre\bin 复制到 <ServiceDesk_Home>\conf
  • 在命令提示符中执行 changeWebServerPort.bat 脚本,将连接模式更改为 HTTPS。

Cmd>[ServiceDesk Plus Home]\bin> changeWebServerPort.bat <WEBServer_PORT> https

  • 最后,在位于 <ServiceDesk_Home>\conf 下的 Server.xml 文件中,更新您在步骤 1 生成 sdp.keystore 时所设置的 keystore 名称和密码(对于 10.0 及以上版本,请使用加密密码)。
  • 重新启动 ManageEngine ServiceDesk Plus 服务以使更改生效。

 

配置Server(9400 以下版本)

  • 将 sdp.keystore 文件从 <ServiceDesk_Home>\jre\bin 复制到 <ServiceDesk_Home>\Server\default\conf
  • 在命令提示符中执行 changeWebServerPort.bat 脚本,将连接模式更改为 HTTPS。

Cmd>[ServiceDesk Plus Home]\bin> changeWebServerPort.bat <WEBServer_PORT> https

  • 最后,在位于   <ServiceDesk_Home>\Server\default\deploy\jbossweb-tomcat50.sar  下的 Server.xml 文件中,更新您在步骤 1 生成 sdp.keystore 时设置的 keystore 名称和密码。
  • 重新启动 ManageEngine ServiceDesk Plus 服务以使更改生效。

 

如何在 ServiceDesk Plus 中加密您的密码?

在命令提示符中,切换到 <installation directory>\bin

对于早于 10.5 的版本,请运行: 

encrypt.bat "<your password>"

对于 10.5 及更高版本,请运行:

encrypt.bat -a aes256 -v "<your password>"

加密后的密码将显示在下一行。 

 

安装 .P7b 证书

某些 CA 会提供扩展名为 .p7b 的证书。在这种情况下,您可以双击该文件以打开控制台,其中会列出所有必需的证书。您可以将这些证书导出为 Base-64 编码的 X.509 (.cer) 文件。

然后可以按照步骤 3 中的说明,将这些证书安装到 keystore 文件中。

要导出证书,请执行以下操作:

  • 前往 [ServiceDesk Plus Home] \ jre \ bin \ domain.P7B
  • 右键单击证书并选择 所有任务 -> 导出 选项。
  • 此时会弹出证书导出向导对话框。单击 下一步 按钮继续。
  • 选择导出文件格式为 Base-64 编码的 X.509 (.cer)。单击 下一步
  • 指定要导出的文件名称。单击 下一步
  • 证书导出向导已成功完成。您可以检查所指定的设置。单击 完成
  • 对话框中会显示成功消息。单击 确定

安装部分常见厂商证书的命令

以下是安装部分常见厂商证书所需使用的命令。

注意:这些说明可能会根据 CA 签发的证书而有所变化。

 

GoDaddy

如果您的 CA 是 “GoDaddy”,则需要执行以下步骤:


keytool -import -alias root -keystore <Keystore_Name>.keystore -trustcacerts -file gd_bundle.crt

keytool -import -alias cross -keystore <Keystore_Name>.keystore -trustcacerts -file gd_cross_intermediate.crt

keytool -import -alias intermediate -keystore <Keystore_Name>.keystore -trustcacerts -file gd_intermediate.crt

keytool -import -alias <创建 Keystore 时指定的别名> -keystore <Keystore_Name>.keystore -trustcacerts -file <CertificateName>.crt

 

Verisign

如果您的 CA 是 “Verisign”,则需要执行以下步骤:


keytool -import -alias intermediateCA -keystore <Keystore_Name>.keystore -trustcacerts -file <your_intermediate_certificate_name>.cer

keytool -import -alias <创建 Keystore 时指定的别名> -keystore < Keystore_Name>.keystore -trustcacerts -file <CertificateName>.cer

 

Comodo

如果您的 CA 是 “Comodo”,则需要执行以下步骤:


keytool -import -trustcacerts -alias root -file AddTrustExternalCARoot.crt -keystore <Keystore_Name>.keystore

keytool -import -trustcacerts -alias addtrust -file UTNAddTrustServerCA.crt -keystore <Keystore_Name>.keystore

keytool -import -trustcacerts -alias ComodoUTNServer -file ComodoUTNServerCA.crt -keystore <Keystore_Name>.keystore

keytool -import -trustcacerts -alias essentialSSL -file essentialSSLCA.crt -keystore <Keystore_Name>.keystore

keytool -import -trustcacerts -alias <创建 Keystore 时指定的别名> -file <Certificate-Name>.crt -keystore <Keystore_Name>.keystore

 

常见错误/故障排除提示

  • 即使证书未损坏且密码正确,预验证仍然失败。importssl0 日志文件中包含如下异常跟踪(仅适用于 14300 之前的版本):
Caused by: java.io.IOException: exception unwrapping private key - java.security.spec.InvalidKeySpecException: Invalid KeySpec: unknown PRF algorithm 1.2.840.113549.2.9

答:这可能是因为application中使用的 Java 版本不支持 .pfx 文件中用于加密密码的算法。请按照以下步骤执行建议的变通方法:

  1. 按照此处的说明,将 SSL 证书导入到您的计算机中。

  2. 使用 Microsoft Management Console 将其导出为 .pfx,包含私钥、证书路径中的所有证书以及所有扩展属性。请确保密码加密方式为 TripleDES-SHA1,而不是 AES256-SHA256。了解具体操作方法请参见此处

  3. 使用新的 .pfx 文件将 SSL 证书导入到application中。

 

  • 在 keytool 中导入域证书时,出现如下所示的“Failed to establish chain from reply”错误:

 

答:请检查application所使用的 Java 版本中的 keytool 是否支持证书(根证书、中间证书和域证书)所使用的签名算法。例如,Java 8 不支持 RSASSA-PSS 算法。

建议的变通方法是获取使用application所用 Java 版本支持的算法的新根证书、中间证书和域证书。

如果您无法获取新证书,请使用相同的 keystore 和证书(借助支持该签名算法的 Java 版本所提供的 keytool)导入域证书。然后手动将 keystore 放置到 {PRODUCT_HOME}/conf 中,并按此处说明配置Server。

使用与application不同的 Java 版本生成的 keystore 进行 UI 导入将会失败。

单击此处查看创建证书并将 SSL 证书导入 keystore 的步骤。

 

  • 从 UI 导入 .pfx 证书失败,并提示错误 Illegal Key Size。importssl0 日志文件中发现以下异常跟踪:

Caused by: java.io.IOException: exception unwrapping private key - java.security.InvalidKeyException: Illegal key size 

答:这可能是因为产品中使用的 Java 版本不支持该密钥大小。换句话说,该证书可能是使用不同 Java 版本、不同密钥大小生成的。

建议的变通方法是获取具有适当密钥大小的新证书,或者使用不同 Java 版本的策略文件替换 {PRODUCT_HOME }\jre\lib\security 中的策略文件。

请从以下链接下载适用于 ServiceDesk Plus 的策略文件: