如何使用数字证书检查与远程服务器的连接(客户端身份验证)

如何使用数字证书检查与远程服务器的连接(客户端身份验证)

我获得了一个带有服务器和客户端身份验证扩展以及私钥的数字证书。

现在我想连接到一个远程服务器(REST Web 服务),由于我的证书,该服务器应该接受我的请求。首先我想检查此连接是否有效。远程服务器不在我的控制范围内。

我有这个 REST URLhttps://host.test.com/REST/admin/user/1212/我需要使用证书进行请求。那么我该如何通过命令行(Linux 系统)执行此操作?

答案1

您可以使用 curl 或 wget。

curl --cert <your cert>

或者

wget --certificate=<yourt cert>

证书(当然带有私钥)需要位于 p12 文件中。您可以指定此文件的密码。

答案2

您可以使用openssl s_client检查证书的有效性。

openssl s_client -connect www.google.com -CApath /usr/share/ca-certificates

这给了我:

[mark@pericles ~]$ openssl s_client -connect www.google.de:443 -CApath /usr/share/ca-certificates/
CONNECTED(00000004)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = google.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=google.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority G2
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
<snip>
    Verify return code: 0 (ok)
---

-CA路径参数指向要验证的 CA 证书。我使用的是 Arch Linux,因此这些证书位于 /usr/share/ca-certificates 中。

这在调试您推出的证书时非常方便,但当您无法控制另一方时也同样有用。

要使用客户端证书,请将以下内容添加到客户端命令行:

-cert xxx.pem -key xxx.pem

这里 xxx.pem 包含客户端证书和密钥。您只需将其传递给两个选项即可。

相关内容