SSL/TLS 客户端身份验证
有多种方法可供处理 SSL/TLS 身份验证。具体处理方式取决于特定站点在安全性方面的要求。以下是实现 SSL/TLS 客户端身份验证的最低要求:
• 必须生成客户端证书。这是一个 X.509 公用/专用证书对,通常存储在 PKCS #12 存档文件中,该文件有时称为 pkcs12 密钥库。客户端证书也可能以多种其他密钥库格式存储。
• 必须将 Web 服务器配置为使用已对客户端证书进行签名的客户端身份验证 (CA) 证书来验证客户端 SSL/TLS 证书。
• 必须将 Web 服务器配置为强制进行 SSL/TLS 客户端证书身份验证。
• 在质询时,客户端必须能够向服务器呈现 SSL/TLS 客户端证书。
SSL/TLS 客户端证书的生成和 CA 证书将会因站点的差异而有所不同。要生成这些证书并获取正确的 CA 证书,请咨询本地 SSL/TLS 专家。CA 证书必须用于对 SSL/TLS 客户端证书进行签名。
Web 服务器配置
对于基于 Apache 的 Web 服务器 (包括 PTC HTTP Server),CA 证书必须采用 PEM 编码格式。有关在 Apache 2.4 中配置 SSL/TLS 客户端证书身份验证的文档,可通过访问 Apache 网站来查看,相关 URL 如下:
对于简单的情况,Apache 中的 SSLCACertificateFile 指令可指定用于验证客户端 SSL 证书的 CA 证书文件。例如:
SSLCACertificateFile<httpserver_home>/<location_to>/ca.crt.
如果 SSL CA 证书是证书链,则可能需要设置 SSLVerifyDepth 指令,以指定要检查的证书链中的证书数量。有关 SSL CA 证书的详细信息,请咨询 SSL 专家。
前两个配置指令可放置在 httpd.conf 中,或 conf/conf.d 目录下的任何文件中。但是,PTC 强烈建议您创建新的站点特定 CONF 文件,并将此文件添加到 httpserver_home/conf/sslvhostsconf.d 目录下。此文件将自动添加到默认的 SSL virtualhost 配置中。创建新文件将有助于管理这些配置指令,并确保 PTC 更新不会覆盖任何特定的配置值。
配置这些值后,Web 服务器必须知道哪些 URL 需要进行身份验证。通常在
<httpserver_home>/conf/conf.d/30-app-[webappname]-Auth.conf 文件中进行此配置。该文件是自动生成的;因此,任何更改都有可能丢失。为避免覆盖这些配置值,请将这些值添加到先前在
httpserver_home/conf/sslvhostsconf.d 目录下创建的站点特定 CONF 文件中。有关如何从 PTC 配置对自动生成文件的更改的详细信息,请参阅
PTC HTTP Server 配置布局。
在每个 LocationMatch 块中,默认文件会至少配置 LDAP 身份验证。
此块中的指令可完全替换为相应的 SSL 指令。至少需要以下指令:
• SSLVerifyClient require
• SSLUserName [varname]
SSLUserName varname 自变量的值取决于站点安全性要求和证书配置。在设置 REMOTE_USER 变量时需要使用 SSLUserName 指令。作为 SSLUserName 的替代方法,FakeBasic SSL 选项可按 Apache mod_ssl 文档中所述的方式使用。建议使用这种替代方法,因为它提供了一个 Windchill 组件可尝试使用的伪 HTTP 基本身份验证标头。
某些 Windchill 客户端本身并不支持 SSL 身份验证。因此,需要使用特定的身份验证机制,或允许在某些 Windchill URL 上进行匿名访问。默认情况下,这些 URL 资源在 <ptc_httpserver_home>/conf/app-<webAppName>-AuthRes.xml> 文件中进行声明。无需 SSL 客户端身份验证即可访问 anonymous 或 protocolAuth 类型的任何资源。这些 URL 的 LocationMatch 规则必须包含 SSLVerifyClient none 指令。如果身份验证要求规定必须对所有 URL 进行 SSL 身份验证配置,则您还可以配置 Apache 服务器,以使这些 URL 可通过证书进行访问。
客户端兼容性
以下客户端需进行相应配置才能对 Windchill 启用 SSL 身份验证。
• Creo Parametric 2.0、3.0 和 4.0
1. 在 Web 浏览器中导入用户特定证书
▪ Internet Explorer: > > 。
▪ Chrome: > > 。
2. 启动 Creo Parametric 并转至“配置编辑器”
3. 在 Creo 3.0 和 4.0 M010 Chrome 嵌入式浏览器中,添加 dm_pki_authentication_url,并将其值设置为 Windchill 服务器的 URL
|
SSL 证书身份验证适用于 Chromium 嵌入式浏览器,而该浏览器在 Creo 4.0 F000 中不受支持,但在 Creo 4.0 M010 受支持。
Creo 2.0 不需要此步骤,因为该版本不支持 Chromium 嵌入式浏览器。
|
4. 保存要在下次启动 Creo Parametric 时重新加载的 config.pro 文件
|
对于 Creo 4.0,仅 Creo 4.0 M010 支持新的 config.pro 选项。
|
5. 关闭并重新启动 Creo Parametric
6. 通过 > 或使用同一服务器的“工作区”用户界面,注册 PKI 配置的 Windchill 服务器。
7. 使用浏览器中导入的证书进行登录
• Windchill Workgroup Manager 浏览器
1. 在 Web 浏览器中导入用户特定证书
▪ Internet Explorer: > >
▪ Chrome: > >
2. 配置嵌入式浏览器。转至 Windchill Workgroup Manager 安装点,在文本编辑器中打开 wgmclient.ini 文件
3. 找到首选项 pki.authentication.url 并将其值设置为 Windchill 服务器的 URL
4. 保存 wgmclient.ini 并启动 Windchill Workgroup Manager
5. 从 > 注册 PKI 配置的 Windchill 服务器
6. 使用浏览器中导入的证书进行登录
不支持对某些客户端进行 SSL 客户端证书身份验证配置。在您的站点上实施 SSL 身份验证之前,应先检查这些客户端的使用程度,以及这些客户端排除项目是否会成为使用 SSL 身份验证的障碍。PTC 不支持对以下客户端进行 SSL 身份验证配置:
• Windchill Archive
• Windchill Gateway for Creo Elements/Direct Model Manager
• Windchill STEP Connector
基于 Java 的客户端配置
大多数 Web 浏览器都有一个将客户端证书导入到其用户证书数据库的过程。收到请求时,Web 浏览器会提示用户输入证书。基于 Java 的客户端具有自己的 SSL 证书数据库,该数据库需要使用行参数来启用。需要提供以下参数才能使基于 Java 的客户端在质询时显示 SSL 客户端证书:
• -Djavax.net.ssl.keyStoreType=pkcs12
• -Djavax.net.ssl.keyStore=(path to pkcs12 file)
• -Djavax.net.ssl.keyStorePassword=(password for client certificate)
对于 Java 客户端,可以在 Java 控制台中将这些参数添加到 Java Runtime 参数。对于命令行应用程序,必须将这些参数指定为命令行 Java 虚拟机的自变量。