Fix TTL format for PKI Certificate Requests.

We now send TTL validity as seconds instead of attempting to serialize a Duration object.

Closes gh-263.
This commit is contained in:
Mark Paluch
2018-07-27 15:33:22 +02:00
parent 8abddfbb7d
commit 461dab9774
2 changed files with 24 additions and 1 deletions

View File

@@ -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()) {

View File

@@ -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() {