私有 server/client 的自签名证书安全性

Self-signed certificate security for private server/client

我读过很多关于由于缺乏安全性而永远不应在生产中使用自签名证书的信息,但我想知道如果我是唯一一个应该连接的人是否仍然存在安全风险到服务器?出于某种原因更容易破解自签名证书吗?我正在创建服务器和客户端应用程序,其他人连接的唯一方法是创建他们自己的客户端。这意味着每次我安装客户端时,我也有可能将证书添加到受信任的根证书中。

或者在消息级别继续使用我自己的使用 RSA/AES 的加密实现是否更安全?我想改用 SSL 的原因是它更容易使用,尤其是当我想流式传输媒体时,因为我不必分块发送它。

I've read a lot that self-signed certificates should never be used in production because of the lack of security ....

自签名证书本身还不错,如果处理得当也可以用于生产。

如果对等方能够正确验证证书,则证书可以安全使用。通常的验证是基于浏览器或操作系统中包含的一些受信任的根 CA 完成的。但是自签名证书无法通过这种方式验证并不意味着它根本无法验证,因为:

  • 您可以将其显式添加为受信任的 browser/OS。
  • 您可以在验证您在浏览器中获得的证书确实是您知道的证书(通过比较指纹,而不仅仅是主题)后,在首次使用时破例。
  • 如果您有自己的应用程序,您可以发布该应用程序,使其(仅)信任此证书。

当然,在浏览器中将证书显式导入为受信任证书或设置为异常并不能很好地扩展,因为它确实为每个用户完成了。这就是 CA 签名证书的要点:证书得到隐式信任,因为它是由受信任的人签名的,而不是每个用户都必须手动验证和信任证书。这也是您想要在生产中使用 CA 签名证书的唯一原因。只要证书正确验证,它是否是自签名的都没有关系。

Or is it safer to continue to use my own encryption implementation using RSA/AES on the message level?

永远不要运行你自己的加密货币,除非你真的明白你在做什么。 在这种情况下,SSL 提供了您需要的一切,但您必须知道如何正确使用它。