当主机名配置失败时 SSL 失败
IBM® Business Automation Workflow 将主机名验证用于使用安全套接字层 (SSL) 的出站连接。 如果与服务器连接的主机名与 SSL 证书中的公共名称 (CN) 不匹配,那么将拒绝这些连接。 当初始配置使用 localhost 作为主机名时,很可能发生此问题。
javax.net.ssl.SSLException: hostname in certificate didn't match: requested_URL_or_SSL_connection != certificate_common_name 有关主机名的更多信息,请参阅本主题末尾的相关链接。
使用公共名称 (CN) 的证书配置
已建立与安全端口的连接后,初始握手包括验证证书。 当您HTTPS 连接到远程服务器时, Business Automation Workflow要求远程服务器SSL证书中的公用名与所连接计算机的主机名匹配。 然而,在几种情况下, Business Automation Workflow会使用 HTTPS 连接到自身。 因此, Business Automation Workflow必须使用一个证书进行设置,该证书的通用名称必须与 Business Automation Workflow连接自身时使用的主机名匹配。
创建概要文件时,缺省情况下, IBM WebSphere® Application Server 会生成有效期为 15 年的自签名根证书。 在分布式环境中,会为每个节点生成证书并使用根证书来签署该证书。 证书中的公共名称 (CN) 与概要文件创建期间所指定的主机名相同。
SSL 为点到点连接。 证书中的公共名称必须与尝试连接的计算机的主机名匹配。 当 Business Automation Workflow 配置为通过 Web 服务器连接到自身时, 必须使用具有公共名称的证书来设置 Web 服务器,该公共名称必须与 Business Automation Workflow 用于连接到此 Web 服务器的主机名相匹配。
使用主题备选名称 (SAN) 集的证书配置
在 X.509 证书标准中,主题备选名称 (SAN) 扩展使一组备选值与单个证书相关联。 例如,可以指定一组 DNS 名称或 IP 地址作为主机名的备选值。
如果已配置安全套接字层 (SSL) 通信,并且服务器证书的名称与服务器的主机名不匹配,那么可能会发生 SSL 连接失败,并显示 IOException 消息HTTPS hostname wrong。为了帮助解决此问题,您可以向服务器证书添加主题备用名称 (SAN) 集。
当客户(如 IBM Workflow Server 在SSL握手期间验证主机名(如 Workflow Center 时,它会检查服务器证书是否包含SAN集。 如果检测到 SAN 集,那么只使用 SAN 集中的名称或 IP 地址。 如果未检测到 SAN 集,那么只使用主题专有名称 (DN) 最重要的属性,通常是主题公共名称 (CN)。 将该值与客户机尝试连接的主机名进行比较。
这是在 IBM SDK for Java 中实现的预期行为,与 RFC 2818一致。
如果需要服务器端 (例如 Business Automation Workflow) 通过 SSL 在多个主机名上可用,那么必须创建具有 SAN 集的证书。 该集可以包含由诸如 DNS 名称或 IP 地址之类的实体组成的多个逗号分隔列表。
在 WebSphere Application Server 中,缺省情况下会创建没有 SAN 集的 SSL 证书。 另外,WebSphere 管理控制台未提供任何用于将 SAN 集添加到 SSL 证书的字段。 但是,您可以使用诸如 iKeyman 实用程序(WebSphere Application Server 的 Java 运行时环境随附的实用程序)之类的工具,将 SAN 集添加到 SSL 证书。
问题场景和解决方案
如果您使用 localhost 作为主机名来安装和测试 Business Automation Workflow ,那么会发生一个问题。 随后,如果您尝试使用外部名(例如,https://myname.mycompany.com:9443/bpm/rest)进行连接,或者如果您尝试从另一台计算机进行连接,那么验证将失败。 在流程检验器和 Process Admin Console 中,连接失败会生成错误。 为了避免发生此问题,配置文档将针对使用 localhost 作为主机名发出警告。 特别地,配置文档将针对把 localhost 用于分布在多台计算机中的环境发出警告。
如果您具有用于自己的开发目的的本地安装的 Workflow Center ,请使用诸如 bpm.company.com 之类的主机名来设置环境。 在 Windows 操作系统上,请在 Windows 主机文件中设置此环境。 始终使用该主机名来访问 Workflow Center 服务器。
在生产环境中,始终通过 HTTP Server 访问集群。 HTTP必须可以从 Business Automation Workflow访问,并且必须具有完全限定的主机名和匹配的证书。