我不习惯使用oAuth或使用SSL证书,最近才被迫查看它以获取put.io API访问权限。 oAuth似乎很复杂,有些方法要求最终用户填写他们的信用卡。
所以我去搜索一个现成的PHP库,它已经实现了完整的put.io API,并注意到他使用的方法甚至没有"应用程序秘密"或者"客户ID"需要。
我所要做的只是喂我的#34; Oauth Token"值和它与ssl vertifypeer和cafile连接 - StarFieldSecureCertificationAuthority.crt
现在问题是我猜这个证书真正做了什么或证明了什么,如果我真的可以使用他的 - 或者如果这是我应该为目标部署服务器生成的东西?
令人惊讶的是,谷歌根本没有多少帮助 - 我仍然不知道这个带证书的oAuth是如何工作的,为什么它有效,以及我如何确保它确实有效。有什么指针吗?
答案 0 :(得分:1)
我认为this是"现成的PHP库"你指的是?如果您对某些代码对某些文件执行的操作有疑问,则发布代码链接会很有帮助,更有助于发布您的细分。如果您尝试阅读代码,那么您将获得更好的Google条款,更明确的更简单更容易回答SO问题,这些问题对其他未来的访问者有更广泛的应用:问题" some code
是什么做"更容易回答,将来可能会找到搜索相同功能的人。
如果我们不了解证书的用途,很难理解某些API代码对证书的作用。让我们try to get ssl explained给我们。如果阅读explaining answer on security.stackexchange.com对您来说很难,youtube是阅读障碍最好的朋友。
现在我们知道证书用于确认身份,换句话说,用于身份验证。
OAuth令牌就像车钥匙;一个允许访问汽车的秘密。在你的情况下,汽车是put.io(资源服务器)。一些汽车有单独的钥匙启动它,打开行李箱和打开手套箱。有些令牌只授予对所有业主资源的访问权。
基本的想法就是在这里,我们不应该在开放的中留下我们关心的车钥匙,我们不应该把它们粘在我们看到的任何车里。因为制造看起来像汽车的装置并且像汽车一样反应非常容易,但事实上它是一个汽车钥匙复印机。相信我,它是信用卡略读后的下一个重大事件。因此,我们需要确认汽车的身份,然后才能将钥匙插入。我们需要验证汽车。
很容易制作一个看起来像put.io的设备并且像put.io一样反应,但事实上它是一个复制令牌的中间人。所以我们需要在发送珍贵的令牌之前验证put.io。
那是SSL证书的来源。如果不重复我们从SSL部分学到的知识,我们知道我们应该carefully检查我们获得的服务器证书的真实性,我们相信是put.io.我们需要检查该证书上的签名是否来自我们信任的权限(CA)。为此,我们需要CA的证书。许多操作系统和浏览器都预装了可信的CA证书。
只需在浏览器中打开https://put.io并查找证书即可。通常通过(右)单击某个挂锁图标并单击以获取更多信息。您将看到它是由Starfield Technologies,Inc。发布的。'
现在NativeEngine.php我们看到了:
$context = stream_context_create($contextOptions);
ssl options需要一个咖啡馆或一个人。 API维护者跨平台的最简单方法是提供一个咖啡馆。操作系统软件包维护人员可能会修补此问题,并将其与capath交换到他们在操作系统中提供的CA文件。
现在,如果API维护者自己创建了crt,那么如果您使用它,他可以模拟任何服务器。幸运的是,您可以轻松check the fingerprint并查看它是否与浏览器中的内容相符。如果没有,您可以在浏览器中导出该文件。
答案 1 :(得分:0)
OAuth令牌是针对put.io API对您进行身份验证的。 (如您所见in this example, where no additional CA certificate is used。)
CA证书和VerifyPeer设置用于保护应用程序和put.io之间连接的完整性:库使用它来验证它连接的服务器是否真的是put.io' s继续提交OAuth令牌。如果禁用验证,您的代码也应该有效;但是,您的应用程序很容易受到MITM attack攻击,并且攻击者可以获取您的OAuth令牌 - 然后可以访问您的put.io帐户。 (HTTPS中使用了相同的技术。有关验证过程的详细信息,请参阅this question at ISSE。)
请注意,您的解决方案目前仍在使用,但put.io API文档指出它们将来可能会开始使OAuth令牌过期,因此从长远来看,您应该切换到能够获取新令牌的库( this question)中有一个列表:
虽然目前我们没有使OAuth访问令牌过期,但您应该为将来的这种可能性做好准备。另请记住,用户可以随时通过put.io设置页面撤消访问权限。使用/ authorize将要求用户重新验证其身份并重新授权您的应用,同时为用户提供在其他帐户下登录的选项。