在 IBM MobileFirst android 中使用自签名证书的问题

Posted

技术标签:

【中文标题】在 IBM MobileFirst android 中使用自签名证书的问题【英文标题】:Issue in using a self signed certificate in IBM MobileFirst android 【发布时间】:2016-06-03 08:22:05 【问题描述】:

我正在尝试从我的 android 应用程序连接到 https mobilefirst 服务器。使用自签名证书,但不确定它是否是自签名 CA 证书。

我使用了以下代码。 证书文件名:mycer.der 我已将此证书放在资产文件夹中。

现在我正在使用以下代码来验证证书。

WLClient client= new WLClient(getApplicationContext()); client.pinTrustedCertificatePublicKey("dev1mfp.mtb.der");

但我仍然收到以下错误

06-03 03:58:04.803 20647-20699/? W/System.err: javax.net.ssl.SSLPeerUnverifiedException: Cannot verify hostname: 00.00.00.00 06-03 03:58:04.803 20647-20699/? W/System.err: at android.net.SSLCertificateSocketFactory.verifyHostname(SSLCertificateSocketFactory.java:205) 06-03 03:58:04.803 20647-20699/? W/System.err: at android.net.SSLCertificateSocketFactory.createSocket(SSLCertificateSocketFactory.java:443) 06-03 03:58:04.803 20647-20699/? W/System.err: at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:394) 06-03 03:58:04.803 20647-20699/? W/System.err: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:170) 06-03 03:58:04.803 20647-20699/? W/System.err: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169) 06-03 03:58:04.803 20647-20699/? W/System.err: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)

请建议我需要在我的代码中添加什么或者是证书的问题。

【问题讨论】:

【参考方案1】:

证书固定文档明确指出不支持自签名证书。您必须使用从证书颁发机构购买的证书:https://www.ibm.com/support/knowledgecenter/SSHSCD_7.1.0/com.ibm.worklight.dev.doc/monitor/c_cert_pinning_intro.html

我建议在尝试实施证书固定之前,您应该联系您的 IT 部门以验证您的证书的来源。以免浪费您的时间。

此外,您的证书可能没有使用正确的主机设置...您还需要检查它,它是使用正确的主机生成的。

【讨论】:

感谢伊丹的回答

以上是关于在 IBM MobileFirst android 中使用自签名证书的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 IBM MobileFirst Platform Android 中绕过自签名证书

在 IBM MobileFirst android 中使用自签名证书的问题

如何在 android studio 中为 IBM MobileFirst 项目导入外部库项目?

IBM MobileFirst - 添加推送清单权限的原生 Android 应用程序

将 Android 环境添加到 IBM MobileFirst Shell 组件

在 IBM MobileFirst Platform 上获取位置时出错