2013-05-30 73 views
1

好吧,我确定这是显而易见的,我错过了一些非常重要的东西。我们正在向服务器发送一个http请求。为了证明我们是谁发送请求,我们附上一个证书。数字证书签名

此证书具有可信的CA,因此服务器知道证书是真实的。

我没有得到的一点是我们对服务器说,可以信任来自Comodo的证书。精细。所以我发送请求,它说我是'公司A',并且这是由Comodo认证的。

我们运行服务器的客户只是想知道CA是谁,所以他们可以信任它。说得通。但是,证书中的其他内容肯定需要检查才能使用嵌入式公司名称?否则,我可以为我自己的私人公司购买另一份证书,并从Comodo获得该证书,并且该证书也将根据服务器的有效性进行验证。

请赐教!

感谢 西蒙

回答

0

如果我理解正确的,你问一个人,在一个网络浏览器去一个网站,“A公司如何能够确保它真的是“A公司”,而不是一个冒牌者,由同一个信任的CA(Comodo)颁发的'B公司'的证书。

快速回答是浏览器确实检查证书上的名称,而不仅仅是它是否信任发证CA.证书中的主题字段是专有名称(DN),类似如下:

CN = www.google.com,O = Google Inc,L = Mountain View,S = California,C = US

浏览器可以检查CN(Canonical Name)是否与您在浏览器中输入的内容相匹配(https://www.google.com/),以确保您位于正确的网站。有时候CN不匹配,但是证书包含的主题备用名称包含一个匹配的名称。无论哪种情况,证书都会包含您尝试加载的网站,因此您可以验证它是否为该网站的正确证书。

此外还有做很多其他的检查是(或可能):
*检查当前日期和时间是否在有效期证书内
*检查证书没有被撤消(使用CRL或OCSP)
*检查签名是由受信任的CA有效,并签署
*检查签名CA实际上是CA在CA证书(密钥用法场)
*检查证书本身的使用是确定它是服务器证书
*检查公钥是否足够强大(例如,至少2048 (RSA)
*检查签名算法是否足够强大(例如,SHA256RSA与SHA1RSA)
*检查有效期足够短(例如,服务器为3年或更短)