【发布时间】:2017-05-23 11:23:39
【问题描述】:
我想分发一些 PHP 源代码, 我需要提供一种方法来验证这些源代码是否未被更改。
所以基本上我想给他们签名(如果可能的话,使用 PHP)然后检查他们的签名(使用 PHP 是强制性的,它必须在 linux 和 windows 上都可以工作)。
我一直在挖掘,我发现的是:
- 签名:
- 您可以使用PharData 创建一个 zip 存档
- 您可以使用openssl 创建pub/priv。
- 您可以使用Phar::setSignatureAlgorithm 对 PharData 进行签名
- 您似乎必须将公钥放在存档旁边(source(阅读步骤 3)): 公钥必须与 Phar 文件同名,并添加 .pubkey,并且必须与 Phar 位于同一目录中。
- 验证:
- 没找到,估计PharData::extractTo就够了
如果有人可以验证这个过程(或指出更好的过程),那将是一个很大的帮助。
因为我试图给出我从现在找到的理论解决方案,但是在理论和实践之间,它们应该是一个差距。特别是考虑到我是这个概念的新手,并且我的项目在安全方面扎实是最重要的。 我提醒一下,几年前使用苹果的签名过程是一件很痛苦的事情,我对自己创建安全解决方案的能力没有信心。
【问题讨论】:
-
我从您链接的文章中得到的信息:如果您签署的 PHAR 没有签出或 pubkey 丢失,它就不会执行 - 所以您无事可做。除此之外:你的问题是什么?只是“如果有人有反馈”就一个想法太宽泛了。
-
@FranzGleichmann :我的问题是“如何签署 PHP 源代码”。我提出了看似理论上的解决方案,但我不是专家,这可能是一个糟糕的解决方案。因此,问题仍然是“如何”,可能的答案是“按照您的建议”。我以这种方式编辑我的问题。谢谢
-
“如果有人能验证这个过程(或指出更好的过程),那将是一个很大的帮助。” - 你试过了吗?应该需要一个小时左右,然后你就会知道它适用于你的情况。 FWIW - 是的,该过程是正确的,但有两个澄清:首先,运行时解释器验证密钥。你不必那样做。其次,我发现使用签名 PHAR 的大型 Web 应用程序存在性能问题。
-
请注意,anybody 可以创建密钥对并签署源代码。您需要信任公钥来验证签名。文章写的方式是可以保存公钥,以便验证后续更新来自同一发件人。对于要信任的初始包,您要么需要使用可以信任链的证书(PKI),要么需要使用单独的通道验证公钥(例如,通过电话验证公钥的哈希值,例如那个)。
-
@MaartenBodewes:你是对的。我进行了一些搜索以了解该过程将如何进行,但我没有找到任何东西。我想公钥必须提交给一个证书颁发机构,由他验证一些关键点,然后......我不知道,他们提供什么材料以及如何将它们整合到流程中,因为我从什么猜猜,公钥不会改变......
标签: php openssl digital-signature code-signing phar