【问题标题】:Encrypted and signed MIME messages using RFC 1847使用 RFC 1847 加密和签名的 MIME 消息
【发布时间】:2010-11-05 10:20:55
【问题描述】:

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

我正在使用 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 脚本来充当服务器,该服务器将接受 'multipart/encrypted' 和 'multipart/signed' HTTP 请求,但这似乎有点矫枉过正。

有什么建议吗?

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

【问题讨论】:

    标签: php encryption sockets gnupg openpgp


    【解决方案1】:

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

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

    场景 1:创建简单的 SOAP 网络服务

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

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

    场景 2:使用 GET/POST 消息

    • 客户端 -> HTTP GET(给我你的 公钥)-> 服务器
    • 客户
    • 客户端 使用服务器的公共加密消息 key 客户端将自己的公钥添加到 留言
    • 客户端 -> HTTP POST(发送 加密消息)-> 服务器
    • 服务器 解码消息,并编码 用客户公钥回答
    • 客户端

    【讨论】:

    • OpenPGP 比 OpenSSL 更好吗?我正在考虑使用 OpenSSL 的第二种方案的版本,因为这些扩展已安装,否则我将不得不唠叨我的网络主机,直到他们安装 PECL 'gnupg'。
    • OpenSSL 是一种 SSL 实现,而 OpenPGP 是一种加密算法,您无法比较它们。如果你想使用 OpenSSL - 检查“openssl smime”参数(加密、解密、签名、验证)
    猜你喜欢
    • 2014-10-29
    • 2017-12-31
    • 1970-01-01
    • 2013-08-29
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多