java ssl 客户端证书,SSL客户端证书认证

TLS协议仅允许交换证书,而不是原始公钥 . 甚至"PGP keys"(如果你想用支持更少的OpenPGP for authentication in TLS取代X.509)实际上是证书(它们是公钥和一组标识符和属性的签名组合) .

这就是说,您可以使用自签名客户端证书执行客户端身份验证并依赖其公钥( but you will need to verify this public key against something your server already knows, such as a known list ) . 您需要首先了解实现此问题的安全隐患 . 这与自签名服务器证书不完全相同 . (我建议保留一种更传统的方法来验证服务器证书 . )

请注意,许多应用程序容器(例如Java中的Tomcat / Jetty)期望SSL / TLS层验证客户端证书 . 因此,如果您在那里跳过身份验证(并且希望稍后在容器内或作为应用程序的一部分执行),许多应用程序框架将会混淆 . 在执行需要在应用程序中进行身份验证的任何操作之前,您需要非常小心以确保在某处实际执行身份验证 .

例如,拥有一个允许任何客户端证书通过Tomcat / Jetty的信任管理器是可以的,但是您不能依赖于 javax.servlet.request.X509Certificate request属性以任何方式进行验证(大多数框架都会期望这样) . 您需要在应用程序中实现一些验证逻辑:例如,在任何经过身份验证的功能之前使用过滤器,将此客户端证书中的公钥与您已知的公钥列表进行比较(或者您希望将公钥与标识符) . 或者,您也可以在自定义信任管理器(在Java中)中执行此验证,这将减少应用程序中的工作量 .

您可以使用 SSLVerifyClient optional_no_ca 在Apache Httpd PHP设置(例如)中执行类似的操作 . 同样,您的PHP应用程序不能依赖已经过验证的证书,因此您也必须在那里实现验证 .

Don't do any of this unless you understand at which stage the certificate information you get has been verified.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值