这件事一直在困扰我几天。我读过关于整个问题的很多其他问题,但仍然无法继续。如何在Android中使用自签名SSL证书
我已经创建了一个简单的测试应用程序来测试Android上的SSL。应用程序只有一个按钮,当点击时,应用程序会尝试通过SSL加密连接向我的测试服务器发送“Hello World”,然后使用完全相同的短语进行响应。
首先,我使用openssl为我的服务器创建了一个测试密钥和测试证书。然后我一直遵循Crazy Bob's blog中显示的说明。我从Bouncy Castle的网站直接获得了Bouncy Castle提供商,创建了一个可信的密钥库,如Crazy Bob的博客所示,并且我相信这一切都正确。
当我试图运行我的代码时,出现异常“IOException:密钥存储区的版本错误”。然后我在StackOverflow上找到了this question。在那里有人建议我应该尝试使用旧的充气城堡供应商,而不是最新的bcprov-jdk15on-147.jar。我继续记住这一点,并最终尝试了从jdk13-146到jdk16-146的每个bcprovider。每次我仍然得到相同的“IOExcpetion:密钥存储的错误版本”。例外。
然后我发现yet another question关于StackOverflow上的类似问题。有人设法通过使用512位大小的密钥而不是1024大小的密钥来摆脱该异常。好吧,我试了一下,什么都没做,但同样的例外。
所以我现在在这里,想知道下一步该做什么。我几乎没有想法和谷歌搜索结果。
我的网页代码是疯狂鲍勃代码的1对1副本,此外,应用程序只有处理按钮的活动类。我试图在API级别7上实现这一点。
任何帮助将不胜感激。谢谢。
如果您将目标API移动到类似10或14的东西,它是否会开始工作?在处理较旧的API级别时,测试较新的API并不是一个坏主意,只是为了确保它不是兼容性问题。 – matt5784
我需要为大脑树的Android项目创建“.pem”文件。我安装了openssl并运行以下命令:openssl> s_client -connect $ https://xxx.xxx.xx:443 2>&1 | \ sed -ne'/ -BEGIN CERTIFICATE - /,/ - END CERTIFICATE-/p'> mycert.pem 但我在s_client中出错。请帮帮我。我从Crazy Bob的博客得到命令。 –