diff --git a/src/main/java/de/mlessmann/certassist/models/Certificate.java b/src/main/java/de/mlessmann/certassist/models/Certificate.java index 8213156..fdf3d16 100644 --- a/src/main/java/de/mlessmann/certassist/models/Certificate.java +++ b/src/main/java/de/mlessmann/certassist/models/Certificate.java @@ -29,7 +29,14 @@ public class Certificate { private String trustingAuthority; - @Min(1) + /** + * + */ + @Min(-1) private int requestedKeyLength; private OffsetDateTime notBefore; diff --git a/src/main/java/de/mlessmann/certassist/openssl/X509CertificateInfo.java b/src/main/java/de/mlessmann/certassist/openssl/X509CertificateInfo.java index 51a53ff..d99d506 100644 --- a/src/main/java/de/mlessmann/certassist/openssl/X509CertificateInfo.java +++ b/src/main/java/de/mlessmann/certassist/openssl/X509CertificateInfo.java @@ -32,4 +32,8 @@ public record X509CertificateInfo( } return Collections.unmodifiableList(extensions); } + + public boolean hasExtensions() { + return extensions != null && !extensions.isEmpty(); + } } diff --git a/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java b/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java index 1b1476a..349558a 100644 --- a/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java +++ b/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java @@ -87,7 +87,9 @@ public class CertificateCreationService { ) ); certificate.setSubjectCommonName(info.subject().getCommonName()); - certificate.setTrustingAuthority(info.issuer().getCommonName()); + if (info.issuer() != null) { + certificate.setTrustingAuthority(info.issuer().getCommonName()); + } certificate.setRequestedKeyLength(-1); certificate.setNotBefore(info.notBefore()); certificate.setNotAfter(info.notAfter()); @@ -100,12 +102,14 @@ public class CertificateCreationService { certificate.setSubjectState(subjectInfo.getState()); certificate.setSubjectLocality(subjectInfo.getLocality()); - final CertificateInfoExtension extension = info.extensions().getFirst(); - if (extension != null) { - final CertificateExtension certificateExtension = new CertificateExtension(); - certificateExtension.setIdentifier("alternativeNames"); - certificateExtension.setValue(String.join(",", extension.getAlternativeDnsNames())); - certificate.setCertificateExtension(List.of(certificateExtension)); + if (info.hasExtensions()) { + final CertificateInfoExtension extension = info.extensions().getFirst(); + if (extension != null) { + final CertificateExtension certificateExtension = new CertificateExtension(); + certificateExtension.setIdentifier("alternativeNames"); + certificateExtension.setValue(String.join(",", extension.getAlternativeDnsNames())); + certificate.setCertificateExtension(List.of(certificateExtension)); + } } return certificate; } @@ -119,6 +123,7 @@ public class CertificateCreationService { try { String fingerprint = openSSLService.getCertificateFingerprint(certificate); Certificate entity = createEntityFromInfo(openSSLService.getCertificateInfo(certificate)); + entity.setRequestedKeyLength(-1); entity.setFingerprint(fingerprint); entity.setCert(Files.readAllBytes(certificate)); if (keyFile != null) {