从 Azure 密钥保管库存储和检索 JKS

2024-05-24

我想引用 Azure Key Vault 中的 Java 密钥存储,而不是将其与作为 docker 映像部署到 Kubernetes 集群中的 Spring Boot 应用程序打包在一起。

根据 Azure 文档,仅允许将 .PFX 文件导入到 Key Vault 中。目前,我成功地从 Spring Boot 中打包和检索 JKS,但我正在寻找更安全的方法,并希望将我的证书放在代码库之外。

任何指针和代码片段都会有帮助。


我知道这已经很旧了,但回答这个问题是因为我遇到了完全相同的问题,并且必须阅读很多内容才能弄清楚。

来自微软的教程 https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-key-vault-certificates

这篇文章将为您提供一个很好的概述。

总而言之,如果您想使用存储在 azure key Vault 中的自签名证书为应用程序启用 SSL,请执行以下步骤

  1. Add the azure-spring-boot-starter-keyvault-certificates你的 pom 中的依赖项。

  2. 添加ssl配置和keyvault配置如下

    server:
      port: 8443
      ssl:
        key-alias: <keystore name>
        key-store-password: <password>
        keyStoreType: AzureKeyVault
        key-store-type: AzureKeyVault
    
    azure:
      keyvault:
        uri: <keystore uri>
        client-id: <client-id>
        client-secret: <secret>
        enabled: true
        tenant-id: <tenant-id>
    
    

这将在您的应用程序上启用 ssl,并使用 azure 的密钥存储来实现 https。

如果您只需要加载出站 TLS 的信任存储,事情会更简单一些。您只需如下配置密钥保管库。


    azure:
      keyvault:
        uri: <keystore uri>
        client-id: <client-id>
        client-secret: <secret>
        enabled: true
        tenant-id: <tenant-id>

然后,使用密钥保管库初始化 SSLContext。


    KeyStore azureKeyVaultKeyStore = KeyStore.getInstance("AzureKeyVault");
            KeyVaultLoadStoreParameter parameter = new KeyVaultLoadStoreParameter(
                    System.getProperty("azure.keyvault.uri"),
                    System.getProperty("azure.keyvault.tenant-id"),
                    System.getProperty("azure.keyvault.client-id"),
                    System.getProperty("azure.keyvault.client-secret"));
            azureKeyVaultKeyStore.load(parameter);
            SSLContext sslContext = SSLContexts.custom()
                    .loadTrustMaterial(azureKeyVaultKeyStore, null)
                    .build();

这会将密钥保管库上可用的所有证书加载到信任存储区。我不确定如果您只需要出站 TLS 的证书,是否需要这样做,因为 Azure 密钥保管库只能存储包含私钥和公钥对的证书。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Azure 密钥保管库存储和检索 JKS 的相关文章

