Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过浏览器或服务器验证ssl证书_Javascript_Node.js_Ssl_Https - Fatal编程技术网

Javascript 如何通过浏览器或服务器验证ssl证书

Javascript 如何通过浏览器或服务器验证ssl证书,javascript,node.js,ssl,https,Javascript,Node.js,Ssl,Https,我已经创建了一份自签名的证书 $ openssl genrsa -out key.pem 1024 $ openssl req -new -key key.pem -out request.csr $ openssl x509 -req -in request.csr -signkey key.pem -out cert.pem 并创建了一个HTTPS服务器: var server = https.createServer({ key: fs.readFileSync(__dirnam

我已经创建了一份自签名的证书

$ openssl genrsa -out key.pem 1024
$ openssl req -new -key key.pem -out request.csr
$ openssl x509 -req -in request.csr -signkey key.pem -out cert.pem
并创建了一个HTTPS服务器:

var server = https.createServer({
    key: fs.readFileSync(__dirname + "/key.pem"),
    cert: fs.readFileSync(__dirname + "/cert.pem")
}

然后我要了那一页。预期结果是浏览器抱怨连接不安全。我的问题是浏览器怎么知道这一点?验证证书并通知浏览器是服务器的工作还是浏览器的工作?

当您访问安全网站(使用https)时,服务器还会发送一个由权威机构签名的证书来证明其身份(这样您就知道自己没有被牵制)

那么,浏览器需要知道证书是否是真的,因为中间的人也可以发送证书。幸运的是,您的浏览器有一个可信任的权限列表。如果证书的权限签名与某个受信任的权限匹配,则一切正常,不会发出警报

但是如果没有匹配的权限,那么浏览器会询问您是否可以信任此权限。在自签名证书的情况下,你可以信任它(但在验证指纹之前,因为中间的人可以发送不同的证书来欺骗你,让他们相信他们是真正的交易)。

如果您信任它,那么浏览器将其导入并将其添加到证书以信任,不再再次发出警报(直到您的证书过期或更改)(如中间人的情况)。

< P>当您访问安全网站(使用HTTPS)时,服务器还发送由权威机构签署的证书以证明其身份。(这样你就知道你不会让男人处于中间)

你的浏览器需要知道证书是否是真的,因为中间的人也可以发送证书。幸运的是,你的浏览器有一个要信任的权限列表。如果证书的权限签名与可信的一个权限相匹配,那么一切都很好,并且没有提示。 <> P>但是如果没有官方的匹配,浏览器会问你是否可以信任这个权威。在一个自我签名的证书的情况下,你可以信任它(但是在验证指纹之前,因为中间的人可以发送一个不同的证书来欺骗你相信他们是真正的交易)。

如果您信任它,那么浏览器将其导入并将其添加到证书以信任,不再再次发出警报(直到您的证书过期或更改(如处于中间状态的人))。 验证证书并通知浏览器是服务器作业还是浏览器作业

服务器证书的主要作用是确保客户机正在与预期的服务器通信。 如果是客户端(浏览器)只需信任服务器,证书是有效的,中间攻击者中的某个人可以简单地声称是真正的服务器并声称证书是有效的。在此之后,客户端将建立与攻击者的加密连接,而不是真实服务器,这意味着攻击者可以访问敏感数据。因此,客户端必须始终正确检查服务器证书

我的问题是浏览器怎么知道这一点

简言之:通过检查颁发者的签名并遵循信任链直至本地受信任的根证书来检查证书是否受信任,同时检查URL的主机名是否与证书的主题匹配,以及证书是否仍然有效,即未过期和未撤销。有关更多详细信息,请参阅

验证证书并通知浏览器是服务器作业还是浏览器作业

服务器证书的主要作用是确保客户机正在与预期的服务器通信。 如果是客户端(浏览器)只需信任服务器,证书是有效的,中间攻击者中的某个人可以简单地声称是真正的服务器并声称证书是有效的。在此之后,客户端将建立与攻击者的加密连接,而不是真实服务器,这意味着攻击者可以访问敏感数据。因此,客户端必须始终正确检查服务器证书

我的问题是浏览器怎么知道这一点

简言之:通过检查颁发者的签名并遵循信任链直至本地受信任的根证书来检查证书是否受信任,同时检查URL的主机名是否与证书的主题匹配,以及证书是否仍然有效,即未过期和未撤销。有关更多详细信息,请参阅.

SSL证书由客户端验证。 服务器通常会在启动时验证证书是否损坏,但大多数服务器实际上不会验证其证书的合法性

为什么要验证证书? 验证服务器证书很重要,因为否则客户端无法真正知道它正在与谁通信。MITM(中间人)当第三方截取通信双方时,可能会发生攻击,他们可以向您提供他们的数据,而不是您认为您正在接收的来自服务器的数据

一点关于证书类型的知识 大多数证书都是由CA签名的,还有自签名证书和固定证书。我建议尽可能使用由CA签名的证书。第二个最佳选项(通常只能在组织内使用)将使用您自己的内部CA,然后使用您的CA证书对您的服务器证书进行自签名,这称为自签名证书,任何接收它的客户端或浏览器都不会自动信任它

在自签名选项中,您必须将CA公钥导入到CA密钥存储中,才能信任服务器证书。最后,只需一个固定的证书,这就是您的位置