在我的上 一篇 文章中,我展示了在Boxfuse的帮助下,基于Spring Boot框架建立REST API并在AWS上运行非常容易 。 下一步是利用SSL与API进行通信。 通过使用SSL,我们确保在REST API服务器和API客户端之间的传输过程中保存了数据 。 要为Spring Boot应用程序设置SSL,您必须执行以下两个步骤:
- 创建一个密钥库
- 配置Spring Boot应用程序
创建密钥库
第一步可能很容易。 特别是出于开发和测试目的,您可以轻松生成自己的SSL证书和密钥库。 有很多网站对此进行了描述。 基本上就是这样简单:
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 3650
通过将生成的密钥库文件放入“ src / main / resources”文件夹中,将其添加到应用程序的类路径中。
对于专业/生产的SSL证书,最好从受信任的证书颁发机构获得一个。 只是谷歌搜索“ 购买SSL证书 ”,您将有很多选择(我遇到了这个声称免费生成证书的选项,但我还没有尝试过)。 通过使用自签名证书,您将从浏览器中收到警告,指示您要访问的站点可能不安全。
配置Spring Boot应用程序
第二步是配置Spring Boot应用程序以使用密钥库来设置SSL连接。 为此,将以下内容添加到用于配置Spring Boot应用程序的“ application.yml”文件中:
server:port: 443ssl:key-store: classpath:keystore.jkskey-store-password: tomcatkeyAlias: tomcat
这里有两件事需要您注意:
- 首先是端口443。这在Boxfuse创建的AWS实例上运行良好。 如果我在开发环境(VirtualBox实例)中使用此设置,则该端口将转发到主机上的10443。 并不是真正的问题,但在本地测试API时应了解。
- 要特别注意的第二个属性是您为密钥库设置的名称。 我忘记设置“ classpath:”部分,该部分使应用程序在我没有的“ / app”文件夹中查找密钥存储。 我不确定这是从哪里来的,但是请注意,如果在应用程序中交付密钥存储,则必须在路径中添加“ classpath:”。
但是,等等……我们忘记为此配置Boxfuse了! 好吧,我们不需要这样做,因为Boxfuse将使用与Spring Boot相同的设置,并确保在服务器的安全组中打开了正确的端口。 因此,只需使用Boxfuse运行您的应用程序,现在就只能通过https访问REST API:
翻译自: https://www.javacodegeeks.com/2016/05/seting-https-rest-api-boxfuse.html