2

我正在查看这个问题,并试图找出错误,转到我看到这两个选项的PHP 手册:

CURLOPT_SSH_PRIVATE_KEYFILE 您的私钥的文件名。如果不使用,如果设置了 HOME 环境变量,libcurl 默认为 $HOME/.ssh/id_dsa,如果未设置 HOME,则默认为当前目录中的“id_dsa”。如果文件受密码保护,请使用 CURLOPT_KEYPASSWD 设置密码。

CURLOPT_SSLKEY 包含私有 SSL 密钥的文件的名称。

该问题的 OP 使用 aCURLOPT_SSH_PUBLIC_KEYFILE所以我想它应该使用 aCURLOPT_SSH_PRIVATE_KEYFILE而不是 a CURLOPT_SSLKEY,但我真的不知道这些选项之间的区别。

所以我的问题来了:

CURLOPT_SSLKEY 和 CURLOPT_SSH_PRIVATE_KEYFILE 有什么区别?

4

1 回答 1

0

好吧,我在这个IT 安全问题中发现了 SSH 和 SSL 之间的区别。

托马斯·波宁回答:

SSL 和 SSH 都提供了加密元素,以建立具有检查完整性的机密数据传输隧道。对于这部分,它们使用相似的技术,并且可能遭受相同类型的攻击,因此它们应该提供相似的安全性(即良好的安全性),假设它们都被正确实施。两者都存在是一种 NIH 综合症:SSH 开发人员应该将 SSL 用于隧道部分(SSL 协议足够灵活,可以适应许多变化,包括不使用证书)。

他们在隧道周围的东西上有所不同。SSL 传统上使用 X.509 证书来公布服务器和客户端公钥;SSH 有自己的格式。此外,SSH 带有一组协议用于隧道内的内容(多路传输、在隧道内执行基于密码的身份验证、终端管理......),而 SSL 中没有这样的东西,或者更准确地说,当这些东西在 SSL 中使用,它们不被认为是 SSL 的一部分(例如,在 SSL 隧道中进行基于密码的 HTTP 身份验证时,我们说它是“HTTPS”的一部分,但它确实以类似的方式工作SSH 会发生什么)。

从概念上讲,您可以使用 SSH 并将隧道部分替换为来自 SSL 的部分。您还可以采用 HTTPS 并将 SSL 替换为 SSH-with-data-transport 和一个挂钩以从其证书中提取服务器公钥。没有科学上的不可能性,如果做得好,安全性将保持不变。但是,没有一套广泛的约定或现有的工具。

所以我们不会将 SSL 和 SSH 用于相同的事情,但这是因为历史上这些协议的实现附带了哪些工具,而不是因为与安全相关的差异。并且建议实施 SSL 或 SSH 的人看看在这两种协议上都尝试了什么样的攻击。

我现在可以不用猜测就可以回答这个问题了:-)

于 2013-05-02T16:43:14.063 回答