【发布时间】:2012-08-14 20:12:19
【问题描述】:
我是我部门内部网站的项目经理,我正在尝试为该网站设置用户名/密码身份验证的替代方法。我的印象是,理想的方法是在每个授权设备上使用 SSL 客户端证书来实现这一点,但是在尝试消化了几天的信息甚至购买了一本关于 OpenSSL 的书之后,我什至不知道如何开始。
设置的要点如下:
- 在 IIS 6 上运行的网站
- 安装了 OpenSSL 模块的 PHP 5.2
- Windows Server 2003
- 登录设备包括 Windows XP/Windows 7 PC 和 Blackberry 设备
- 有效的 CA 签名 SSL 证书当前安装在服务器上并需要连接
我想做的是从连接设备请求客户端证书;如果不可用,请为 LDAP 身份验证请求用户名和密码(目前正在运行)。一旦通过身份验证,我希望用户能够生成和下载客户端证书,以便在设备上安装以连接到该服务器,而无需使用用户名/密码组合。
我知道我可以使用 cookie 进行相同类型的“自动登录”,但我认为使用这种方法可以增强安全性,尽管配置更加繁琐。
我希望这里的某个人可以为我指明正确的方向以开始这样的事情,或者告诉我是否完全朝着错误的方向前进以完成此任务。我确信我的理解存在很多差距,但是到目前为止我读过的每个教程要么过于笼统而无用,要么跳入了一定程度的复杂性,在我得到之前我已经无法理解了不止几行。
提前感谢您可以分享的任何建议!
【问题讨论】:
-
客户端证书是指自签名 SSL 证书吗?或者只是用于传输的 AES 256 加密密钥文件?自签名 SSL 证书在大多数(如果不是全部)浏览器中都会出现问题,因为自签名证书不是有效的身份验证方法,而是完全验证证书。
-
如果安全很重要,那么您确实希望使用比 5.2 更新的 PHP 版本。如果不再受支持的 PHP 版本中的已知错误绕过任何安全措施,那么任何安全措施都将化为乌有。
-
今年秋天我们将升级到 5.2 以上;我尝试升级到 5.3/5.4,但 SQL Server 驱动程序或 FastCGI 或两者都有问题,这取决于我尝试与 IIS6 一起迁移到的版本,但我们将在下个月升级整个服务器包或二。
-
这听起来很狡猾,我的意思是你正在交易一个可能被盗并且可能很容易被盗的(客户端计算机在不安全的网络上,客户端计算机不安全)来代替对用户凭据的静态要求。我只是不知道您打算如何保护这种类型的登录,我个人也无法想到,因为您将依赖链中最薄弱部分的安全性,即客户端机器/设备。
-
感谢您就使用用户证书自动登录相关网站的适用性提出的集体建议。但是,还有许多其他层可以保护登录凭据的安全性。首先,政策要求每个用户都有一个强密码才能登录计算机或黑莓,以便访问设备,这已经使用户可以通过 AD 访问网站导航的文件结构以及网站解析以供显示的数据库。所以添加另一个密码不会增加......
标签: php iis ssl client-certificates