Security 仅在应用程序服务器中加载第三方受信任程序集

Security 仅在应用程序服务器中加载第三方受信任程序集,security,architecture,digital-certificate,testcase,Security,Architecture,Digital Certificate,Testcase,场景 我想设计一个从第三方供应商加载插件程序集的服务器。第三方供应商在实现插件程序集时需要遵守一些合同。需要将第三方插件程序集复制到服务器的指定部署文件夹中。服务器将动态加载插件程序集。服务器只需加载来自可信源的程序集。 可能的解决方案 作为解决方案之一,服务器可以依赖数字证书技术。服务器应仅加载那些使用受信任的根证书颁发机构进行数字签名的程序集。我计划从下图中导出测试用例: 叶节点(以紫色突出显示)表示可能的测试用例 我需要获得以下方面的想法/反馈: 上述基于数字证书的机制对于上述场景是否

场景

我想设计一个从第三方供应商加载插件程序集的服务器。第三方供应商在实现插件程序集时需要遵守一些合同。需要将第三方插件程序集复制到服务器的指定部署文件夹中。服务器将动态加载插件程序集。服务器只需加载来自可信源的程序集。

可能的解决方案

作为解决方案之一,服务器可以依赖数字证书技术。服务器应仅加载那些使用受信任的根证书颁发机构进行数字签名的程序集。我计划从下图中导出测试用例:

叶节点(以紫色突出显示)表示可能的测试用例

我需要获得以下方面的想法/反馈:

  • 上述基于数字证书的机制对于上述场景是否足够好
  • 除了数字证书技术之外,还有哪些其他替代方案
  • 是否有任何未考虑的测试用例缺失(基于上图)

谢谢。

只是一些随意的想法

虽然这不是实现这一点的唯一方法(在我看来,你可以使用带有特定密钥的HMAC,或者只使用公钥算法,如RSA或DSA),但它可能是用最少的努力实现你想要做的事情的最好方法

当然,我会假设您在这个场景中充当CA,任何第三方都可以从您那里获得签名证书?如果不是,只需要说一个VrISIGN证书等。您可能需要考虑检查证书的密钥使用和增强的密钥使用字段,以确保它适合于签署二进制文件(例如,使用SSL证书来阻止某人)。p> 正如在上面的评论中指出的,您希望检查任何证书吊销列表,尽管这可能包含在已签名与未签名中。您可能还希望在完全未签名的文件、已签名但不正确(例如公钥不匹配)的文件和已签名但无效的文件之间有一个不同的测试用例,例如,签名未被可信机构标记时间戳,证书已过期,或CRL之类的文件


此外,您是否排除签名证书为CA的可能性?这是一件愚蠢的事情,但从技术上讲,这样做没有错。您甚至可以跳过整个CA内容,让第三方生成自己的自签名证书,并将其发送给服务器管理员,由管理员将其添加到有效证书列表中以供使用。CA的唯一原因是他们应该检查想要它的人的详细信息,这取决于您计划如何使用此系统,而不是可能不必要的

你应该检查失效机制-root CA应该包含一个链接到BAND证书的服务的链接。你可以考虑一个OCSP来处理撤销,我没有直接使用过,但是我认为它是解决CRL问题的一种新方法。