Curl:两个 ssl 命令之间的区别

Curl:两个 ssl 命令之间的区别

我无法分辨出两者的区别,也不知道何时该使用其中一种。(这应该归咎于 serverfault 吗?)

-E/--证书

(SSL)告诉 curl 使用 HTTPS 或 FTPS 获取文件时使用指定的证书文件。证书必须为 PEM 格式。如果未指定可选密码,则会在终端上查询密码。请注意,此选项假定“证书”文件是私钥和私有证书的连接!请参阅 --cert 和 --key 以单独指定它们。

如果 curl 是针对 NSS SSL 库构建的,则此选项会告诉 curl 在环境变量 SSL_DIR(或默认情况下为 /etc/pki/nssdb)定义的 NSS 数据库内使用的证书的昵称。如果 NSS PEM PKCS#11 模块 (libnsspem.so) 可用,则可以加载 PEM 文件。

如果多次使用此选项,则将使用最后一个选项。

--证书类型

--cacert

(SSL) 告诉 curl 使用指定的证书文件来验证对等方。该文件可能包含多个 CA 证书。证书必须为 PEM 格式。通常 curl 构建为使用默认文件,因此此选项通常用于更改该默认文件。

如果已设置名为“CURL_CA_BUNDLE”的环境变量,则 curl 会识别该变量,并使用给定的路径作为 CA 证书包的路径。此选项将覆盖该变量。

Windows 版本的 curl 将自动查找名为“curl-ca-bundle.crt”的 CA 证书文件,该文件可以在与 curl.exe 相同的目录中,或者在当前工作目录中,或者在 PATH 上的任何文件夹中。

如果 curl 是针对 NSS SSL 库构建的,则此选项会告诉 curl 在环境变量 SSL_DIR(或默认情况下为 /etc/pki/nssdb)定义的 NSS 数据库内使用的 CA 证书的昵称。如果 NSS PEM PKCS#11 模块 (libnsspem.so) 可用,则可以加载 PEM 文件。

如果多次使用此选项,则将使用最后一个选项。

答案1

-E用于向服务器提供客户端证书。--cacert用于验证服务器证书。

编辑:

SSL 本身有 3 个用途:

  1. 加密连接。
  2. 对服务器进行身份验证。
  3. (可选)验证客户端。

大多数人只考虑第 1 点,尽管如果一切就绪,第 2 点也是正确的。只有当出现某种证书问题时,人们才会主动考虑第 2 点。几乎没有人考虑第 3 点,因为它很少使用。

--cacert处理第 2 点。-E处理第 3 点。

答案2

-E/--Cert用于对客户端(您)进行身份验证。

--cacert习惯于确认服务器是否是他们所声称的那个服务器。

相关内容