chore: Rename certificate information to be more versatile to use
This commit is contained in:
parent
f1135c54fa
commit
fc4ea17cf3
7 changed files with 93 additions and 90 deletions
|
|
@ -1,15 +1,26 @@
|
|||
package de.mlessmann.certassist.openssl;
|
||||
|
||||
import static de.mlessmann.certassist.Constants.CERTASSIST_TMP_PREFIX;
|
||||
import static java.util.concurrent.TimeUnit.*;
|
||||
import static org.slf4j.LoggerFactory.getLogger;
|
||||
|
||||
import de.mlessmann.certassist.DeleteRecursiveFileVisitor;
|
||||
import de.mlessmann.certassist.except.CommandLineOperationException;
|
||||
import de.mlessmann.certassist.except.UnresolvableCLIDependency;
|
||||
import de.mlessmann.certassist.openssl.CertificateRequest.RequestType;
|
||||
import de.mlessmann.certassist.openssl.CertificateSubject.CertificateSubjectBuilder;
|
||||
import de.mlessmann.certassist.models.CertificateInfo;
|
||||
import de.mlessmann.certassist.models.CertificateInfo.RequestType;
|
||||
import de.mlessmann.certassist.models.CertificateInfoExtension;
|
||||
import de.mlessmann.certassist.models.CertificateInfoSubject;
|
||||
import de.mlessmann.certassist.models.CertificateInfoSubject.CertificateInfoSubjectBuilder;
|
||||
import de.mlessmann.certassist.service.ExecutableResolver;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.zeroturnaround.exec.ProcessExecutor;
|
||||
import org.zeroturnaround.exec.ProcessResult;
|
||||
import org.zeroturnaround.exec.StartedProcess;
|
||||
import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
|
|
@ -25,17 +36,10 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.zeroturnaround.exec.ProcessExecutor;
|
||||
import org.zeroturnaround.exec.ProcessResult;
|
||||
import org.zeroturnaround.exec.StartedProcess;
|
||||
import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
|
||||
|
||||
import static de.mlessmann.certassist.Constants.CERTASSIST_TMP_PREFIX;
|
||||
import static java.util.concurrent.TimeUnit.*;
|
||||
import static org.slf4j.LoggerFactory.getLogger;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
|
|
@ -65,7 +69,7 @@ public class OpenSSLService {
|
|||
private final CertificatePasswordProvider passwordProvider;
|
||||
private final CertificateProvider certificateProvider;
|
||||
|
||||
private static String buildSubjectArg(CertificateRequest request) {
|
||||
private static String buildSubjectArg(CertificateInfo request) {
|
||||
String certSubject = OPENSSL_CERT_SUBJECT_TEMPLATE
|
||||
.replace("ISO-COUNTRY", request.getSubject().getCountry())
|
||||
.replace("STATE", request.getSubject().getState())
|
||||
|
|
@ -103,7 +107,7 @@ public class OpenSSLService {
|
|||
}
|
||||
|
||||
@NonNull
|
||||
public OpenSSLCertificateResult createCertificate(CertificateRequest request) throws CommandLineOperationException {
|
||||
public OpenSSLCertificateResult createCertificate(CertificateInfo request) throws CommandLineOperationException {
|
||||
Path tmpDir;
|
||||
try {
|
||||
tmpDir = Files.createTempDirectory(CERTASSIST_TMP_PREFIX);
|
||||
|
|
@ -150,7 +154,7 @@ public class OpenSSLService {
|
|||
}
|
||||
}
|
||||
|
||||
private Path createKeyfile(CertificateRequest request, Path outFile, String filePassword)
|
||||
private Path createKeyfile(CertificateInfo request, Path outFile, String filePassword)
|
||||
throws CommandLineOperationException {
|
||||
Path keyFile = outFile.toAbsolutePath();
|
||||
log.debug("Writing new certificate key to {}", keyFile);
|
||||
|
|
@ -182,7 +186,7 @@ public class OpenSSLService {
|
|||
return keyFile;
|
||||
}
|
||||
|
||||
private Path createCertificate(CertificateRequest request, Path keyFile, Path outFile, String keyPassphrase)
|
||||
private Path createCertificate(CertificateInfo request, Path keyFile, Path outFile, String keyPassphrase)
|
||||
throws CommandLineOperationException {
|
||||
log.debug("Writing new certificate file {}", outFile);
|
||||
|
||||
|
|
@ -222,7 +226,7 @@ public class OpenSSLService {
|
|||
return outFile;
|
||||
}
|
||||
|
||||
private Path createSigningRequest(CertificateRequest request, Path keyFile, Path outFile, String certPassword)
|
||||
private Path createSigningRequest(CertificateInfo request, Path keyFile, Path outFile, String certPassword)
|
||||
throws CommandLineOperationException {
|
||||
log.atDebug().log("Writing new certificate signing request file {}", outFile);
|
||||
|
||||
|
|
@ -363,7 +367,7 @@ public class OpenSSLService {
|
|||
}
|
||||
|
||||
private Path signCertificate(
|
||||
CertificateRequest request,
|
||||
CertificateInfo request,
|
||||
Path caCert,
|
||||
Path caKey,
|
||||
String caKeyPassphrase,
|
||||
|
|
@ -377,7 +381,7 @@ public class OpenSSLService {
|
|||
String extContent = CSR_EXT_TEMPLATE;
|
||||
List<String> altNames = Optional
|
||||
.ofNullable(request.getExtension())
|
||||
.map(CertificateRequestExtension::getAlternativeNames)
|
||||
.map(CertificateInfoExtension::getAlternativeDnsNames)
|
||||
.orElse(List.of());
|
||||
if (!altNames.isEmpty()) {
|
||||
AtomicInteger counter = new AtomicInteger(1);
|
||||
|
|
@ -489,7 +493,7 @@ public class OpenSSLService {
|
|||
}
|
||||
}
|
||||
|
||||
public CertificateRequest getCertificateInfo(Path path) throws CommandLineOperationException {
|
||||
public CertificateInfo getCertificateInfo(Path path) throws CommandLineOperationException {
|
||||
StartedProcess infoProc = null;
|
||||
try {
|
||||
infoProc =
|
||||
|
|
@ -563,14 +567,14 @@ public class OpenSSLService {
|
|||
}
|
||||
}
|
||||
|
||||
private CertificateRequest getCertificateInfo(String[] lines) {
|
||||
var builder = CertificateRequest.builder();
|
||||
private CertificateInfo getCertificateInfo(String[] lines) {
|
||||
var builder = CertificateInfo.builder();
|
||||
boolean hasIssuer = false;
|
||||
|
||||
for (int i = 0; i < lines.length; i++) {
|
||||
String line = lines[i];
|
||||
if (line.startsWith("subject=")) {
|
||||
CertificateSubjectBuilder subjectBuilder = CertificateSubject.builder();
|
||||
var subjectBuilder = CertificateInfoSubject.builder();
|
||||
|
||||
line = lines[++i];
|
||||
while (line.startsWith(" ")) {
|
||||
|
|
@ -580,7 +584,7 @@ public class OpenSSLService {
|
|||
builder = builder.subject(subjectBuilder);
|
||||
} else if (line.startsWith("issuer=")) {
|
||||
hasIssuer = true;
|
||||
CertificateSubjectBuilder issuerBuilder = CertificateSubject.builder();
|
||||
var issuerBuilder = CertificateInfoSubject.builder();
|
||||
|
||||
line = lines[++i];
|
||||
while (line.startsWith(" ")) {
|
||||
|
|
@ -591,7 +595,7 @@ public class OpenSSLService {
|
|||
builder = builder.issuer(issuerBuilder);
|
||||
} else if (line.startsWith("X509v3 Subject Alternative Name")) {
|
||||
String[] altNames = lines[++i].split(",");
|
||||
builder = builder.extension(CertificateRequestExtension.builder().alternativeNames(altNames));
|
||||
builder = builder.extension(CertificateInfoExtension.builder().alternativeDnsNames(altNames));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -599,7 +603,7 @@ public class OpenSSLService {
|
|||
return builder.build();
|
||||
}
|
||||
|
||||
private CertificateSubjectBuilder readSubjectInfo(String line, CertificateSubjectBuilder builder) {
|
||||
private CertificateInfoSubjectBuilder readSubjectInfo(String line, CertificateInfoSubjectBuilder builder) {
|
||||
String[] parts = line.split("=", 2);
|
||||
if (parts.length != 2) {
|
||||
return builder;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue