Gmail,道明(加拿大银行),皇家银行(加拿大银行)都使用ssl。当你检查他们的证书时,他们都有
Common Name (CN) mail.google.com
或更一般地说:
Common Name (CN) <url>
这是否需要防止中间人攻击?
JBoss允许客户端和服务器使用证书和ssl进行身份验证。有一件事似乎很奇怪,你不需要在证书上提供你的主机名。
我认为这意味着如果服务器B在您的信任库中,则服务器B可以伪装成他们想要的任何服务器。
(同样地:如果客户B在您的信任库中......)
我在这里遗漏了什么吗?
Client Server
=================================================================================================
1) Client sends Client Hello
ENCRIPTION: None
- highest TLS protocol supported
- random number
- list of cipher suites
- compression methods
2) Sever Hello
ENCRIPTION: None
- highest TLS protocol supported
- random number
- choosen cipher suite
- choosen compression method
3) Certificate Message
ENCRIPTION: None
-
4) ServerHelloDone
ENCRIPTION: None
5) Certificate Message
ENCRIPTION: None
6) ClientKeyExchange Message
ENCRIPTION: server's public key => only server can read
=> if sever can read this he must own the certificate
- may contain a PreMasterSecerate, public key or nothing (depends on cipher)
7) CertificateVerify Message
ENCRIPTION: clients private key
- purpose is to prove to the server that client owns the cert
8) BOTH CLIENT AND SERVER:
- use random numbers and PreMasterSecret to compute a common secerate
9) Finished message
- contains a has and MAC over previous handshakes
(to ensure that those unincripted messages did not get broken)
10) Finished message
- samething
客户端具有已发送证书的公钥(步骤7)
客户的证书有效,因为:
这不是重播攻击,因为可能随机编号(步骤1或2)随每条消息一起发送
服务器具有发送证书的公钥(步骤6和步骤8)
服务器的证书有效 因为:
这不是重播攻击,因为可能是随机数(步骤1或2) 与每条消息一起发送
假设客户端的信任库中包含证书:
服务器A的主机名为www.A.com
服务器B的主机名为www.B.com
假设:客户端尝试连接到服务器A,但服务器B启动中间人攻击。
自服务器B:
似乎服务器B可以轻易地伪装成服务器A.
我有什么遗失的东西吗?
答案 0 :(得分:2)
你能否指出一些文字说JBoss不需要证书中的主机名,或者只是你的观察?我假设“主机名”是指公用名(CN)或专有名称(DN)??
通常应用程序应检查X.509证书:
有效日期范围
用法(例如;服务器认证)
连锁到受信任的根
CN ==目标主机的DNS名称(可能是另一个名称,而不仅仅是DNS)
未撤销(使用CRL或OCSP)
从技术上讲,一个应用程序可以选择忽略其中的任何一个,只是表明一切都与证书相符......但这很糟糕:)
答案 1 :(得分:2)
我认为你错过了一些东西,但我不确定我是否理解你的推理。
然而,当服务器B试图在中间攻击中发动一个人时,你说它有一个公钥。这是事实,但是要设置ssl连接,您还应该拥有属于该公钥的私钥。此外,使用的证书与dns名称(在https的情况下)相关联。所以客户试图连接到A,他在www.a.com上输入。由于我们假设B不知道A的私钥,他将拥有另一个密钥对。他永远无法从主要CA获得有效(即可信)证书,该证书与他不拥有的域相关联。
因此,B永远无法获得通用名称www.A.com的证书,因此,B无法在中间攻击中执行任务。