Skip to content

Commit e6220e2

Browse files
committed
Add test
Added test to check behave Signed-off-by: Andrey Pleskach <[email protected]>
1 parent 585ea44 commit e6220e2

File tree

4 files changed

+48
-11
lines changed

4 files changed

+48
-11
lines changed

src/main/java/org/opensearch/security/ssl/config/KeyStoreConfiguration.java

+5-7
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
import java.security.cert.X509Certificate;
1919
import java.util.Arrays;
2020
import java.util.Collections;
21-
import java.util.HashSet;
2221
import java.util.List;
2322
import java.util.Objects;
2423
import java.util.Set;
24+
import java.util.stream.Collectors;
2525
import javax.net.ssl.KeyManagerFactory;
2626
import javax.security.auth.x500.X500Principal;
2727

@@ -45,12 +45,10 @@ default KeyManagerFactory createKeyManagerFactory(boolean validateCertificates)
4545
}
4646

4747
default Set<X500Principal> getIssuerDns() {
48-
Set<X500Principal> issuerDns = new HashSet<>();
49-
final List<Certificate> certificates = loadCertificates();
50-
for (Certificate certificate : certificates) {
51-
issuerDns.add(certificate.x509Certificate().getIssuerX500Principal());
52-
}
53-
return issuerDns;
48+
return loadCertificates().stream()
49+
.map(Certificate::x509Certificate)
50+
.map(X509Certificate::getIssuerX500Principal)
51+
.collect(Collectors.toSet());
5452
}
5553

5654
default KeyManagerFactory buildKeyManagerFactory(final KeyStore keyStore, final char[] password) {

src/test/java/org/opensearch/security/ssl/CertificatesRule.java

+20-1
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,34 @@ public X509CertificateHolder generateCaCertificate(final KeyPair parentKeyPair,
144144
return generateCaCertificate(parentKeyPair, generateSerialNumber(), startDate, endDate);
145145
}
146146

147+
public X509CertificateHolder generateCaCertificate(
148+
final KeyPair parentKeyPair,
149+
final String subjectName,
150+
final Instant startDate,
151+
final Instant endDate
152+
) throws IOException, NoSuchAlgorithmException, OperatorCreationException {
153+
return generateCaCertificate(parentKeyPair, subjectName, generateSerialNumber(), startDate, endDate);
154+
}
155+
147156
public X509CertificateHolder generateCaCertificate(
148157
final KeyPair parentKeyPair,
149158
final BigInteger serialNumber,
150159
final Instant startDate,
151160
final Instant endDate
161+
) throws IOException, NoSuchAlgorithmException, OperatorCreationException {
162+
return generateCaCertificate(parentKeyPair, DEFAULT_SUBJECT_NAME, serialNumber, startDate, endDate);
163+
}
164+
165+
public X509CertificateHolder generateCaCertificate(
166+
final KeyPair parentKeyPair,
167+
final String subjectName,
168+
final BigInteger serialNumber,
169+
final Instant startDate,
170+
final Instant endDate
152171
) throws IOException, NoSuchAlgorithmException, OperatorCreationException {
153172
// CS-SUPPRESS-SINGLE: RegexpSingleline Extension should only be used sparingly to keep implementations as generic as possible
154173
return createCertificateBuilder(
155-
DEFAULT_SUBJECT_NAME,
174+
subjectName,
156175
DEFAULT_SUBJECT_NAME,
157176
parentKeyPair.getPublic(),
158177
parentKeyPair.getPublic(),

src/test/java/org/opensearch/security/ssl/CertificatesUtils.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525

2626
public class CertificatesUtils {
2727

28-
public static void writePemContent(final Path path, final Object pemContent) throws IOException {
29-
try (JcaPEMWriter writer = new JcaPEMWriter(Files.newBufferedWriter(path))) {
30-
writer.writeObject(pemContent);
28+
public static void writePemContent(final Path path, final Object... content) throws IOException {
29+
for (final Object c : content) {
30+
try (JcaPEMWriter writer = new JcaPEMWriter(Files.newBufferedWriter(path))) {
31+
writer.writeObject(c);
32+
}
3133
}
3234
}
3335

src/test/java/org/opensearch/security/ssl/SslContextHandlerTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,24 @@ void writeCertificates(
7373
writePemContent(accessCertificatePrivateKeyPath, privateKeyToPemObject(accessPrivateKey, certificatesRule.privateKeyPassword()));
7474
}
7575

76+
@Test
77+
public void skipInvalidCaCertificateValidation() throws Exception {
78+
final var caCertificate = certificatesRule.caCertificateHolder();
79+
80+
final var invalidCertKeys = certificatesRule.generateKeyPair();
81+
var invalidCaCertificate = certificatesRule.generateCaCertificate(
82+
invalidCertKeys,
83+
"CN=not_default_subject,OU=client,O=client,L=test,C=de",
84+
caCertificate.getNotAfter().toInstant().minus(20, ChronoUnit.DAYS),
85+
caCertificate.getNotAfter().toInstant().minus(10, ChronoUnit.DAYS)
86+
);
87+
88+
writePemContent(caCertificatePath, caCertificate, invalidCaCertificate);
89+
90+
final var sslContextHandler = sslContextHandler();
91+
sslContextHandler.sslContext();
92+
}
93+
7694
@Test
7795
public void doesNothingIfCertificatesAreSame() throws Exception {
7896
final var sslContextHandler = sslContextHandler();

0 commit comments

Comments
 (0)