(SSL)根CA和客户端证书在同一台计算机上?

2024-04-25 15:05:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图与我公司的一些软件(我没有编写)进行交流。我们可以通过配置设置服务器证书、服务器密钥和服务器CA证书。在

我在主计算机上生成根证书:

openssl genrsa -out rootCA.key 2048

我使用以下内容自行签署根证书:

^{pr2}$

我生成客户机密钥的方式与生成根密钥的方式相同,生成一个CSR:

openssl req -new -key device.key -out device.csr

然后,我用根证书为客户端密钥签名:

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500 -sha256

我正在从Python OpenSSL通信到这个应用程序(在Java中运行)。我将OpenSSL中的密钥和证书文件设置为设备密钥,然后将服务器ca证书和服务器证书设置为根证书,将服务器密钥设置为根密钥。不管怎样,我总是在Python中得到这个错误:

OpenSSL.SSL.Error: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')]

Java中的这个错误:

On handshake complete OpenSSL error: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca

我不知道我是不是做错了什么,或者是我得不到的软件——在我去窃听CTO之前,我想知道我是否不理解SSL/TLS。我是不是错过了一步?服务器是否应该不使用根证书作为自己的证书?在

编辑

要详细解释设置:

我们通常部署在集群环境中。在

客户机应用程序以主/备用配置在两台机器上运行,服务器是集群中的所有机器(包括主/备用网络集成单元的两台)。作为安装过程的一部分,主机将根SSH密钥分发给集群中的所有机器,因此,通过Ansible,我可以完全控制所有机器。这两个niu有一个应用程序,它使用soapovertls来控制集群中所有机器上的软件。我们过去一直使用UDP,但我们正在努力提高安全性。在


Tags: key服务器机器应用程序ssl软件device密钥