如果我同时控制服务器和客户端,可以接受自签名证书吗?

Ok to accept self-signed certificate if I control both server and client?

我有一个即将投入生产的应用程序。它有一个 java 客户端和一个 java 服务器,两者始终相同,并且在我的团队的控制之下。我们正在使用 https。

在这种情况下是否可以颁发自签名证书并在客户端接受?有没有风险?

HTTPS是为了保护服务器和客户端之间的连接,你不能仅仅通过控制服务器和客户端来完全控制这个连接。如果您仅仅因为控制服务器和客户端而接受任何自签名证书,那么您也会接受来自中间人的证书,即这是不安全的。

您可以做的是在客户端中硬编码预期的证书,即证书固定。这样你只接受这个特定的证书,中间人攻击使用另一个证书是不可能的。