2011-04-18 153 views
2

如果我使用SSL客户端证书对我的客户端进行身份验证,是否必须是站点范围的过滤器,或者我是否可以要求或不要求应用程序内的每个URL进行身份验证?所以我想仅针对某些URL的SSL客户端证书认证?

https://mysite.com/my_url不关心客户是谁,只是用“正常的” https https://mysite.com/my_sensitive_url要求客户端使用一个有效的客户端证书

我在工作的Ruby on Rails的,但我对SSL客户端证书认证是否足够灵活的一般问题感兴趣。我可以想象,为不同的URL设置不同的手写apache conf可能可以做到,但我更愿意在应用程序级别定义这种类型的东西。

+0

练习:通过不需要客户端证书即可完成(在SSL级别)。然后,在客户端发送包含URL的HTTP请求之后,服务器可以继续保持原样,或者重新协商SSL连接,并且此时需要('需要'或'需要')客户端证书。 – 2016-05-05 16:34:51

回答

2

您会(a)将服务器设置为通过SSL证书进行身份验证; (b)将服务器设置为'需要'而不是'需要'SSL客户端认证,然后(c)为需要用户登录的特定URL或模式定义访问规则,而不是针对其他用户登录。

+1

只是为了阐述这个......有一个问题,即服务器不知道在SSL握手完成之后客户端是否需要/ my_url或/ my_sensitive_url,因此服务器不知道是否需要证书直到为时已晚。这个答案的(b)部分解决了这个问题,而不需要SSL重新协商。 – Jumbogram 2011-04-19 01:52:38