【发布时间】:2022-01-23 07:18:26
【问题描述】:
安全套接字对信任集合中的证书使用 CN 检查,域接受或连接。对于我自己,我为 localhost 创建了一个私有和公共集,这有助于我在本地进行调试。如果我想提供一个 SDK,为这个 localhost 调试用例分发 .key 和 .cer X509 是否被认为是安全的?或者,在任何开放空间拥有 .key 是否总是被认为不安全,因为它可能被滥用?
对不起,如果在其他地方讨论过这个问题,但我找不到明确的答案。
【问题讨论】:
安全套接字对信任集合中的证书使用 CN 检查,域接受或连接。对于我自己,我为 localhost 创建了一个私有和公共集,这有助于我在本地进行调试。如果我想提供一个 SDK,为这个 localhost 调试用例分发 .key 和 .cer X509 是否被认为是安全的?或者,在任何开放空间拥有 .key 是否总是被认为不安全,因为它可能被滥用?
对不起,如果在其他地方讨论过这个问题,但我找不到明确的答案。
【问题讨论】:
这可能有点固执己见,并且在某种程度上也取决于您的项目,但我认为主要风险是人们将如何实际使用这些。他们中的一些人肯定会将它用于生产,因为它更容易,或者他们不了解密钥对并且只想让它工作等等。
默认情况下,任何项目都应该是安全的,对于所有相关人员,包括最终用户和开发人员,以及如果您的项目类似于库或组件。在这种情况下,默认情况下安全意味着不提供实际的密钥对,因为至少在某些用途的情况下,这可能是一个后门——即使它不打算那样使用。
要考虑的另一件事是您的项目的声誉。如果您包含一个密钥并且用户在互联网上滥用它,那么使用 Shodan 等工具很容易找到并可能利用您的项目的易受攻击的实例。没有人会在意开发人员做错了——发现易受攻击的将是您的项目。
一种更好的考虑方法是提供类似于初始化脚本的东西,该脚本将为该特定实例生成密钥和证书。对于用户和开发人员来说,它仍然很容易,而且对每个人来说都是安全的。如果是 linux 包,这甚至可以通过安装脚本和大多数打包解决方案来完成,因此它对用户来说是完全透明的。
【讨论】: