diff --git a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultPkiTemplate.java b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultPkiTemplate.java index 6015e88d..8a3b24d3 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultPkiTemplate.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultPkiTemplate.java @@ -17,6 +17,7 @@ package org.springframework.vault.core; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.time.temporal.ChronoUnit; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -176,7 +177,7 @@ public class VaultPkiTemplate implements VaultPkiOperations { } if (certificateRequest.getTtl() != null) { - request.put("ttl", certificateRequest.getTtl()); + request.put("ttl", certificateRequest.getTtl().get(ChronoUnit.SECONDS)); } if (certificateRequest.isExcludeCommonNameFromSubjectAltNames()) { diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java index 39564b07..e4c2b993 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java @@ -20,7 +20,12 @@ import java.io.InputStream; import java.math.BigInteger; import java.security.cert.CertificateFactory; import java.security.cert.X509CRL; +import java.security.cert.X509Certificate; +import java.time.Duration; +import java.time.Instant; +import java.time.temporal.ChronoUnit; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -108,6 +113,23 @@ public class VaultPkiTemplateIntegrationTests extends IntegrationTestSupport { .isEqualTo("CN=hello.example.com"); } + @Test + public void issueCertificateWithTtlShouldCreateCertificate() { + + VaultCertificateRequest request = VaultCertificateRequest.builder() + .ttl(Duration.ofHours(48)).commonName("hello.example.com").build(); + + VaultCertificateResponse certificateResponse = pkiOperations.issueCertificate( + "testrole", request); + + X509Certificate certificate = certificateResponse.getData().getX509Certificate(); + + Instant now = Instant.now(); + assertThat(certificate.getNotAfter()).isAfter( + Date.from(now.plus(40, ChronoUnit.HOURS))).isBefore( + Date.from(now.plus(50, ChronoUnit.HOURS))); + } + @Test public void signShouldSignCsr() {