安装 SSL 证书

安装 SSL 证书

简介

ServiceDesk Plus支持使用HTTPS模式运行,但是,需要安装由证书授权机构(Certificate Authority  - CA)签发的SSL (Secure Socket Layer) 证书

默认情况下,当您首次使用HTTPS模式时,通常会创建一个自签名的证书。但该自签名的证书不会被用户的浏览器信任。因此,当您连接到ServiceDesk Plus,您需要手动验证证书信息,并强制浏览器接受该证书,才能使用。

为了使浏览器及终端用户能够自动而又正确的鉴别ServiceDesk Plus服务器,需要从证书授权机构获取该服务器的新的签名证书。您可以使用 keytool (绑定在Java里)创建您的证书,然后将它提交给授权机构,从而获取由授权机构签名的证书,将它安装到ServiceDesk Plus。


在ServiceDesk Plus中安装SSL的步骤

配置ServiceDesk Plus,使其能够使用SSL的步骤如下:       

      

步骤 1:创建一个Keystore文件

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

步骤 3a:从 ServiceDesk Plus 用户界面安装 SSL 证书

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

 

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

向 CA 申请证书前,需要创建 tomcat 专用的".keystore "文件和".csr "文件。.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

 

服务器名称:表示 Servicedesk Plus 所在机器的名称。
URL:访问 ServiceDesk Plus 的 URL。
SAN(主题替代名称): 允许用户为单个 SSL 证书提供其他主机名。这是 X. 509 规范的扩展。

 

请忽略下图中的警告信息,继续下一步。

 

对于 11138 及更早版本,密码不应包含 $ 符号。
对于 11139 及更高版本,密码不应包含" /"和 ( )符号。
  • 根据提示输入密码。密码不得包含以下特殊字符:$、"和 \。

  • 以下是创建密钥存储时要求提供的详细信息:

  • 名和姓:输入访问 ServiceDesk Plus 的 URL。

例如:helpdesk.domain.com

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

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

  • 将生成密钥存储。

请保存密钥存储文件,因为在导入证书时需要它。

 

 

步骤 2:创建 .CSR (Certificate Signing Request) 文件

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

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

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

 

URL:与创建密钥存储文件时提供的 URL 相同
将生成 CSR。CSR 文件是临时的,应提交给 CA 以接收 CA 签名的证书文件。

 

 

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


 

您可以从用户界面手动安装 SSL 证书。


  • 将证书文件从 CA 下载到密钥存储位置(sdp.keystore)。
  • 转到管理工具 > 常规设置 > 导入 SSL 设置。
  • 在显示的屏幕上,浏览证书文件并选择主证书或域证书文件。 请注意,只能选择扩展名为 .cer、.crt、.p7b、.pfx、.keystore 或 .jks 的文件。
  • 对于 .pfx、.keystore 或.jks 文件,请提供密钥库密码并单击导入按钮以安装 SSL 证书。 
  • 对于 .cer 或 .crt 文件,提供密钥库文件和密码,并选择中间/根证书的上传方法。然后,点击要安装的 SSL 证书的导入按钮。 
  • 对于 .p7b 文件,只需提供密钥库文件和密码,点击导入按钮即可安装 SSL 证书。
  • 重新启动应用程序,使变更生效。

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


注意:最多可上传四份Intermediate/Root 证书。

步骤 3b:安装 SSL 证书


将通过电子邮件从 CA 收到的证书文件下载到创建 CSR 过程中保存密钥库 (sdp.keystore) 的目录。证书必须准确安装到该密钥库中。如果试图将其安装到其他密钥库,则无法正常工作。


您下载的证书必须按照正确的顺序安装到密钥存储中,这样您的证书才能被信任。如果证书安装顺序不正确,证书将无法正常验证。要找到正确的顺序,请双击域证书,然后转到 "证书路径"。


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


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



安装 Root 证书文件

每次将证书安装到密钥存储时,系统都会提示您输入密钥存储密码,该密码是您在生成 CSR 时选择的。键入以下命令安装root证书文件:

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

注意:如果系统提示证书已存在于系统范围 CA 密钥存储的 < Alias Name> 下,您是否仍要将其添加到自己的密钥存储中?[否]。

您将收到证书已添加到密钥库的确认信息。

安装Intermediate证书和Cross Intermediate证书(如有)。

按照 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

您将收到证书已添加到 keystore的确认信息。

安装主证书或域证书文件。


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

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

请注意,<your_alias_name 或 [Domain Name]> 应替换为创建密钥存储时提供的别名(如步骤 1 所述)。这一次,您会收到不同的确认信息,说明证书回复已安装到密钥存储中。

如果要信任证书,请选择 y 或 yes。证书现在已安装到密钥存储文件(sdp.keystore)中。

 

 

配置服务器(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 文件中生成 sdp.keystore 时,更新步骤 1 中给出的密钥存储名称和密码(10.0 及以上版本的加密密码)。
  • 重新启动 ManageEngine ServiceDesk Plus 服务,使变更生效。

 

配置服务器(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时给出的密钥库名称和密码。
  • 重新启动 ManageEngine ServiceDesk Plus 服务,使变更生效。

 

如何在 ServiceDesk Plus 中加密密码?

在命令提示符下,变更为 <installation directory>\bin

对于 10.5 之前的版本,运行 :

encrypt.bat "<your password>"

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

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

下一行将显示加密密码。


安装a .P7b 证书

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

然后就可以使用步骤 3 中的说明将这些证书安装到密钥存储文件中。


导出证书,

  • 转到 [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 <Alias Specified when creating the 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 <Alias Specified when creating the 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 <Alias Specified when creating the Keystore> -file <Certificate-Name>.crt -keystore <Keystore_Name>.keystore

 

常见错误/故障排除技巧

  • 即使证书未损坏且密码正确,预验证也会失败。importssl0 日志文件的异常跟踪如下:
Caused by: java.io.IOException: exception unwrapping private key - java.security.spec.InvalidKeySpecException: Invalid KeySpec: unknown PRF algorithm 1.2.840.113549.2.9

原因:这可能是因为应用程序中使用的 Java 版本不支持用于加密 .pfx 文件中密码的算法。请按照下面给出的步骤进行建议的解决方法:

  1. 按照此处的说明将 SSL 证书导入到您的机器。

  2. 使用 Microsoft 管理控制台将证书导出为 .pfx 格式,包括私钥、证书路径中的所有证书以及所有扩展属性。确保密码加密为 TripleDES-SHA1,而不是 AES256-SHA256。点击此处了解如何操作。

  3. 使用新的 .pfx 文件,将 SSL 证书导入应用程序。

 

  • 在 keytool 中导入域证书时,会出现如下所示的错误:未能从回复建立链:


 

原因:检查应用程序中使用的 Java 版本的密钥工具是否支持证书(根证书、中间证书和域证书)中使用的签名算法。例如,Java 8 不支持 RSASSA-PSS 算法。

建议的解决方法是获取使用应用程序所用 Java 版本所支持算法的新root、intermediate和域证书。

如果无法获得新证书,则使用相同的密钥库和证书(使用支持签名算法的 Java 版本提供的密钥工具)导入域证书。手动将密钥库放在 {PRODUCT_HOME}/conf 中,并按此处给出的方法配置服务器。

使用与应用程序版本不同的 Java 版本生成的密钥库的 UI 导入将失败。

点击此处了解创建 SSL 证书并将其导入密钥存储的步骤。

 

  • 从用户界面导入 .pfx 证书失败,提示错误 "非法密钥大小"。在 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 的策略文件: