0

我需要一个用于网络传输的客户端-服务器加密解决方案(即签名和加密的客户端,以及验证和解密的服务器端)。

我正在使用 HTTP,但由于共享主机限制(我的服务器是共享主机环境),SSL 不可用。寻找替代解决方案,我决定使用GnuPG的 OpenPGP 。原因之一是 PHP 通过各种 PEAR 和 PECL 模块支持它(PHP 是我打算用于我的客户端脚本和服务器脚本的语言,尽管 Perl 作为最后的手段也是可用的)。

我现在正试图决定传输数据的最佳方式。我遇到过RFC 1847,它定义了加密和签名的多部分 MIME 消息。该协议在RFC 3156中专门针对 PGP 进行了扩展。(我认为这些协议与 S/MIME 加密电子邮件协议有关)。

我的问题是:是否有任何理由遵循这些标准?就协议而言,它们看起来像是明智的解决方案,但是否有任何客户端实际使用该协议?例如,如果我向 Apache Web 服务器发出多部分/加密请求,是否有任何简单的方法来检索数据?我使用 PHP 脚本进行的测试使我认为 PHP 试图破译这样的请求是没有用的($_POST 数据似乎来自 'multipart/form-data' MIME 类型数据)。

由于我的主机允许我打开套接字,因此可以使用 PHP 的套接字编程 API 编写一个 PHP 脚本来充当一个接受“多部分/加密”和“多部分/签名”HTTP 请求的服务器,但是这个似乎有点矫枉过正。

有什么建议么?

有关我的问题的更多信息,请参阅此问题

4

1 回答 1

1

你是对的 - 这些协议与加密邮件协议有关,在你的情况下使用它有点矫枉过正,你必须使用 OpenSSL php 扩展。使用 OpenPGP。

由于您的客户端将使用 PHP 编写 - 请考虑以下场景:

场景一:创建简单的 SOAP webservice

服务器和客户端方法是相同的:

  • getPublicKey() - 返回公钥
  • sendMessage(msg) - 返回答案

场景 2:使用 GET/POST 消息

  • 客户端 -> HTTP GET(给我你的公钥) -> 服务器
  • 客户端 <- (我的公钥是 xxxx) <- 服务器
  • 客户端使用服务器的公钥加密消息 客户端将自己的公钥添加到消息中
  • 客户端 -> HTTP POST(发送加密消息) -> 服务器
  • 服务器解码消息,并使用客户端公钥对答案进行编码
  • 客户端<-(对客户端的编码答案)<-服务器
于 2009-06-24T08:36:00.713 回答