繁体   English   中英

只接受某些证书

[英]Only accept certain certificates

我已经创建了自己的CA,并且希望使用其证书与使用SSLSockets的服务器进行通信。 我可以使用当前使用的信任库来做到这一点,但我想进行更严格的限制,以便我的服务器仅接受我明确决定的客户端的连接,这些客户端必须拥有由我的CA签名的证书(现在,任何具有由我的CA签名的证书被授予访问权限)。 其背后的目标是能够通过从服务器的信任库中删除一些证书来吊销证书。

想象一下,有两个设备A和B,它们都由我的CA签署了证书。 我只想授予对A的访问权限,而不要授予对B的访问权限。如果我仅在服务器的信任库中拥有A的证书,则两个客户端都会收到BadCertificate异常; 在我添加CA的pem文件的那一刻,无论A和B的证书是否已显式添加到信任库中,A和B都被授予访问权限。

有什么想法或替代方法吗? 谢谢。

PKI基础结构的撤销部分(例如,如果您拥有自己的CA会得到什么)通常是使用CRL(证书撤销列表)或OCSP(在线证书状态协议)完成的。

如果对于只有几个客户端的小型PKI来说,这太费力了,那么您还可以对接受的证书(白名单)或被撤销(黑名单)的证书的指纹进行硬编码,并检查每个连接是否获得了证书匹配指纹。 当然,您需要在每次吊销(黑名单)或每当您颁发新证书(白名单)时更新应用程序,这样就不能很好地扩展。 但是,CRL也会出现相同的问题,需要将其分发给每个客户端。

OCSP可扩展性更好,因为客户端尝试在连接时检索吊销状态,但是您需要设置OCSP响应器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM