如果我只将 https 用作 REST 端点,我可以使用自签名证书吗?

Can I use a self signed cert if I'm only using my https as a REST endpoint?

也许我对为什么我们需要一个签名的证书有点困惑,但我认为只有当你想确保你连接到真实的 www.paypal.com 并且你的浏览器会表明它是有效的。

但是,如果我有一个只有 gets/put/post 等端点的移动应用程序,使用自签名证书是否足够?

仅当您在应用程序中嵌入 public 密钥时(证书固定)。

否则,您无法区分您的自签名证书和攻击者的自签名证书。

这取决于。如果您的应用程序是浏览器中的 HTML/CSS/JS 应用程序 运行 那么该应用程序的用户将被告知您的网站不受信任,因为它正在提供平台无法追溯的证书到根证书颁发机构。

您需要在设备上安装根 CA 才能使设备的浏览器信任您服务器的证书。这不是用户习惯做的事情。请参阅 https://jamielinux.com/docs/openssl-certificate-authority/index.html 了解如何为您的服务器和浏览器生成 CA 证书以及证书。

如果您的应用是发出 HTTP 请求的本机应用,那么您将不得不处理平台不信任您的服务器证书这一事实。通常这是在您尝试启动连接和 SSL 握手 'fails' 时完成的。即使证书不受信任,您也可以告诉平台继续静默。

我想基本的经验法则是,如果只有有限数量的人会使用该应用程序(例如公司内部),自签名是可以的,但如果您的应用程序将被 public 一般来说,你真的应该有一个由你的平台信任的 CA 签署的证书。