CURLOPT_SSLKEY和CURLOPT_SSH_PRIVATE_KEYFILE有什么区别?

时间:2013-05-02 16:33:56

标签: php curl ssl options

我正在查看this question,并试图找出错误,转到PHP manual,我看到了这两个选项:

  

CURLOPT_SSH_PRIVATE_KEYFILE 私钥的文件名。如果   未使用,如果是HOME,libcurl默认为$ HOME / .ssh / id_dsa   环境变量已设置,并且当前只有“id_dsa”   目录如果未设置HOME。如果文件受密码保护,请设置   CURLOPT_KEYPASSWD的密码。

     

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

该问题的OP使用了CURLOPT_SSH_PUBLIC_KEYFILE,所以我猜它应该使用CURLOPT_SSH_PRIVATE_KEYFILE而不是CURLOPT_SSLKEY,但我真的不知道这些选项之间的区别。

所以这是我的问题:

  

CURLOPT_SSLKEY和。之间的区别是什么?   CURLOPT_SSH_PRIVATE_KEYFILE?

1 个答案:

答案 0 :(得分:0)

好吧,我在这个IT Security问题中找到了SSH和SSL之间的区别。

Thomas Pornin回答:

  

SSL和SSH都提供了构建隧道的加密元素   用于检查完整性的机密数据传输。对于那部分,   他们使用类似的技术,可能会遇到同样的问题   攻击,所以他们应该提供类似的安全性(即良好的安全性)   假设它们都得到了适当的实施。两者都存在是一种   NIH综合症:SSH开发者应该重用SSL   隧道部分(SSL协议足够灵活,可以容纳许多人   变体,包括不使用证书)。

     

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

     

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

     

所以我们不会使用SSL和SSH来做同样的事情,但那是因为   历史上随着这些工具的实现带来了什么工具   协议,不是由于安全相关的差异。无论谁   实施SSL或SSH建议看看是什么类型的   两种协议均试用了攻击。

我现在能够不猜测地回答这个问题: - )