feat: Move OpenSSL output to custom logger

This commit is contained in:
Magnus Leßmann (@MarkL4YG) 2024-11-23 12:41:36 +01:00
parent e37348db23
commit dd2e11c8e8

View file

@ -1,6 +1,7 @@
package de.mlessmann.certassist.openssl; package de.mlessmann.certassist.openssl;
import static de.mlessmann.certassist.Constants.CERTASSIST_TMP_PREFIX; import static de.mlessmann.certassist.Constants.CERTASSIST_TMP_PREFIX;
import static org.slf4j.LoggerFactory.getLogger;
import de.mlessmann.certassist.DeleteRecursiveFileVisitor; import de.mlessmann.certassist.DeleteRecursiveFileVisitor;
import de.mlessmann.certassist.ExecutableResolver; import de.mlessmann.certassist.ExecutableResolver;
@ -25,6 +26,7 @@ import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -37,6 +39,7 @@ import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
@Slf4j @Slf4j
public class OpenSSLCertificateCreator { public class OpenSSLCertificateCreator {
private static final Logger openSSLLogger = getLogger("OpenSSL-Logger");
public static final String OPENSSL_CERT_SUBJECT_TEMPLATE = public static final String OPENSSL_CERT_SUBJECT_TEMPLATE =
"/C=ISO-COUNTRY/ST=STATE/L=LOCALITY/O=ORGANIZATION/CN=COMMON-NAME"; "/C=ISO-COUNTRY/ST=STATE/L=LOCALITY/O=ORGANIZATION/CN=COMMON-NAME";
private static final String CSR_EXT_TEMPLATE = private static final String CSR_EXT_TEMPLATE =
@ -141,8 +144,8 @@ public class OpenSSLCertificateCreator {
Integer.toString(request.getRequestedKeyLength()) Integer.toString(request.getRequestedKeyLength())
) )
.environment("KEY_PASS", filePassword) .environment("KEY_PASS", filePassword)
.redirectOutput(Slf4jStream.ofCaller().asDebug()) .redirectOutput(Slf4jStream.of(openSSLLogger).asDebug())
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
keygenProc.getFuture().get(); keygenProc.getFuture().get();
} catch (IOException e) { } catch (IOException e) {
@ -181,8 +184,8 @@ public class OpenSSLCertificateCreator {
certSubject certSubject
) )
.environment("KEY_PASS", certPassword) .environment("KEY_PASS", certPassword)
.redirectOutput(Slf4jStream.ofCaller().asDebug()) .redirectOutput(Slf4jStream.of(openSSLLogger).asDebug())
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
certGenProc.getFuture().get(); certGenProc.getFuture().get();
} catch (IOException e) { } catch (IOException e) {
@ -218,8 +221,8 @@ public class OpenSSLCertificateCreator {
certSubject certSubject
) )
.environment("KEY_PASS", certPassword) .environment("KEY_PASS", certPassword)
.redirectOutput(Slf4jStream.ofCaller().asDebug()) .redirectOutput(Slf4jStream.of(openSSLLogger).asDebug())
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
certGenProc.getFuture().get(); certGenProc.getFuture().get();
} catch (IOException e) { } catch (IOException e) {
@ -264,8 +267,8 @@ public class OpenSSLCertificateCreator {
StartedProcess verifyCommand = new ProcessExecutor() StartedProcess verifyCommand = new ProcessExecutor()
.command(resolveOpenSSL(), "verify", "-CAfile", tempTrustedBundle.toString(), fullChainFile.toString()) .command(resolveOpenSSL(), "verify", "-CAfile", tempTrustedBundle.toString(), fullChainFile.toString())
.redirectOutput(Slf4jStream.ofCaller().asError()) .redirectOutput(Slf4jStream.of(openSSLLogger).asError())
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
var verifyResult = verifyCommand.getFuture().get(); var verifyResult = verifyCommand.getFuture().get();
return verifyResult.getExitValue() == 0; return verifyResult.getExitValue() == 0;
@ -316,8 +319,8 @@ public class OpenSSLCertificateCreator {
"pass:" + passphrase, "pass:" + passphrase,
"-noout" "-noout"
) )
.redirectOutput(Slf4jStream.ofCaller().asError()) .redirectOutput(Slf4jStream.of(openSSLLogger).asError())
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
var verifyResult = verifyCommand.getFuture().get(); var verifyResult = verifyCommand.getFuture().get();
return verifyResult.getExitValue() == 0; return verifyResult.getExitValue() == 0;
@ -387,8 +390,8 @@ public class OpenSSLCertificateCreator {
"-extfile", "-extfile",
extFile.toString() extFile.toString()
) )
.redirectOutput(Slf4jStream.ofCaller().asDebug()) .redirectOutput(Slf4jStream.of(openSSLLogger).asDebug())
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
certGenProc.getFuture().get(); certGenProc.getFuture().get();
} catch (IOException e) { } catch (IOException e) {
@ -405,7 +408,7 @@ public class OpenSSLCertificateCreator {
StartedProcess fingerprintProc = new ProcessExecutor() StartedProcess fingerprintProc = new ProcessExecutor()
.command(resolveOpenSSL(), "x509", "-in", certificate.toString(), "-noout", "-fingerprint") .command(resolveOpenSSL(), "x509", "-in", certificate.toString(), "-noout", "-fingerprint")
.readOutput(true) .readOutput(true)
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
var fingerprintResult = fingerprintProc.getFuture().get(); var fingerprintResult = fingerprintProc.getFuture().get();
String output = fingerprintResult.getOutput().getUTF8(); String output = fingerprintResult.getOutput().getUTF8();
@ -466,7 +469,7 @@ public class OpenSSLCertificateCreator {
"lname" "lname"
) )
.readOutput(true) .readOutput(true)
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
var infoResult = infoProc.getFuture().get(); var infoResult = infoProc.getFuture().get();
String output = infoResult.getOutput().getUTF8(); String output = infoResult.getOutput().getUTF8();
@ -490,7 +493,7 @@ public class OpenSSLCertificateCreator {
StartedProcess versionProc = new ProcessExecutor() StartedProcess versionProc = new ProcessExecutor()
.command(path, "version") .command(path, "version")
.readOutput(true) .readOutput(true)
.redirectError(Slf4jStream.ofCaller().asError()) .redirectError(Slf4jStream.of(openSSLLogger).asError())
.start(); .start();
var versionResult = versionProc.getFuture().get(); var versionResult = versionProc.getFuture().get();
if (versionResult.getExitValue() != 0) { if (versionResult.getExitValue() != 0) {