【发布时间】:2021-10-05 20:48:41
【问题描述】:
我不太喜欢 SSL 证书,我在与客户端合作时遇到以下情况。
他们要求我生成服务器根 CA,我通过以下命令使用 openSSL 生成它:
#Generate Server RootCA
openssl req -newkey rsa:2048 -keyform PEM -keyout rootca.key -x509 -days 3650 -outform PEM -out rootca.cer
所以基本上这个命令生成了 rootca.cer 证书和 rootca.key 文件。我只向他们提供了他们安装在系统上(在平衡器\防火墙上)的 rootca.cer 证书。
在这个系统上部署了一些 REST API。我必须开发一个调用这些 API 的客户端。所以现在我想尝试从 shell 执行 cURL 调用。据我所知,我必须使用以前的根 CA 来生成我将用于执行调用的客户端证书。对吗?
所以我使用这个命令创建了这个客户端证书:
#Generate Client Certiicate
openssl genrsa -out client.key 2048
#Generate signing request
openssl req -new -key client.key -out client.req -sha256
#Generate Client certificate
openssl x509 -req -in client.req -CA rootca.cer -CAkey rootca.key -set_serial 101 -extensions server -days 3650 -outform PEM -out client.cer -sha256
现在我有了这个应该是客户端证书的 client.cer 文件。
所以基本上他们给了我一个这样的 cURL 示例:
curl --location --request GET "https://apiName.companyName.it/ws-
application/service/distretti/_/_/_"
但我收到以下错误:
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to annuariows.notariato.it:443
我认为这是因为我必须让 cURL 使用以前的客户端证书来执行我的请求。
那么我要如何使用这个 client.cer 才能正确执行我的 API 调用?
【问题讨论】:
标签: ssl curl openssl certificate ssl-certificate