在本文中,我们将学习如何配置Vault PKI引擎并将其与Spring WebFlux集成。使用Vault PKI,您可以轻松生成由CA签名的X.509证书。然后,您的应用程序可以通过REST API获得证书。它的TTL相对较短。每个应用程序实例都是唯一的。此外,我们还可以使用SpringVault模板简化与Vault API的集成。
让我们再多说一点关于安全库的事。它允许您使用UI、CLI或HTTP API保护、存储和控制对令牌、密码、证书和加密密钥的访问。这是一个非常强大的工具。使用Vault,而不是传统的方法,您可以以更动态、云本地的方式管理您的安全性。例如,可以将Vault与数据库后端集成,然后动态生成用户登录名和密码。此外,对于Spring Boot应用程序,您可以利用Spring Cloud Vault项目。
还不止这些。您可以将Vault与来自Hashicorp的其他工具(如Consor或Nomad)集成。换句话说,它允许我们以安全的方式构建云本地平台。
源代码
如果您想自己尝试,您可以随时查看我的源代码。为了做到这一点,您需要克隆我的存储库示例SpringCloudSecurity( https://github.com/piomin/sample-spring-cloud-security.git )。然后,您应该转到网关服务目录,并按照我在下一节中的说明进行操作。示例应用程序充当微服务的API网关。我们使用Spring Cloud Gateway。由于它是建立在Spring WebFlux之上的,所以这个例子非常适合我们当前的文章。
1. 运行Vault
我们将在开发模式下在Docker容器中运行Vault。在该模式下运行的服务器不需要任何进一步的设置,启动后即可使用。启动后,我们的Vault实例在端口 8200
上可用。本文中使用的Vault版本为1.7.1。
$ docker run --cap-add=IPC_LOCK -d --name vault -p 8200:8200 vault
可以使用不同的方法登录,但最适合我们的方式是通过令牌。为此,我们必须使用命令 docker logs vault
显示容器日志,然后复制根令牌,如下所示。
最后,我们可以登录到Vault web控制台。
2. 启用和配置Vault PKI
有两种方法可以启用和配置Vault PKI:使用CLI或通过UI。大多数文章都描述了配置PKI引擎所需的CLI命令列表。但是,我将使用Vault UI来实现这一点。首先,让我们在主站点上启用一个新引擎。
然后,我们需要选择一种类型的引擎来启用。在我们的例子中,它是PKI证书的选项。
在创建过程中,让我们保留一个默认名称pki。然后,我们需要导航到新启用的引擎并创建一个新角色。角色用于生成证书。我的角色的名称是默认的。这个名称很重要,因为我们必须使用