chore: Rename OpenSSLCertificateCreator to OpenSSLService
This commit is contained in:
parent
938101db8f
commit
f1135c54fa
8 changed files with 23 additions and 37 deletions
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 =
|
|
@ -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));
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
Loading…
Add table
Reference in a new issue