代码之家  ›  专栏  ›  技术社区  ›  Jim Flood

如何在web服务器上实现PHP与TLS的安全连接

  •  4
  • Jim Flood  · 技术社区  · 16 年前

    假设我在web服务器中运行了一些PHP代码,例如,运行一个简单的CakePHP应用程序。从这个应用程序,我想偶尔做一个TLS连接到一些服务器,以交换一些数据。这通常是如何做到的(我对PHP几乎没有经验。)

    建议使用什么PHP插件或库之类的东西来实现TLS连接?哪里有好的地方可以开始寻找(我最初的Google搜索给了我一个巨大的噪声信号比。)

    编辑:我忘了提到PHP应用程序连接到的服务器需要提供客户端证书。客户 做 需要私钥才能连接。另外,我连接的服务器是 不

    1 回复  |  直到 15 年前
        1
  •  9
  •   Teddy    15 年前

    TLS是正确的名称,但是大多数人仍然称之为SSL。在PHP中,您可以建立这个连接 using CURL .

    对于TLS/SSL客户机,您只需要公钥就可以验证远程主机。这个公钥就是那么公开,如果泄露给攻击者也没关系。在服务器端,Apache可以访问公钥和私钥。这些密钥使用普通文件访问权限进行保护。在*nix系统下,这些密钥通常存储在 /etc/ ,由Apache进程和 chmod 400 是最好的。

    chmod 400型 deny from all these environmental variables .

    Context Options :

    <?php 
    $context = stream_context_create(); 
    $result = stream_context_set_option($context, 'ssl', 'local_cert', '/path/to/keys.pem'); 
    // This line is needed if your cert has a passphrase
    $result = stream_context_set_option($context, 'ssl', 'passphrase', 'pass_to_access_keys'); 
    
    $socket = stream_socket_client('tls://'.$host.':443', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context); 
    ?>