8000 A fix for some TLS issues in the MongoDB IO · apache/beam@a7dd23d · GitHub
[go: up one dir, main page]

Skip to content

Commit a7dd23d

Browse files
coheigeaiemejia
authored andcommitted
A fix for some TLS issues in the MongoDB IO
1 parent a29ba1c commit a7dd23d

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

sdks/java/io/mongodb/src/main/java/org/apache/beam/sdk/io/mongodb/MongoDbIO.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import java.util.List;
4040
import java.util.stream.Collectors;
4141
import javax.annotation.Nullable;
42+
import javax.net.ssl.SSLContext;
4243
import org.apache.beam.sdk.annotations.Experimental;
4344
import org.apache.beam.sdk.coders.Coder;
4445
import org.apache.beam.sdk.coders.SerializableCoder;
@@ -340,14 +341,19 @@ public void populateDisplayData(DisplayData.Builder builder) {
340341
}
341342

342343
private static MongoClientOptions.Builder getOptions(
343-
int maxConnectionIdleTime, boolean sslEnabled, boolean sslInvalidHostNameAllowed) {
344+
int maxConnectionIdleTime,
345+
boolean sslEnabled,
346+
boolean sslInvalidHostNameAllowed,
347+
boolean ignoreSSLCertificate) {
344348
MongoClientOptions.Builder optionsBuilder = new MongoClientOptions.Builder();
345349
optionsBuilder.maxConnectionIdleTime(maxConnectionIdleTime);
346350
if (sslEnabled) {
347-
optionsBuilder
348-
.sslEnabled(sslEnabled)
349-
.sslInvalidHostNameAllowed(sslInvalidHostNameAllowed)
350-
.sslContext(SSLUtils.ignoreSSLCertificate());
351+
optionsBuilder.sslEnabled(sslEnabled).sslInvalidHostNameAllowed(sslInvalidHostNameAllowed);
352+
if (ignoreSSLCertificate) {
353+
SSLContext sslContext = SSLUtils.ignoreSSLCertificate();
354+
optionsBuilder.sslContext(sslContext);
355+
optionsBuilder.socketFactory(sslContext.getSocketFactory());
356+
}
351357
}
352358
return optionsBuilder;
353359
}
@@ -385,7 +391,8 @@ public long getEstimatedSizeBytes(PipelineOptions pipelineOptions) {
385391
getOptions(
386392
spec.maxConnectionIdleTime(),
387393
spec.sslEnabled(),
388-
spec.sslInvalidHostNameAllowed())))) {
394+
spec.sslInvalidHostNameAllowed(),
395+
spec.ignoreSSLCertificate())))) {
389396
return getEstimatedSizeBytes(mongoClient, spec.database(), spec.collection());
390397
}
391398
}
@@ -413,7 +420,8 @@ public List<BoundedSource<Document>> split(
413420
getOptions(
414421
spec.maxConnectionIdleTime(),
415422
spec.sslEnabled(),
416-
spec.sslInvalidHostNameAllowed())))) {
423+
spec.sslInvalidHostNameAllowed(),
424+
spec.ignoreSSLCertificate())))) {
417425
MongoDatabase mongoDatabase = mongoClient.getDatabase(spec.database());
418426

419427
List<Document> splitKeys;
@@ -704,7 +712,8 @@ private MongoClient createClient(Read spec) {
704712
getOptions(
705713
spec.maxConnectionIdleTime(),
706714
spec.sslEnabled(),
707-
spec.sslInvalidHostNameAllowed())));
715+
spec.sslInvalidHostNameAllowed(),
716+
spec.ignoreSSLCertificate())));
708717
}
709718
}
710719

@@ -886,7 +895,8 @@ public void createMongoClient() {
886895
getOptions(
887896
spec.maxConnectionIdleTime(),
888897
spec.sslEnabled(),
889-
spec.sslInvalidHostNameAllowed())));
898+
spec.sslInvalidHostNameAllowed(),
899+
spec.ignoreSSLCertificate())));
890900
}
891901

892902
@StartBundle

sdks/java/io/mongodb/src/main/java/org/apache/beam/sdk/io/mongodb/SSLUtils.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import java.security.KeyStore;
2121
import java.security.cert.X509Certificate;
22-
import javax.net.ssl.HttpsURLConnection;
2322
import javax.net.ssl.KeyManagerFactory;
2423
import javax.net.ssl.SSLContext;
2524
import javax.net.ssl.TrustManager;
@@ -55,7 +54,6 @@ static SSLContext ignoreSSLCertificate() {
5554
// Install the all-trusting trust manager
5655
SSLContext sc = SSLContext.getInstance("TLS");
5756
sc.init(null, trustAllCerts, new java.security.SecureRandom());
58-
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
5957

6058
KeyStore ks = KeyStore.getInstance("JKS");
6159
ks.load(

0 commit comments

Comments
 (0)
0