《Spring Security3》第十一章(客户端证书认证)第一部分翻译
?
第十一章客户端证书认证(ClientCertificate Authentication)?
?我们可以看到两个证书的交换(服务端证书和客户端证书)提供了两端参与者的认证并确信他们之间的继续会话是安全的。清晰起见,我们省略了一些SSL握手和证书信任检查的细节,但是,我们建议你去阅读SSL和TLS的协议和证书,关于这些课题有很多好的参考手册。RFC 5246, The Transport Layer Security (TLS) Protocol V1.2 (http://tools.ietf.org/html/rfc5246),是学习客户端证书的很好入门资料。如果你想了解更细节的东西,那Eric Rescorla的SSL and TLS: Designing and Building Secure Systems是关于协议和实现的极佳细节材料。
?这是建立SSL时,触发Tomcat请求客户端证书的所需要的配置。到这里,我们可以重新启动Tomcat了。
?但是,当你试图访问站点中受保护的区域,如“My Account”区域,你将会被重定向到登录页面。这是因为我们没有配置Spring Security辨别证书中的信息——到这里,客户端和服务器的所有交互停止在Tomcat服务器本身那里。
客户端证书认证的问题解决
???????? 不幸的是,如果我们说第一次就能将客户端认证配置正确且没有任何错误出现是很容易得,那我们是在骗你。事实上,尽管这是一个很伟大和强大的安全设施,但是浏览器和web服务器的文档都很匮乏,出错信息在好的情况下会比较令人费解而在不好情况下根本就是误导性的。
???????? 记住到此时我们还有涉及到SpringSecurity,所以调试器可能帮不上什么帮(除非你手头有Tomcat的源码)。一些常见的错误和要检查的事情如下:
l? 当你访问站点时,没有提示你要求证书。有很多情况可能会导致如此,而这也是最令人迷惑的问题。以下是要检查的事情:
? ?u? 确保你使用的客户端浏览器正确安装了证书。如果你访问上面的网站被拒绝,有时你需要重启整个浏览器(关闭所以的窗口);
? ?u? 确保你访问的是服务器的SSL端口(在开发环境下一般为8443),并在URL中选择了https协议。客户端证书对不安全的浏览器链接不会提供。确保浏览器也信任服务器的SSL证书,即使你强制它信任一个自签名的证书;
? ?u?确保你添加了clientAuth指令到Tomcat配置中(或者对等的任意你使用的应用服务器);
? ?u? 如果以上的所有都失败的话,使用网络分析器或包探测器,如Wireshark (http://www.wireshark.org/) 或Fiddler2(http://www.fiddler2.com/) 来了解线路上的交流和SSL密钥交换。
l? 如果你使用的是自签名的客户端证书,确保公钥被导入到服务器端的trust store中。如果你使用的是CA签发的证书,确保JVM信任CA或者CA的证书被导入到了服务器trust store中。
l? 特别在IE下,根本不会报告客户端证书失败的细节(只会报告一个“页面不能展现”的错误)。使用Firefox来查看是否会有客户端证书相关的错误。
1 楼 idision 2012-09-11 您好,请问每次导入新的客户端证书到信任列表都需要重启tomcat嘛