问题描述
在Android 10上,安装了.p12客户端证书(包括用户密钥,用户证书和CA证书),并转到要求客户端证书的Chrome或FF中的URL,KeyChain不会提示您选择已安装的证书使用。 “ KeyChain”对话框会闪烁一秒钟,但没有列出证书,只是出现并报错:ERR_BAD_SSL_CLIENT_AUTH_CERT
。
此过程可在Android 9及更低版本上使用相同的.p12以及在各种平台上的桌面浏览器正常运行,因此用于请求客户端证书的.p12和Apache配置将显示为有效。
我所发现的可能与Android 10的更改有关的是: https://developer.android.com/about/versions/10/behavior-changes-all#keychain
不幸的是,尚不清楚更改内容可能需要什么,以及它是否在Apache配置中还是在.p12本身中。
如果有人有任何想法,很乐意提供更多详细信息,而不是一开始就抛弃我能想到的一切。
修订:
经过大量测试,看来Android 10似乎不喜欢由中间CA证书颁发的客户端证书。
尽管将整个链放入.p12(根CA证书,中间CA证书和叶证书)中,但当站点请求客户端证书时,Android 10上的KeyChain不会提供已安装的证书。
同一根CA颁发具有与上述扩展名和属性相同的扩展名和属性的叶证书,然后放入.p12(根CA证书和叶证书)即可。
不幸的是,我需要使用中间层来颁发叶子证书,但是我不知道为什么这似乎仅在Android 10上不起作用!不确定这是否是错误或其他特定要求才能使其正常工作。
我还尝试过分别安装根CA证书和中间CA证书,作为“受信任的凭据(用户)”,但这没什么区别。
叶子证书扩展名属性是:
keyUsage = digitalSignature
extendedKeyUsage = clientAuth
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)