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)
+ /**
+ *
+ * - -1 = no requested key length is known (might happen with imported certificates)
+ * - 0 = no key is available for this certificate (might happen with trusted third party certificates)
+ * - > 1 = The key length in bits used for the private key of this certificate
+ *
+ */
+ @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) {