我正在开发一个开源PHP应用程序。应用程序可能需要连接到我的服务器,以传输敏感数据。我在服务器上安装了SSL,我认为我已经正确设置了SSL,但我希望有人在这里确认。
该应用程序将在其他用户服务器上使用,因此它将是服务器到服务器的通信。
连接到我的服务器时,我会将用户服务器视为客户端。我的服务器永远不会连接到他们的服务器,所以他们不需要SSL(对吧?)。
我使用cURL在连接期间调用(到我的服务器)和POST数据。所以我转到https
地址。
现在我以为就是这样。一旦我找到https
地址,一切都是安全的。我可以安全地发送我喜欢的任何信息(信用卡号码,密码等),而不必担心中间人。故事结束。
但是在阅读之后,我注意到有些人在他们的cURL会话中正在做其他事情 - 比如包括证书(.crt文件):
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");
开源是否安全?我也应该这样做吗?或者我对我所拥有的东西安全吗?
答案 0 :(得分:1)
根据您正在安装cURL的系统,它可能有也可能没有足够的信息来验证SSL证书(这可以通过将中间证书和根证书链接到您的网站证书来改进)。您也可以在此处阅读:http://curl.haxx.se/docs/sslcerts.html
有时候明确地发送捆绑包是有意义的,特别是因为cURL往往带有旧的证书捆绑包。您可以在此处下载更新的(来自Firefox源代码):http://curl.haxx.se/docs/caextract.html
如果您的软件将专门与您自己的服务器通信,您还可以发送仅包含您自己的公共证书的软件包。这将允许您使用免费的自签名证书:)
答案 1 :(得分:0)
如果另一端的服务器专门为您提供了客户端证书,并且不接受来自其他客户端的任何连接,那么您可以沿着CURL调用附加客户端证书。
如果你在这里谈论一个网站,你甚至不必担心这里。
但是,如果您正在谈论您为任何安全资源访问的某些服务提供商,并且如果他们要求您生成客户端证书,他们将为您发布这些证书并明确告诉您使用它们。
例如,我们有一个只有私人成员才能访问的系统。我们有一个RPC端点,其他成员发送请求。由于我们只允许访问我们的会员(私人非公开网站等),我们会向他们颁发客户证书,并明确指示他们将这些证书与服务电话一起附加。