1

我正在开发一个开源 PHP 应用程序。该应用程序可能需要连接到我的服务器,以传输敏感数据。我在我的服务器上安装了 SSL,我认为我已经正确设置了它,但我希望这里有人可以确认。

该应用程序将在其他用户服务器上使用,因此它将是服务器到服务器的通信。

连接到我的服务器时,我会将用户服务器视为客户端。我的服务器永远不会连接到他们的服务器,所以他们不需要 SSL(对吗?)。

我在连接期间使用 cURL 进行调用(对我的服务器)和 POST 数据。所以我卷曲到一个https地址。

现在我想就是这样。一旦我 cURL 一个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");

这对开源安全吗?我也应该这样做吗?或者我对我所拥有的东西安全吗?

4

2 回答 2

1

根据您安装 cURL 的系统,它可能有也可能没有足够的信息来验证 SSL 证书(这可以通过将中间证书和根证书链接到您的网站证书来改进)。你也可以在这里阅读:http ://curl.haxx.se/docs/sslcerts.html

有时明确地发布一个包是有意义的,特别是因为 cURL 往往会与旧的证书包一起发布。您可以在此处下载更新的版本(取自 Firefox 源代码):http ://curl.haxx.se/docs/caextract.html

如果您的软件将专门与您自己的服务器通信,您还可以发布一个仅包含您自己的公共证书的捆绑包。这将允许您使用免费的自签名证书:)

于 2012-05-19T16:33:34.263 回答
0

如果另一端的服务器专门为您提供了客户端证书并且不接受来自拥有这些客户端证书的客户端以外的其他客户端的任何连接,则您将客户端证书附加到 CURL 调用中。

如果你在这里谈论一个网站,你甚至不需要在这里担心。

但是,如果您谈论的是您为任何安全资源访问的一些服务提供商,并且如果他们要求您提供客户端证书,他们会为您颁发它们并明确告诉您使用它们。

例如,我们有一个只有私人成员才能访问的系统。我们有一个 RPC 端点,其他成员向该端点发送请求。而且由于我们只允许访问我们的成员(私人而不是像网站那样公开),我们向他们颁发客户端证书并明确指示他们将这些证书与他们的服务调用一起附加。

于 2012-05-19T16:24:41.973 回答