如何加密桌面应用程序和基于 REST 的 Web 服务之间的通信?

How to encrypt communication between a desktop app and a REST-based web service?

我构建了一个 Java 桌面应用程序,它与部署在 Spring Boot webapp 中的 RESTful API 进行通信。 Spring 引导配置为使用嵌入式 Tomcat。我知道我需要加密这两个之间的数据,但我不太了解如何使用证书。

我假设我需要使用 SSL 配置 Tomcat。这里有一些文档:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-configure-ssl

我想我需要创建自己的证书(这称为自签名证书吗?)并将私钥添加到 Tomcat 访问的密钥库中,并将 public 密钥添加到分布在桌面应用程序中的密钥库。目前为止正确吗?

我听说过使用商业证书。这些是什么?我应该使用它们来支持我自己吗?

目前网络应用程序不接受用户登录。它只有一些 public 没有敏感数据的页面,并提供了可以传递敏感数据的 API。如果我添加需要用户登录的页面,我的自签名证书不能在浏览器中使用是否正确?那是商业证书发挥作用的地方吗?

对于一个帖子中的所有问题,我们深表歉意。我的知识非常有限。

凯文,自签名证书未经威瑞信等证书颁发机构认证。因此,当用户尝试访问网站时,浏览器会向用户发出警告。

商业证书与自签名证书相同,不同之处在于 Versign 将为它们签名,而不是您签名。这为证书提供了有效性。

通常用于内部测试,自签名是可以的,但是当您向外部用户公开您的应用程序时,您将需要商业证书。