我知道这已经很旧了,但回答这个问题是因为我遇到了完全相同的问题,并且必须阅读很多内容才能弄清楚。
来自微软的教程 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,请执行以下步骤
-
Add the azure-spring-boot-starter-keyvault-certificates
你的 pom 中的依赖项。
-
添加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 密钥保管库只能存储包含私钥和公钥对的证书。