chore: Rename OpenSSLCertificateCreator to OpenSSLService

This commit is contained in:
Magnus Leßmann (@MarkL4YG) 2024-11-23 20:38:57 +01:00
parent 938101db8f
commit f1135c54fa
8 changed files with 23 additions and 37 deletions

View file

@ -1,7 +1,7 @@
package de.mlessmann.certassist.keystore; package de.mlessmann.certassist.keystore;
import de.mlessmann.certassist.openssl.CertificatePasswordProvider; import de.mlessmann.certassist.openssl.CertificatePasswordProvider;
import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator; import de.mlessmann.certassist.openssl.OpenSSLService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -12,7 +12,7 @@ public class AutoBootKeyStoreManagement {
@Bean @Bean
@ConditionalOnMissingBean(KeyStoreManager.class) @ConditionalOnMissingBean(KeyStoreManager.class)
public KeyStoreManager keystoreProvider( public KeyStoreManager keystoreProvider(
OpenSSLCertificateCreator certificateCreator, OpenSSLService certificateCreator,
CertificatePasswordProvider passwordProvider CertificatePasswordProvider passwordProvider
) { ) {
return new KeyStoreManager(certificateCreator, passwordProvider); return new KeyStoreManager(certificateCreator, passwordProvider);

View file

@ -3,7 +3,7 @@ package de.mlessmann.certassist.keystore;
import de.mlessmann.certassist.except.JavaSecurityException; import de.mlessmann.certassist.except.JavaSecurityException;
import de.mlessmann.certassist.openssl.CertificatePasswordProvider; import de.mlessmann.certassist.openssl.CertificatePasswordProvider;
import de.mlessmann.certassist.openssl.CertificateUsage; import de.mlessmann.certassist.openssl.CertificateUsage;
import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator; import de.mlessmann.certassist.openssl.OpenSSLService;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.OpenOption; import java.nio.file.OpenOption;
@ -27,7 +27,7 @@ public class KeyStoreManager {
StandardOpenOption.CREATE, StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.TRUNCATE_EXISTING,
}; };
private final OpenSSLCertificateCreator certificateCreator; private final OpenSSLService certificateCreator;
private final CertificatePasswordProvider passwordProvider; private final CertificatePasswordProvider passwordProvider;
public KeystoreUsage createKeyStore(String keyStorePassphrase, CertificateUsage... serverCerts) public KeystoreUsage createKeyStore(String keyStorePassphrase, CertificateUsage... serverCerts)

View file

@ -16,11 +16,11 @@ public class AutoBootOpenSSL {
@Bean @Bean
@ConditionalOnMissingBean(CertificatePasswordProvider.class) @ConditionalOnMissingBean(CertificatePasswordProvider.class)
public OpenSSLCertificateCreator openSSLProvider( public OpenSSLService openSSLProvider(
ExecutableResolver executableResolver, ExecutableResolver executableResolver,
CertificatePasswordProvider passwordProvider, CertificatePasswordProvider passwordProvider,
CertificateProvider usageProvider CertificateProvider usageProvider
) { ) {
return new OpenSSLCertificateCreator(executableResolver, passwordProvider, usageProvider); return new OpenSSLService(executableResolver, passwordProvider, usageProvider);
} }
} }

View file

@ -40,7 +40,7 @@ import org.zeroturnaround.exec.stream.slf4j.Slf4jStream;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class OpenSSLCertificateCreator { public class OpenSSLService {
private static final Logger openSSLLogger = getLogger("OpenSSL-Logger"); private static final Logger openSSLLogger = getLogger("OpenSSL-Logger");
public static final String OPENSSL_CERT_SUBJECT_TEMPLATE = public static final String OPENSSL_CERT_SUBJECT_TEMPLATE =

View file

@ -19,16 +19,14 @@ import org.springframework.stereotype.Service;
public class CertificateCreationService { public class CertificateCreationService {
private final CertificateRepository certificateRepository; private final CertificateRepository certificateRepository;
private final OpenSSLCertificateCreator openSSLCertificateCreator; private final OpenSSLService openSSLService;
private final PassphraseService passphraseService; private final PassphraseService passphraseService;
public Certificate createCertificate(final CertificateRequest certificateRequest) { public Certificate createCertificate(final CertificateRequest certificateRequest) {
final Certificate certificate = createEntityFromRequest(certificateRequest); final Certificate certificate = createEntityFromRequest(certificateRequest);
try ( try (
OpenSSLCertificateResult certificateCreatorResult = openSSLCertificateCreator.createCertificate( OpenSSLCertificateResult certificateCreatorResult = openSSLService.createCertificate(certificateRequest);
certificateRequest
);
) { ) {
certificate.setPrivateKey(Files.readAllBytes(certificateCreatorResult.certificateKeyPath())); certificate.setPrivateKey(Files.readAllBytes(certificateCreatorResult.certificateKeyPath()));
certificate.setCert(Files.readAllBytes(certificateCreatorResult.certificatePath())); certificate.setCert(Files.readAllBytes(certificateCreatorResult.certificatePath()));
@ -67,8 +65,8 @@ public class CertificateCreationService {
public Certificate importCertificate(Path certificate, Path keyFile, String passphrase) { public Certificate importCertificate(Path certificate, Path keyFile, String passphrase) {
try { try {
String fingerprint = openSSLCertificateCreator.getCertificateFingerprint(certificate); String fingerprint = openSSLService.getCertificateFingerprint(certificate);
var generatedRequest = openSSLCertificateCreator.getCertificateInfo(certificate); var generatedRequest = openSSLService.getCertificateInfo(certificate);
Certificate entity = createEntityFromRequest(generatedRequest); Certificate entity = createEntityFromRequest(generatedRequest);
entity.setCert(Files.readAllBytes(certificate)); entity.setCert(Files.readAllBytes(certificate));
entity.setPrivateKey(Files.readAllBytes(keyFile)); entity.setPrivateKey(Files.readAllBytes(keyFile));

View file

@ -40,11 +40,11 @@ public class CertificateServiceTest {
@Test @Test
void testCanImportCertificate() { void testCanImportCertificate() {
Path certDir = TestOpenSSLCertificateCreator.TEST_CERT_PATH; Path certDir = TestOpenSSLService.TEST_CERT_PATH;
var importedCert = certificateService.importCertificate( var importedCert = certificateService.importCertificate(
certDir.resolve("x509forImport.pem"), certDir.resolve("x509forImport.pem"),
certDir.resolve("x509forImport.key.pem"), certDir.resolve("x509forImport.key.pem"),
TestOpenSSLCertificateCreator.TEST_CERT_PASSPHRASE TestOpenSSLService.TEST_CERT_PASSPHRASE
); );
assertThat(importedCert).isNotNull(); assertThat(importedCert).isNotNull();
assertThat(importedCert.getId()).isGreaterThan("0"); assertThat(importedCert.getId()).isGreaterThan("0");

View file

@ -7,7 +7,7 @@ import de.mlessmann.certassist.keystore.TruststoreManager;
import de.mlessmann.certassist.openssl.CertificateProvider; import de.mlessmann.certassist.openssl.CertificateProvider;
import de.mlessmann.certassist.openssl.CertificateUsage; import de.mlessmann.certassist.openssl.CertificateUsage;
import de.mlessmann.certassist.openssl.InMemoryCertificatePasswordProvider; import de.mlessmann.certassist.openssl.InMemoryCertificatePasswordProvider;
import de.mlessmann.certassist.openssl.OpenSSLCertificateCreator; import de.mlessmann.certassist.openssl.OpenSSLService;
import de.mlessmann.certassist.service.ExecutableResolver; import de.mlessmann.certassist.service.ExecutableResolver;
import java.io.IOException; import java.io.IOException;
import java.net.ServerSocket; import java.net.ServerSocket;
@ -27,36 +27,32 @@ public class TestKeystoreCreation {
private final CertificateUsage dummyCert = new CertificateUsage() { private final CertificateUsage dummyCert = new CertificateUsage() {
@Override @Override
public String fingerprint() { public String fingerprint() {
return TestOpenSSLCertificateCreator.TEST_CERT_FINGERPRINT; return TestOpenSSLService.TEST_CERT_FINGERPRINT;
} }
@Override @Override
public Path certificatePath() { public Path certificatePath() {
return TestOpenSSLCertificateCreator.TEST_CERT_PATH.resolve("x509forImport.pem"); return TestOpenSSLService.TEST_CERT_PATH.resolve("x509forImport.pem");
} }
@Override @Override
public Path certificateKeyPath() { public Path certificateKeyPath() {
return TestOpenSSLCertificateCreator.TEST_CERT_PATH.resolve("x509forImport.key.pem"); return TestOpenSSLService.TEST_CERT_PATH.resolve("x509forImport.key.pem");
} }
@Override @Override
public Path fullchainPath() { public Path fullchainPath() {
return TestOpenSSLCertificateCreator.TEST_CERT_PATH.resolve("x509forImport.fullchain.pem"); return TestOpenSSLService.TEST_CERT_PATH.resolve("x509forImport.fullchain.pem");
} }
}; };
@Test @Test
void testTruststore() throws Exception { void testTruststore() throws Exception {
var passwordProvider = new InMemoryCertificatePasswordProvider(); var passwordProvider = new InMemoryCertificatePasswordProvider();
passwordProvider.setPasswordFor(dummyCert.fingerprint(), TestOpenSSLCertificateCreator.TEST_CERT_PASSPHRASE); passwordProvider.setPasswordFor(dummyCert.fingerprint(), TestOpenSSLService.TEST_CERT_PASSPHRASE);
var certificateProvider = Mockito.mock(CertificateProvider.class); var certificateProvider = Mockito.mock(CertificateProvider.class);
var opensslCertCreator = new OpenSSLCertificateCreator( var opensslCertCreator = new OpenSSLService(new ExecutableResolver(), passwordProvider, certificateProvider);
new ExecutableResolver(),
passwordProvider,
certificateProvider
);
var truststoreManager = new TruststoreManager(); var truststoreManager = new TruststoreManager();
var keyStoreManager = new KeyStoreManager(opensslCertCreator, passwordProvider); var keyStoreManager = new KeyStoreManager(opensslCertCreator, passwordProvider);
AtomicBoolean serverAccepted = new AtomicBoolean(false); AtomicBoolean serverAccepted = new AtomicBoolean(false);

View file

@ -14,7 +14,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
@SpringBootTest @SpringBootTest
class TestOpenSSLCertificateCreator { class TestOpenSSLService {
public static final String TEST_CERT_PASSPHRASE = "ABC-123"; public static final String TEST_CERT_PASSPHRASE = "ABC-123";
public static final Path TEST_CERT_PATH = Path.of("src/test/resources/openssl"); public static final Path TEST_CERT_PATH = Path.of("src/test/resources/openssl");
@ -36,11 +36,7 @@ class TestOpenSSLCertificateCreator {
void testCertificateCreation() throws Exception { void testCertificateCreation() throws Exception {
CertificateProvider certificateProvider = mock(CertificateProvider.class); CertificateProvider certificateProvider = mock(CertificateProvider.class);
ExecutableResolver executableResolver = new ExecutableResolver(); ExecutableResolver executableResolver = new ExecutableResolver();
var certificateCreator = new OpenSSLCertificateCreator( var certificateCreator = new OpenSSLService(executableResolver, passwordProvider, certificateProvider);
executableResolver,
passwordProvider,
certificateProvider
);
CertificateRequest certRequest = CertificateRequest CertificateRequest certRequest = CertificateRequest
.builder() .builder()
@ -102,11 +98,7 @@ class TestOpenSSLCertificateCreator {
void testCertificateImport() throws Exception { void testCertificateImport() throws Exception {
CertificateProvider certificateProvider = mock(CertificateProvider.class); CertificateProvider certificateProvider = mock(CertificateProvider.class);
ExecutableResolver executableResolver = new ExecutableResolver(); ExecutableResolver executableResolver = new ExecutableResolver();
var certificateCreator = new OpenSSLCertificateCreator( var certificateCreator = new OpenSSLService(executableResolver, passwordProvider, certificateProvider);
executableResolver,
passwordProvider,
certificateProvider
);
var request = certificateCreator.getCertificateInfo(TEST_CERT_PATH.resolve("x509forImportCA.pem")); var request = certificateCreator.getCertificateInfo(TEST_CERT_PATH.resolve("x509forImportCA.pem"));
assertThat(request).isNotNull(); assertThat(request).isNotNull();