Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Openssl 需要澄清私钥和公钥以及证书吗_Openssl_Ssl Certificate - Fatal编程技术网

Openssl 需要澄清私钥和公钥以及证书吗

Openssl 需要澄清私钥和公钥以及证书吗,openssl,ssl-certificate,Openssl,Ssl Certificate,我查阅了很多关于使用openssl的教程和示例,但没有一个足够清晰或完整 我理解Diffie-Hellman算法本身,但我不清楚openssl是如何工作的 在没有连接到服务器的情况下,如何从私钥生成公钥 客户机和服务器都必须使用相同的prime和base,因此除非它们是预先确定的(是吗?),否则在商定prime和base之前,您无法从私钥生成公钥 证书中的素数和基在哪里 客户端和服务器是否应该具有相同证书的副本?客户端只是检索服务器证书,并看到它与自己的证书相同 证书的验证是在握手过程中自动完成

我查阅了很多关于使用openssl的教程和示例,但没有一个足够清晰或完整

我理解Diffie-Hellman算法本身,但我不清楚openssl是如何工作的

在没有连接到服务器的情况下,如何从私钥生成公钥

客户机和服务器都必须使用相同的prime和base,因此除非它们是预先确定的(是吗?),否则在商定prime和base之前,您无法从私钥生成公钥

证书中的素数和基在哪里

客户端和服务器是否应该具有相同证书的副本?客户端只是检索服务器证书,并看到它与自己的证书相同

证书的验证是在握手过程中自动完成的还是必须进行编程

当您加密和解密时,这不是由openssl堆栈自动完成的吗?我需要调用加密和解密函数来完成吗?

在此期间,服务器和客户端需要首先协商双方都支持的通用密码套件。如果他们同意DHE密钥交换和RSA身份验证(这是一种非常常见的情况),服务器总是向客户端发送Certificate(第7.4.2节)和ServerKeyExchange(第7.4.3节)消息,然后客户端发送ClientKeyExchange(7.4.7)消息作为响应

您如何从私钥生成公钥而不使用 连接到服务器

客户机和服务器都必须使用相同的prime和base,除非 您无法从中生成公钥 私钥,直到您同意prime和base

证书中的素数和基在哪里

现在介绍一下在SSL/TLS协议中应用的Diffie-Hellman流:

服务器选择素数(p)和基数(组Zp的生成器g)。通常它在服务器源代码中是固定的,或者sysadmin可以提供自己的dhparam文件(例如由
openssl dhparam
命令生成)。它可以是公共的,也可以重复使用。只有p的长度对安全性很重要

服务器随机生成其秘密值(Xs)和公共值(Ys=g^Xs mod p)。它向客户端发送带有p、g、Ys的ServerKeyExchange消息

客户机接收p、g、Y。它随机生成其秘密值(Xc)和公共值(Yc=g^Xc mod p)。它发送回带有Yc的ClientKeyExchange消息作为响应

双方现在都可以计算公共主密钥(S=Yc^Xs=(g^Xc)^Xs=g^(XcXs)mod p,S=Ys^Xc=(g^Xs)^Xc=g^(XsXc)mod p)。它用于进一步的计算

客户端和服务器是否应该具有相同证书的副本?这个 客户端只是检索服务器证书,并看到它是相同的 作为它自己的

客户端接收包含服务器证书的证书消息(带有中间信任链)。客户端通过检查是否可以通过中间CA证书重建从您的证书到默认安装在其系统中的根(自签名)CA证书的信任路径来验证它

证书的验证是否在中自动完成 握手还是必须编程

当您加密和解密时,这不是由openssl堆栈自动完成的吗?我需要调用加密和解密函数来完成吗

SSL/TLS协议被设计为对任何使用它的应用程序都是完全透明的。它的实现(如OpenSSL)包含验证证书(身份验证)、建立公共密钥(密钥交换)或加密/解密数据(对称密码)所需的所有功能。您不需要自己编写这些加密算法。

在此期间,服务器和客户端首先需要协商双方都支持的通用密码套件。如果他们同意DHE密钥交换和RSA身份验证(这是一种非常常见的情况),服务器总是向客户端发送Certificate(第7.4.2节)和ServerKeyExchange(第7.4.3节)消息,然后客户端发送ClientKeyExchange(7.4.7)消息作为响应

您如何从私钥生成公钥而不使用 连接到服务器

客户机和服务器都必须使用相同的prime和base,除非 您无法从中生成公钥 私钥,直到您同意prime和base

证书中的素数和基在哪里

现在介绍一下在SSL/TLS协议中应用的Diffie-Hellman流:

服务器选择素数(p)和基数(组Zp的生成器g)。通常它在服务器源代码中是固定的,或者sysadmin可以提供自己的dhparam文件(例如由
openssl dhparam
命令生成)。它可以是公共的,也可以重复使用。只有p的长度对安全性很重要

服务器随机生成其秘密值(Xs)和公共值(Ys=g^Xs mod p)。它向客户端发送带有p、g、Ys的ServerKeyExchange消息

客户机接收p、g、Y。它随机生成其秘密值(Xc)和公共值(Yc=g^Xc mod p)。它发送回带有Yc的ClientKeyExchange消息作为响应

双方现在都可以计算公共主密钥(S=Yc^Xs=(g^Xc)^Xs=g^(XcXs)mod p,S=Ys^Xc=(g^Xs)^Xc=g^(XsXc)mod p)。它用于进一步的计算

客户端和服务器是否应该具有相同证书的副本?这个 客户端只是检索服务器证书,并看到它是相同的 作为它自己的

客户端接收包含服务器证书的证书消息(带有中间信任链)。客户端通过检查是否可以通过中间CA证书重建从您的证书到默认安装在其系统中的根(自签名)CA证书的信任路径来验证它

证书的验证是否在中自动完成 握手还是必须编程

当您加密和解密时,这不是由openssl堆栈自动完成的吗