在 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 应用程序