@@ -17,11 +17,27 @@ TLS/SSL
1717   :depth: 2
1818   :class: singlecol
1919
20+ Overview
21+ --------
22+ 
23+ In this guide, you can learn how to use the **TLS protocol** to secure your
24+ connection to a MongoDB deployment. TLS is a cryptographic protocol that
25+ secures communication between your application and MongoDB. To configure
26+ your connection to use TLS, enable the TLS option and provide your
27+ certificates for validation when creating a client.
28+ 
2029By default, the driver supports TLS/SSL connections to MongoDB
2130servers using the underlying support for TLS/SSL provided by the JDK.
22- This can be changed either by utilizing the extensibility of the `Java SE
23- API <https://docs.oracle.com/javase/8/docs/api/>`__, or by using the
24- `Netty API <https://netty.io/4.1/api/>`__.
31+ This can be changed either by using the `Netty API
32+ <https://netty.io/4.1/api/>`__ or the extensibility of the `Java SE
33+ API <https://docs.oracle.com/javase/8/docs/api/>`__.
34+ 
35+ .. tip:: Prefer Netty for Asynchronous Apps
36+ 
37+    We recommend using Netty for asychronous applications because it supports
38+    asynchronous I/O and handles high connection volumes effectively. To
39+    learn about using Netty to configure your TLS settings, see the
40+    :ref:`java-rs-tls-netty-config` section of this guide.
2541
2642MongoClient API
2743---------------
@@ -68,30 +84,10 @@ To specify TLS/SSL in a ``MongoClientSettings`` instance, set the
6884       .build();
6985   MongoClient client = MongoClients.create(settings);
7086
71- Specify Java SE SSLContext in MongoClientSettings
72- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73- 
74- Include the following import statements:
75- 
76- .. code-block:: java
77-    
78-    import javax.net.ssl.SSLContext;
79-    import com.mongodb.MongoClientSettings;
80-    import com.mongodb.MongoClient;
81- 
82- To specify the ``javax.net.ssl.SSLContext`` with
83- ``MongoClientSettings``, set the ``sslContext`` property:
84- 
85- .. code-block:: java
86-    
87-    SSLContext sslContext = ...
88-    MongoClientSettings settings = MongoClientSettings.builder()
89-        .applyToSslSettings(builder -> builder.enabled(true).context(sslContext))
90-        .build();
91-    MongoClient client = new MongoClient(settings);
87+ .. _java-rs-tls-netty-config:
9288
93- Customize  TLS/SSL Configuration through the  Netty SslContext
94- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
89+ Configure  TLS/SSL by Using  Netty SslContext
90+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9591
9692Include the following import statements:
9793
@@ -105,9 +101,9 @@ Include the following import statements:
105101   import io.netty.handler.ssl.SslContextBuilder;
106102   import io.netty.handler.ssl.SslProvider;
107103
108- .. note::
104+ .. note:: Netty Package Version 
109105
110-    The driver tests with Netty version ``io. netty:netty-all:4.1.87.Final ``
106+    The driver tests with Netty package  version ``{+ netty-version+} ``
111107
112108To instruct the driver to use
113109`io.netty.handler.ssl.SslContext <https://netty.io/4.1/api/io/netty/handler/ssl/SslContext.html>`__,
@@ -118,21 +114,46 @@ Use ``MongoClientSettings.Builder.transportSettings()``
118114and ``NettyTransportSettings.Builder.sslContext()`` to build your settings:
119115
120116.. code-block:: java
117+    :emphasize-lines: 7-9
121118
122119   SslContext sslContext = SslContextBuilder.forClient()
123120           .sslProvider(SslProvider.OPENSSL)
124121           .build();
122+    
125123   MongoClientSettings settings = MongoClientSettings.builder()
126124           .applyToSslSettings(builder -> builder.enabled(true))
127125           .transportSettings(TransportSettings.nettyBuilder()
128126                              .sslContext(sslContext)
129127                              .build())
130128           .build();
129+    
131130   MongoClient client = MongoClients.create(settings);
132131
133132For more details about the ``io.netty.handler.ssl.SslProvider``, see the `Netty
134133documentation <https://netty.io/4.1/api/io/netty/handler/ssl/SslProvider.html>`__.
135134
135+ Specify Java SE SSLContext in MongoClientSettings
136+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137+ 
138+ Include the following import statements:
139+ 
140+ .. code-block:: java
141+    
142+    import javax.net.ssl.SSLContext;
143+    import com.mongodb.MongoClientSettings;
144+    import com.mongodb.MongoClient;
145+ 
146+ To specify the ``javax.net.ssl.SSLContext`` with
147+ ``MongoClientSettings``, set the ``sslContext`` property:
148+ 
149+ .. code-block:: java
150+    
151+    SSLContext sslContext = ...
152+    MongoClientSettings settings = MongoClientSettings.builder()
153+        .applyToSslSettings(builder -> builder.enabled(true).context(sslContext))
154+        .build();
155+    MongoClient client = new MongoClient(settings);
156+ 
136157Disable Hostname Verification
137158-----------------------------
138159
0 commit comments