ssl的java安全配置
我对SSL/TLS有以下问题。ssl的java安全配置,java,tomcat,ssl,digital-certificate,Java,Tomcat,Ssl,Digital Certificate,我对SSL/TLS有以下问题。 服务器hello后,启动服务器的身份验证阶段。 从各种文章/书籍来看,这一阶段似乎是可选的。例如在维基上 服务器发送其证书 消息(取决于所选的 密码套件,这可以由 服务器) 但我不明白说它依赖于加密套件意味着什么。 因此,我的理解是,要么是ServerKeyExchange,要么是ServerHello之后的证书 所以我的问题是,服务器身份验证是否可以一起省略? 例如,要在Tomcat中省略客户端身份验证,只需将连接器配置为不请求它。 如何可以省略服务器身份验证?
服务器hello后,启动服务器的身份验证阶段。
从各种文章/书籍来看,这一阶段似乎是可选的。例如在维基上 服务器发送其证书 消息(取决于所选的 密码套件,这可以由 服务器) 但我不明白说它依赖于加密套件意味着什么。
因此,我的理解是,要么是
ServerKeyExchange
,要么是ServerHello
之后的证书
所以我的问题是,服务器身份验证是否可以一起省略?
例如,要在Tomcat中省略客户端身份验证,只需将连接器配置为不请求它。
如何可以省略服务器身份验证?它是否依赖于我使用的java框架(如果它支持的话)?
省略服务器身份验证意味着什么?如果证书未发送,则ServerKeyExchange
将成为强制性的,或者如果想要通过身份验证阶段以提高性能,或者因为没有任何意义,框架通常允许提供本地公钥
还是像维基所暗示的那样,这在某种程度上取决于加密套件?
注意:
我知道服务器应该始终经过身份验证。不过,我的问题的背景是客户端应用程序和服务器运行在同一台机器上(我猜是java运行时),因此可以认为绕过服务器身份验证是安全的(我认为)
欢迎任何意见
谢谢 在TLS/SSL中,服务器身份验证是可选的。
如果在TLS规范中选择不带身份验证的TLS/SSL密码套件(例如TLS\u NULL\u WITH\u NULL\u NULL
(关闭身份验证和加密)或TLS\u DH\u anon\u XXXX
(仅使用加密),则不会发送服务器证书
纯Java连接器似乎不支持没有authn的TLS/SSL。
但是我认为带有SSLCipherSuite=aNULL
的本机连接器支持它
我不知道禁用authn是否安全,也就是说,DNS欺骗等攻击可能是威胁。
如果性能没有问题,我认为您最好使用服务器authn。
或者,关闭TLS/SSL本身可能是一种选择。(加密服务器-客户端通信可能毫无意义,因为计算机管理员可以窃取证书文件并转储JVM堆。)当数据在不受信任的网络上传输或其中一个端点不受信任时,身份验证和加密非常重要。如果您的应用程序只在本地主机上建立连接,那么身份验证和加密就不重要了(您的数据和应用程序在locahost上这一事实意味着对本地主机的信任)。您可以从
你得到了完整的配置,以及如何创建keytool和如何生成证书表单,而DNS欺骗呢?“localhost”在你的主机文件中;它不会使用DNS,因此不会被欺骗。或者使用127.0.0.1Ok。但是,如果另一个名称也希望解析为127.0.0.1呢?不会发生。127.*.*是一个特殊范围,第2节第6段。Habe上面的评论是不正确的。@Habe:谢谢你的回复。因此,只有当客户端支持匿名DH时,非身份验证才可能?如果不是,它是强制性的?这是wiki quote中的意思?同样,当你提到本机连接器时,你引用的是哪个类?@user384706:DH anon支持不带身份验证的TLS。规范(RFC 2246的c.f.§9)中没有强制要求。正如维基百科中的“取决于选定的密码套件”,它应该和我说的一样。并且本机连接器处于运行状态。@habe:最后一个问题:您认为即使客户端和服务器在同一台机器上,dns欺骗也可能是一种威胁吗?@user384706:是的。当您的客户端使用“”并且DNS提供“localhost=”时,它可能会被重定向到另一台计算机。@habe:所以没有概念认为我已经在本地拥有公钥存储,我将它传递给java框架以使用它,而不是在身份验证阶段询问它?使用DH anon还是我们交换了证书?