首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android:为什么客户端不发送ssl证书,而不是由服务器端的同一CA签名

android:为什么客户端不发送ssl证书,而不是由服务器端的同一CA签名
EN

Stack Overflow用户
提问于 2012-08-28 09:29:52
回答 1查看 1.8K关注 0票数 1

我有两个场景用于创建带有客户端验证的ssl连接。

1-我的android客户端和服务器拥有由同一个CA签名的证书,启用了服务器上的客户端验证。我在信任管理器密钥库中加载CA证书,在密钥管理器密钥库中加载客户端key+cert+ca,并将其传递给ssl.init(密钥管理器、信任管理器)。它工作得很好,双方互相交换和验证证书。

2-现在我有不同CA签署的客户端和服务器证书,比如由ServerCA签署的服务器证书和由ClientCA签署的客户端证书。我重复上述过程,但客户端从来不发送任何证书时,服务器要求,为什么?

  • 在ssl.init中,密钥管理器和信任管理器之间的联系是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-28 14:34:13

客户端证书由服务器在证书请求消息中的TLS握手过程中请求,该握手包含服务器愿意接受的证书颁发机构列表(其主题DNs)。

客户端通常使用此方法来选择要发送的证书(并选择是否发送证书):如果具有证书链的客户端可以指向列表中的CA之一,它将使用该链。

使用openssl s_client -connect the.host.name:443应该在包含服务器证书的部分之后向您显示可接受的CA列表。

如果您的客户端没有指向其中一个的链,则不太可能使用客户端证书。在这种情况下,类似Java的客户端不使用客户端证书的一个常见原因是在密钥库中导入了客户机证书而没有其中间证书(请参阅这个问题)。另一个潜在的原因可能是该服务器根本不了解颁发该其他客户端证书的CA (有或没有中间CA证书)。(我假设您的服务器不会发送空列表。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12156404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档