【问题标题】:SSL Error in WebSphere Application Server while using Internal CA in IBM MobileFirst Adapter在 IBM MobileFirst Adapter 中使用内部 CA 时,WebSphere Application Server 中出现 SSL 错误
【发布时间】:2017-03-22 12:29:39
【问题描述】:

环境:

  1. WebSphere Platform 8.5.5.0 [BASE 8.5.5.0 gm1319.01] 以进程名称 Node01Cell\Node01\server1 和进程 ID 9392 运行
  2. 主机操作系统为 Windows Server 2012,版本 6.2
  3. Java 版本 = 1.6.0,Java 编译器 = j9jit26,Java VM 名称 = IBM J9 VM
  4. IBM MobileFirst 6.3.0.00.20141127-1357

HTTP Adapter 用于通过内部 CA 发布的 HTTPS 与 WebService 连接。

为了访问 Web 服务内部 RootCA 和 Web 服务公共证书,请按照以下步骤在 WAS 中手动添加。

SSL 证书和密钥管理 > 密钥库和证书 > NodeDefaultTrustStore > 签名者证书 > 添加 > 输入别名 名称和文件路径。

但同样失败,Retrieve from port出现以下错误。

ErrorReceived fatal alert: handshake_failure

但是,我已经验证了内部 CA 和 Web 服务端点证书在

中可用

${CONFIG_ROOT}/cells/Node01Cell/nodes/Node01/trust.p12

MFP default.keystore 中也添加了相同的证书,并在 worklight.properties 文件中启用了密钥库。

虽然上面的配置似乎没问题,但是当来自适配器的请求发送到 web 服务时,会记录以下错误。

[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, setSoTimeout(120000) called
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O 
Is initial handshake: true
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O %% No cached client session
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O *** ClientHello, TLSv1
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O RandomCookie:  GMT: 1473400159 bytes = { 246, 214, 135, 72, 132, 51, 89, 33, 32, 31, 239, 155, 210, 120, 83, 221, 214, 84, 136, 207, 132, 51, 172, 126, 33, 192, 150, 43 }
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O Session ID:  {}
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_RSA_WITH_AES_128_CBC_SHA, SSL_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_RC4_128_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_RSA_FIPS_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_RENEGO_PROTECTION_REQUEST]
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O Compression Methods:  { 0 }
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O ***
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O [write] MD5 and SHA1 hashes:  len = 81

[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, WRITE: TLSv1 Handshake, length = 81
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O [Raw write]: length = 86

[3/22/17 14:09:35:744 ] 000000ae SystemOut     O [Raw read]: length = 5
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O 0000: 15 03 01 00 02                                     .....

[3/22/17 14:09:35:744 ] 000000ae SystemOut     O [Raw read]: length = 2
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O 0000: 02 28                                              ..

[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, READ: TLSv1 Alert, length = 2
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, RECV TLSv1 ALERT:  fatal, handshake_failure
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, called closeSocket()
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, called close()
[3/22/17 14:09:35:744 ] 000000ae SystemOut     O WebContainer : 4, called closeInternal(true)
[3/22/17 14:09:35:744 ] 000000ae DataAccessSer E  logError FWLSE0099E: An error occurred while invoking procedure  [project mobile]SampleAdapter/HttpRequestFWLSE0100E:  parameters: [project mobile]
Http request failed: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
FWLSE0101E: Caused by:  [project mobile]javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failurejava.lang.RuntimeException: Http request failed: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at com.worklight.adapters.http.HTTPConnectionManager.execute(HTTPConnectionManager.java:236)
    at com.worklight.adapters.http.HttpClientContext.doExecute(HttpClientContext.java:185)
    at com.worklight.adapters.http.HttpClientContext.execute(HttpClientContext.java:169)
    at com.worklight.adapters.http.HTTP.execRequest(HTTP.java:145)
    at com.worklight.adapters.http.HTTP.invoke(HTTP.java:134)

Webservice URL 可从浏览器访问,并以绿色显示 SSL 锁定显示,没有错误或警告。

【问题讨论】:

  • "handshake_failure" 似乎表明客户端(在本例中为 WebSphere Application Server)和服务器(您尝试使用的 Web 服务)没有共同的密码套件。
  • 它似乎比证书有效性低,甚至可能比密码套件低。您有来自客户端的日志记录吗?
  • 您有办法检查运行 Web 服务的服务器支持的密码套件吗? (我假设它与运行 HTTP 适配器的服务器不同。)如果它是面向 Internet 的服务器,ssllabs.com/ssltest 是查看该信息的一种简单方法
  • @patbarron,为了同步密码套件,我可以在 WAS 中测试和进行必要更改的建议方法是什么。
  • 您可以参考 (ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/…) 查看您的应用服务器中启用了哪些协议和密码。您可以使用nmap --script ssl-enum-ciphers -p <yourServerPort> <yourbackendServerHostname> 获取后端服务器支持的密码和协议列表。例如:nmap --script ssl-enum-ciphers -p 443 google.com

标签: ssl https ibm-mobilefirst websphere


【解决方案1】:

IBM MobileFirst Platform Foundation (6.3.0.0)应用最新的iFix

这应该可以解决问题,因为它包含 APAR PI42320 修复。

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 2018-09-22
    • 2023-03-28
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多