方案
我想设计一个从第三方供应商加载插件程序集的服务器。第三方供应商在实现插件程序集时需要遵循一些合同。需要将第三方插件程序集复制到服务器的指定部署文件夹。服务器将动态加载插件程序集。服务器只需加载来自可靠来源的程序集。
可能的解决方案
作为解决方案之一,服务器可以依赖数字证书技术。服务器应仅加载使用受信任的根证书颁发机构进行数字签名的程序集。我打算从下图中导出测试用例:
叶节点(以紫色突出显示)表示可能的测试用例。
我需要获得有关以下内容的想法/反馈:
感谢。
答案 0 :(得分:1)
只是一些随机的想法。
虽然不是唯一的方法(例如,我可以使用具有特定密钥的HMAC,或者仅使用RSA或DSA等公钥算法),这可能是最好的方法以最少的努力实现您想要的目标。
当然,我认为你会在这种情况下充当CA,任何第三方都可以获得你签署的证书吗?如果没有,并且只想说Verisign证书等,您可能需要考虑检查证书的密钥用法和增强的密钥用法字段,以确保它适合签署二进制文件(例如使用SSL证书阻止某人) 。
正如上面的评论中所指出的,您希望检查任何证书吊销列表,尽管这可能包含在已签名和未签名中。您可能还需要在完全未签名的文件,签名但不正确的文件(例如公钥不匹配)和签名但无效的文件之间的不同测试用例。签名没有受信任的机构加上时间戳,证书已过期,或CRL的东西。
您是否还排除了签名证书是CA的可能性?这是一个愚蠢的事情,但从技术上讲,这样做没有任何问题。你甚至可以跳过整个CA的东西,让第三方生成他们自己的自签名证书,并将其发送给服务器的管理员,服务器的管理员将把它添加到有效证书列表中以供使用。 CA的唯一原因是它们应该检查想要它的人的详细信息,具体取决于您计划如何使用此系统而不是必需的。