How to use VaultTemplate when my vault service turns on client authentication

Recently learning about vault. Follow to achieve the goal of use Vault client libraries inside my application code.
But now my vault service turns on client authentication, how should this instance be written?

listener "tcp" {
  address = "[::]:8200"
  tls_cert_file = "/certs/webServer.crt"
  tls_key_file  = "/certs/webServer.key"
  tls_disable = false
  tls_require_and_verify_client_cert = true
  tls_client_ca_file = "/certs/webClientCA.pem"

Mainly I don’t know how to configure the delivery of client certificate, client key, and listener’s ca certificate.

public void run(String... strings) throws Exception {
    VaultEndpoint vaultEndpoint = new VaultEndpoint();


    // Authenticate
    VaultTemplate vaultTemplate = new VaultTemplate(
            new TokenAuthentication("dev-only-token"));

    // Write a secret
    Map<String, String> data = new HashMap<>();
    data.put("password", "Hashi123");

    Versioned.Metadata createResponse = vaultTemplate
            .put("my-secret-password", data);

    System.out.println("Secret written successfully.");

    // Read a secret
    Versioned<Map<String, Object>> readResponse = vaultTemplate

    String password = "";
    if (readResponse != null && readResponse.hasData()) {
        password = (String) readResponse.getData().get("password");

   public static void readSecret() {
        HttpComponentsClientHttpRequestFactory requestFactory = getRequestFactory(certificatePath, certificatePassword);
        VaultTemplate vaultTemplate = getVaultTemplate(token, requestFactory);
        // Read a secret

    public static HttpComponentsClientHttpRequestFactory getRequestFactory(String certificatePath, String certificatePassword) {
        SSLContext sslContext = null;
        try {
            sslContext = SSLContextBuilder
                    .loadKeyMaterial(new FileUrlResource(certificatePath).getURL(), certificatePassword.toCharArray(), certificatePassword.toCharArray())
                    .loadTrustMaterial(new TrustSelfSignedStrategy() {
                        public boolean isTrusted([] chain, String authType) {
                            return true;
        } catch (Exception e) {
        CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext).build();
        return new HttpComponentsClientHttpRequestFactory(client);
    public static VaultTemplate getVaultTemplate(String token, HttpComponentsClientHttpRequestFactory requestFactory) {
        VaultEndpoint vaultEndpoint = new VaultEndpoint();
        String vaultHost = "";
        int vaultPort = 50036;
        return new VaultTemplate(vaultEndpoint, requestFactory, new SimpleSessionManager(new TokenAuthentication(token)));