Pam*_*Pam 2 java authentication ssl kerberos
我正处于Java EE应用程序的"预设计"阶段(如果有这样的事情!),它将在客户端使用Swing框并实现Web和服务器层的组件.
我立即提出了一些技术选择,并一直在阅读Kerberos和SSL如何工作之间的差异.我无法找到任何答案的一个领域是如何在Kerberos或SSL之间进行选择.换句话说,您如何判断何时使用任何一种协议?
假设Swing客户端不受特定传输(UDP,TCP或其他)的约束,并且可以使用/ any.如何选择这两者中的哪一个更适合其应用?
谢谢!
并突然(几个月后)出现一个狂野的系统管理员......
我将不得不成为异议的代言人.你不会在没有 CA的情况下建立PKI的想法是非常荒谬的.您必须通过简化创建过程来维护PKI的完整性和性能.你必须在某个地方创建和存储证书,那将是什么?热潮,你有一个CA. 任何体面的PKI也需要维护CRL,管理员是否应该手动编写?您也可以忘记使用不同类型的509,因为手动维护它的开销会让您的思维开放,将其打开并变成灰色浆液.
我想您可以使用openssl的CLI手动创建票证,只需将它们ftp到远程客户端,但这对于可观大小的部署来说是一个巨大的麻烦.从本质上讲,如果您的部署太小而无法手动生成证书(重复输入信息和所有内容),然后只是不担心CRL是一个合理的计划,您根本不需要高级身份验证系统.TLS + LDAP(一个服务器证书用于机密性而非身份验证)的内容更合适.
好了,现在我已经清除了一些误解,让我们实际回答你的问题:你想什么时候使用SSL而不是Kerberos进行身份验证?基于x509的身份验证是一个令人难以置信的模糊的野兽,主要是因为大多数人(如上面的Michael-O)没有意识到SSL特别是因为它正在验证用户.我知道有一些FTP程序通过这种方式进行身份验证,中间件使用它...有时(听起来与java谈话中的用例很接近),而vpn客户端/网关通常使用SSL证书进行身份验证.
SSL的使用意味着我在那里谈到的PKI,如果您的用例涉及机密性,这将非常有用.DoD是企业的一个很好的例子,它将PKI广泛用于身份验证之外的功能.在这种情况下,假设所有相关的客户端程序都支持x509身份验证,这很有意义.它仍然是一个奇特的设置,你仍然需要弄清楚最终用户将如何"呈现"他们的SSL凭据到系统(客户端配置,智能卡等),但它将很好地融合在一起.除了奇怪的适合,kerberos通过临时票证进行身份验证,而SSL证书通常持续很长时间(这就是为什么需要CRL),这意味着如果在一个证书上考虑到永不改变的密钥,则攻击者将有几个月的时间他们必须找到一个新的证书之前的免费游乐设施,而不是kerberos,他们只有一天,并且只有在没有销毁机票的情况下.
所有其他情况应尽可能使用Kerberos身份验证.它提供了正确的安全层,实际上是作为一个大型网络身份验证系统设计的,这就是为什么你有很难用SSL复制的东西(比如作为服务而不是普通用户进行身份验证),而只是为了他们想要的工作目的.您的用例总是需要考虑现有的基础设施,这可能是面向kerberos的,有时是面向LDAPS的,但几乎从不以x509身份验证为导向.换句话说:无论你写的是什么,更有可能在kerberos基础设施中运行,所以你不妨以某种方式插入它.管理员熟悉Kerberos-as-authentication而不是509-as-authentication,您也将从中受益更多.对此的看法是,机票外的机密性是一种玩笑.NFSv4有一些弱DES(并且我并不意味着3DES甚至)加密,它(以某种方式)与kerberos票证有关,但它进行了身份验证,而且基本上就是它所做的一切.
我希望看到x509的一些灵活性与kerberos风格的基础设施(服务的识别和即将到期的票证的"一次性"方面)结合到一个比x509更广泛实施的解决方案中现在,但在这个阶段,它主要是白日做梦.
摘要:
x509是好的,如果基础设施要求不会成为问题,并且您将使用PKI进行其他工作,但可能会不必要地重复工作,或者如果部署可能会有kerberos基础设施.
Kerberos是一种类似但更好的身份验证方案,它被更广泛地使用/理解,但根本无法帮助您使用PKI,您可以获得身份验证,就是这样.
比较 Kerberos 和 SSL/TLS 没有意义。
它不一定是其中之一。例如,即使您使用 SPNEGO (Kerberos) HTTP 身份验证,使用 TLS(通常在服务器端使用 X.509 证书,通过 PKI 验证)来保护传输安全通常是有意义的。如果不是,则在 HTTP 标头中交换的 SPNEGO 令牌保证了身份验证,但其余的 HTTP 消息可能已被攻击者修改。
归档时间: |
|
查看次数: |
3004 次 |
最近记录: |