我开发了一个应该使用基于X509的身份验证的项目。我遵循了IBM Worklight入门模块来开发这个项目。步骤是,
然后,我在authenticationConfig.xml文件中给出了登录模块,领域和安全测试的详细信息,如模块中所示。之后我为领域创建了一个挑战处理程序。我给了适配器程序的安全测试。
我已经使用ReamlB在Android模拟器中安装了Root CA.然后我在Android Emulator中安装了该项目。尝试访问适配器过程时,它显示登录表单以输入凭据。我输入了凭证作为“工作灯”,并输入了登录信息。但它显示了以下错误。
logcat消息是here。
现在,我有两个疑问。
我面临的错误是什么,有什么线索!
提前致谢!!
答案 0 :(得分:1)
以下是可能使其失败的一些可能情况,但正如我在评论中所说,请发布日志以便能够找出失败的原因。
两种最可能的情况是您的设备不信任服务器,或者证书未正确创建(特别是如果您使用中间CA,则可能是证书链未按正确顺序构建)。
要排除第一种情况(设备不信任服务器),请编辑authenticationConfig.xml以从安全测试中取出用户证书域。如果应用程序可以正常连接,则设备实际上信任服务器的证书,但如果它无法连接,则表示您尚未正确配置设备以信任服务器。当你进入设置>时,请确保安全>可信凭证>用户选项卡,您可以看到您在那里创建的证书。如果您在那里看不到您的证书,则表示它尚未正确导入。这通常是因为您没有为Android导入正确的格式,这是一个带有.crt扩展名的DER编码证书文件。如果您有.pem或.cer文件,则可以尝试在终端中执行以下操作(仅适用于Linux和Mac;请查看Windows等效的OpenSSL文档):
openssl x509 -inform PEM -outform DER -in CA.pem -out CA.crt
有关如何执行此操作的详细信息和屏幕截图,请查看此处:http://www.jethrocarr.com/2012/01/04/custom-ca-certificates-and-android/另请注意,在此网站中,他们使用adb将证书从计算机传送到设备,但出于测试目的,您可以将证书通过电子邮件发送给自己,或者将其放入设备可以从中下载的服务器中,然后打开设备内的附件/下载进行安装。这不是在生产环境中配置实际设备的安全方法,但出于测试目的,通常这样做比通过ADB推送它更容易。
如果您的设备正确信任服务器的证书,并且您可以在没有用户证书领域的情况下进行连接,那么这表明问题在于签名CA创建的证书,这通常发生在证书链上没有正确的顺序。
这是一般性的建议,但我需要看到日志能够告诉你确切的问题是什么。我在此处所说的大部分内容都可以在the User Certificate Authentication realm troubleshooting. And here is the rest of the User Certificate feature documentation中找到,以供将来参考。
此外,由于用户证书不需要您必须使用的特定凭据,因此我不确定我是否理解"默认凭据"的含义;您可以使用非验证用户域来登录"登录"您的用户,如果您想在不必输入有效凭据的情况下进行测试。
答案 1 :(得分:1)
很抱歉没有回答;显然这个问题与应用程序的真实性有关,而与用户证书身份验证没有直接关系。如果您在测试中使用应用程序真实性,请将其取出,并且它应该可以正常工作。