使用 Azure Key Vault 将 TLS/SSL 证书传送到 Apache Tomcat

本文介绍如何将 Azure Key Vault 集成到 Apache Tomcat 中,以提供 TLS/SSL 证书。

确保 JVM 可以访问 TLS/SSL 证书

请确保执行了使用 Azure 密钥保管库向 JVM 提供 TLS/SSL 证书中所述的所有步骤。

将 TLS/SSL 配置添加到 server.xml

将以下配置添加到 Tomcat 中的 server.xml 文件。 请务必将 <your-certificate> 占位符替换为要用于服务器端 TLS/SSL 的 Azure Key Vault 中的证书名称。

<Connector port="8443"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150"
           SSLEnabled="true">
    <SSLHostConfig>
        <Certificate
            certificateKeyAlias="<your-certificate>"
            certificateKeystoreFile=""
            certificateKeystorePassword=""
            certificateKeystoreType="DKS"
            certificateKeystoreProvider="AzureKeyVault" />
    </SSLHostConfig>
</Connector>

设置所需的启动属性

在启动 Tomcat 之前,请使用 JAVA_OPTSCLASSPATH 环境变量来设置环境。 指定环境变量的一种方法是在 Tomcat bin 目录中创建 setenv.shsetenv.bat 脚本。

注意

还可以使用其他方法来设置环境变量。 我们已通过运行 Tomcat 的 catalina.sh 脚本或 catalina.bat 脚本以及运行 Tomcat for Windows 服务进行测试。

export JAVA_OPTS="-Djava.security.properties==/xxx/my.java.security"
export CLASSPATH="/xxx/azure-security-keyvault-jca.jar"

以下 JAVA_OPTS 示例介绍了使用服务主体进行的本地测试:

export JAVA_OPTS='-Djava.security.properties==/xxx/my.java.security -Dazure.keyvault.uri=xxx -Dazure.keyvault.client-id=xxx -Dazure.keyvault.client-secret=xxx -Dazure.keyvault.tenant-id=xxx'

此示例介绍使用用户分配的托管标识的云部署:

export JAVA_OPTS='-Djava.security.properties==/xxx/my.java.security -Dazure.keyvault.uri=xxx -Dazure.keyvault.managed-identity=<your-managed-identity>'

此示例介绍使用系统分配的托管标识的云部署:

export JAVA_OPTS='-Djava.security.properties==/xxx/my.java.security -Dazure.keyvault.uri=xxx'

有关其中每个属性的含义,请参阅 使用 Azure Key Vault 将 TLS/SSL 证书传送到 JVM

后续步骤