我正在查看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?
答案 0 :(得分:0)
好吧,我在这个IT Security问题中找到了SSH和SSL之间的区别。
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建议看看是什么类型的 两种协议均试用了攻击。
我现在能够不猜测地回答这个问题: - )