创建签名服务器证书
1. 生成一个与 SSL 协议公钥加密一起使用的新证书。该密钥对包括:
◦ 在证书中发布的公钥
◦ 只有服务器可访问的私钥
以下示例假定当前目录为安装 jdk 的目录:
% <JDKInstallDir>/bin/keytool -genkeypair -alias myname -storetype PKCS12
-keystore <ServerInstallDir>/data/tls/certificate.p12 -keyalg RSA
其中:
◦ -genkeypair 指定生成一个新的密钥对。
◦ -alias 指定一个与密钥库中新密钥条目关联的名称。
|
|
请务必写下或记住该别名,因为本流程之后的步骤中还会需要您再次指定这个别名。
|
◦ -storetype 指定密钥库的格式。该格式必须是 PKCS12。您无法从任何其他类型的密钥库读取服务器证书。
◦ -keystore 指定密钥库的路径名称。
|
|
命令运行后,系统会提示您指定其他信息,例如密钥库和证书密码等。这些密码是相同的,同样,您必须在 is.properties 特性文件的mksis.privatekey.password 特性中指定这些密码。有关给出提示的详细信息,请参阅 keytool 文档:
|
◦ -keyalg 防止与更高强度的密钥产生任何冲突。该格式必须是 RSA。
2. 生成一个证书签名请求 (CSR),然后将请求发送至 CA,例如:
% <JDKInstallDir>/bin/keytool -certreq -alias myname -storetype PKCS12
-keystore <ServerInstallDir>/data/tls/certificate.p12 -file data/tls/certificate.csr
其中:
◦ -certreq 指定生成一个 CSR。
◦ -alias 指定用于创建 CSR 的现有存储条目的名称。该名称和步骤 1 中指定的名称相同。
◦ -file 指定要写入 CSR 的文件路径。
该 CSR 必须包括下列信息:
◦ 密钥库密码
◦ 姓氏和名字 (应当是主机完全限定的域名)
◦ 组织单位/部门名称
◦ 组织名称
◦ 城市或地区
◦ 州或省份
◦ 两个字母的国家/地区代码 (例如 CA 或 US)
◦ 密钥对密码 (如不同于密钥库)
3. 在 CA 中检索签名证书时,请确保采用以下格式之一:
◦ DER 编码二进制 X.509 (.der / .cer)
◦ Base-64 编码 X.509 (.pem / .cer)
◦ PKCS #7 证书 (.p7b)
如果可能,请确保认证路径中的所有证书均为这种格式。
如果您正在使用自定义根 CA 或自定义中间 CA (Verisign),请执行以下操作之一:
◦ 将自定义根 CA 或自定义中间 CA 证书导入 certificate.p12 密钥库:
% <JDKInstallDir>/bin/keytool –importcert –alias <别名> -storetype PKCS12
–keystore <ServerInstallDir>/data/tls/certificate.p12 –file <自定义 CA 证书>
其中:
▪ -importcert 指定导入证书响应。
▪ -alias 指定您要导入的现有条目的名称。该名称和步骤 1 中指定的名称相同。
▪ -file 指定您读取 CA 响应的路径。
◦ 当检索到签名服务器证书时,获取 PKCS #7 证书 (.p7b)。
4. 如果您使用了任何自定义根 CA 或自定义中间 CA,请将其导入 Windchill RV&S 服务器的 JDK 环境的jssecacerts 密钥库中,例如:
% <JDKInstallDir>/bin/keytool –importcert –alias <别名>
–keystore <JDK 安装目录>/lib/security/jssecacerts
–file <自定义 CA 证书>
其中:
◦ -importcert 指定导入证书响应。
◦ -alias 指定您要导入的现有条目的名称。该名称和步骤 1 中指定的名称相同。
◦ -file 指定读取 CA 响应的路径。
|
|
• 该命令提示您输入密钥库密码。如果 jssecacerts 密钥库不存在,您可输入任何密码作为初始密码。请记下密码,并妥善保存,以备之后参考。
• 如果证书颁发机构 (CA) 更新了自己的根 CA 证书或中间 CA 证书,请您务必将其添加到 jssecacerts 密钥库中。考虑到 Java 定位密钥库的方法,所有相关的 CA 证书都必须存在于 jssecacerts 密钥库中。
|
5. 收到证书后,请将证书导入密钥库,例如:
% <JDK 安装目录>/bin/keytool –importcert –alias myname -storetype PKCS12
–keystore /data/tls/certificate.p12 -file data/tls/certificate.pem
其中:
◦ -importcert 指定导入证书响应。
◦ -alias 指定您要导入的现有条目的名称。该名称和步骤 1 中指定的名称相同。
◦ -file 指定读取 CA 响应的路径。
6. 如果使用了任何自定义根 CA 或自定义中间 CA,则在您连接到 Windchill RV&S 服务器之前,必须将其导入到所有 Windchill RV&S 客户端 JDK 环境的 jssecacerts 密钥库中,例如:
% <JDK 安装目录>/bin/keytool –importcert –alias <别名>
–keystore <JDK 安装目录>/lib/security/jssecacerts
-file <自定义 CA 证书>
|
|
JDK 安装目录是由 Windchill RV&S 客户端使用的 JDK。如果您不确定此 JDK 的路径,请参阅 Windchill RV&S 客户端 lax 文件中的 LAX.NL.CURRENT.VM 特性。
|
您还可以将 Windchill RV&S 服务器上的 jssecacerts 密钥库分发到每个 Windchill RV&S 客户端,无需导入证书。将 jssecacerts 密钥库复制到 <JDK 安装目录>/lib/security 并重新启动 Windchill RV&S 客户端。
7. 请检查以下文件以确保 SSL 有效:
<WindchillRV&S 服务器安装目录>/config/properties/security.properties
如果 SSL 有效,则安全策略密钥 mks.security.policy.scheme 应指示正在使用 private 安全策略。
|
|
安全策略密钥不会自动设置。对所有用户界面,只有在您设置一个使用 _private 的安全策略后,系统才是安全的。
对于 Web 客户端界面,当用户浏览https://<主机名>:<ssl 端口>时,会产生一个安全连接。
|