随机推荐

  • UE4:将游戏帧输出到文件

    这适用于虚幻引擎 4 9 每一帧 我想将其保存到文件中 覆盖现有的 对于我制作的一个简单的 D3D11 演示 我可以使用以下命令来完成此操作 void Engine CaptureFrame D3DX11 IMAGE FILE FORMAT
  • C#中out参数有什么用

    你能告诉我具体的用途是什么吗out范围 相关问题 ref 和 out 和有什么不一样 C https stackoverflow com questions 516882 what is the difference between ref
  • 哪些mysql设置影响LOAD DATA INFILE的速度?

    让我来介绍一下情况 我们尝试将适量的行数 大约每天 10 20M 插入到宽度适中的 MyISAM 表中 Field Type Null Key Default Extra blah1 varchar 255 NO PRI blah2 var
  • Java监听按钮和键盘点击

    如何监听按下的按键并触发 JButton 例如 我在面板上有 A JButton 作为 GUI 我在 aButton 上实现了一个按钮监听器 它将把屏幕更改为其他内容 我希望通过鼠标单击和按下键盘来触发此按钮 如何通过按键盘上的 a 来触发
  • 为什么“0 && true”在 JavaScript 中返回 0 而不是布尔值?

    我确信 Javascript 中的任何逻辑表达式都会返回布尔值 但该表达式返回数字 0 而不是布尔值 0 true gt 0 为什么会这样 在这种情况下 我该如何处理 Javascript 中的逻辑表达式以防止将来出现此类错误 背景故事 我
  • 无法访问 Github 403 错误:权限被拒绝

    我是 Git Github 的新手 所以请原谅我的困惑 问题是 我刚刚对本地存储库进行了更改 并且想推送到 Github 上的原点 特别是 gh pages 之前 我一直在使用另一个 Github 帐户 因此我更改了 user name 和
  • 可从数组观察

    我目前对 Angular2 和 Observable 对象有疑问 我有一个调用服务的组件 一个链接到 api 的真实组件和一个假组件 链接到 API 的服务运行良好 但当我使用假的服务时 我想从 Observable 对象返回一个数组 但出
  • MSTest 与 Moq - DAL 设置

    我是最小起订量新手 刚刚开始一个已经在开发的项目 我负责设置单元测试 DatabaseFactory 有一个使用 EnterpriseLibrary 的自定义类 如下所示 public Database CreateCommonDataba
  • 使用 PDFSharp 打印 PDF

    我有以下代码 using System using System Diagnostics using System IO using PdfSharp Pdf Printing namespace PrintPdfFile class Pr
  • jQuery DataTables 获取选定行的值

    我正在使用 jQuery 数据表 我使用http www datatables net examples api select row html http www datatables net examples api select row
  • PayPal 沙箱 API 凭证丢失?

    我正在使用 PayPal 经典 API 当我尝试获取沙箱测试帐户 API 凭据时 我看到下面的空白屏幕 谁能告诉我发生了什么事吗 最后我成功了 这有效 注销 Paypal 帐户 清除浏览器缓存和cookie 我使用firefox 访问dev
  • 具有多个验证组的 Page_ClientValidate() - 如何同时显示多个摘要?

    ASP NET 2 0 假设我有两个验证组 valGrpOne 和 valGrpTwo 以及两个验证摘要 valSummOne 和 valSummTwo 分解部分的原因纯粹是为了美观 一个提交按钮会触发对两组的验证 现在我想触发客户端验证
  • Outlook 2007 捕获 ReplyToAll 事件的共享加载项

    我正在使用 VS 2010 和 Dot Net Framework 2 0 我已在 扩展性 gt Outlook 共享加载项 中创建了一个项目 我正在尝试捕获 ReplyToAll 事件 但它没有被解雇 请看下面的代码 连接方法 inspe
  • Postgres LEFT JOIN 与 WHERE 条件

    我需要使用 where 条件左连接两个表 Table time table id rid start date end date 1 2 2017 07 01 00 00 00 2018 11 01 00 00 00 2 5 2017 01
  • 简单的openGL程序无法在ubuntu中链接

    我正在尝试进入 opengl 编程 但无法编译我的第一个非常非常简单的程序 链接过程每次都会失败 我发现这个答案 https stackoverflow com questions 859501 learning opengl in ubu
  • 尝试使用 ui-router 让一个子视图调用另一个子视图

    我有两个子视图 一个用于类别 一个用于产品 因此是该类别的产品 我希望用户能够选择一个类别并查看该类别的所有产品 所以我在类别控制器中调用一个函数View单击类别行上的按钮 这是函数 self scope viewSalonProducts
  • 为什么重写本机方法是一个坏主意?

    我发布了一个我压倒一切的问题push using Object defineProperty 原来的问题是here https stackoverflow com questions 38096124 calling original me
  • 两个滚动视图同时工作,一键触摸

    我正在其中开发应用程序 我必须一键同时处理两个滚动视图 这意味着如果我同时滚动一个滚动视图 另一个滚动视图必须随之滚动 如果这是可能的 那么如何才能做到呢 在包含两个滚动视图的视图控制器中实现 UIScrollViewDelegate 协议
  • nginx + php-fpm = 找不到文件

    当我尝试访问时info php我得到一个File not found error 我尝试了一些教程但无济于事 配置 默认 server listen 80 listen 80 default ipv6only on server name
  • 从 Azure 密钥保管库存储和检索 JKS

    我想引用 Azure Key Vault 中的 Java 密钥存储 而不是将其与作为 docker 映像部署到 Kubernetes 集群中的 Spring Boot 应用程序打包在一起 根据 Azure 文档 仅允许将 PFX 文件导入到