mirror of
				https://github.com/taigrr/nats.docs
				synced 2025-01-18 04:03:23 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			190 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| 
 | |
| <div class="tab-wrap">
 | |
|   	
 | |
| 	
 | |
| 	<input type="radio" id="connect_tls_url_go" name="connect_tls_url" class="tab" checked>
 | |
| 	
 | |
| 	<label for="connect_tls_url_go" class="api-lang" data-language="go">Go</label>
 | |
| 	
 | |
| 	
 | |
| 	<input type="radio" id="connect_tls_url_java" name="connect_tls_url" class="tab">
 | |
| 	
 | |
| 	<label for="connect_tls_url_java" class="api-lang" data-language="java">Java</label>
 | |
| 	
 | |
| 	
 | |
| 	<input type="radio" id="connect_tls_url_js" name="connect_tls_url" class="tab">
 | |
| 	
 | |
| 	<label for="connect_tls_url_js" class="api-lang" data-language="js">JavaScript</label>
 | |
| 	
 | |
| 	
 | |
| 	<input type="radio" id="connect_tls_url_py" name="connect_tls_url" class="tab">
 | |
| 	
 | |
| 	<label for="connect_tls_url_py" class="api-lang" data-language="py">Python</label>
 | |
| 	
 | |
| 	
 | |
| 	<input type="radio" id="connect_tls_url_ruby" name="connect_tls_url" class="tab">
 | |
| 	
 | |
| 	<label for="connect_tls_url_ruby" class="api-lang" data-language="ruby">Ruby</label>
 | |
| 	
 | |
| 	
 | |
| 	<input type="radio" id="connect_tls_url_ts" name="connect_tls_url" class="tab">
 | |
| 	
 | |
| 	<label for="connect_tls_url_ts" class="api-lang" data-language="ts">TypeScript</label>
 | |
| 	
 | |
| 
 | |
|   	
 | |
| 	<div class="tab__content">
 | |
| 	<pre id="connect_tls_url_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_tls_url/main.go#L10-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect("tls://localhost", nats.RootCAs("resources/certs/ca.pem")) // May need this if server is using self-signed certificate
 | |
| if err != nil {
 | |
| 	log.Fatal(err)
 | |
| }
 | |
| defer nc.Close()
 | |
| 
 | |
| // Do something with the connection
 | |
| 
 | |
| </code></pre>
 | |
| 	</div>
 | |
| 	
 | |
| 	<div class="tab__content">
 | |
| 	<pre id="connect_tls_url_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectTLSURL.java#L18-80"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class SSLUtils2 {
 | |
|     public static String KEYSTORE_PATH = "src/main/resources/keystore.jks";
 | |
|     public static String TRUSTSTORE_PATH = "src/main/resources/cacerts";
 | |
|     public static String STORE_PASSWORD = "password";
 | |
|     public static String KEY_PASSWORD = "password";
 | |
|     public static String ALGORITHM = "SunX509";
 | |
| 
 | |
|     public static KeyStore loadKeystore(String path) throws Exception {
 | |
|         KeyStore store = KeyStore.getInstance("JKS");
 | |
|         BufferedInputStream in = new BufferedInputStream(new FileInputStream(path));
 | |
| 
 | |
|         try {
 | |
|             store.load(in, STORE_PASSWORD.toCharArray());
 | |
|         } finally {
 | |
|             if (in != null) {
 | |
|                 in.close();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return store;
 | |
|     }
 | |
| 
 | |
|     public static KeyManager[] createTestKeyManagers() throws Exception {
 | |
|         KeyStore store = loadKeystore(KEYSTORE_PATH);
 | |
|         KeyManagerFactory factory = KeyManagerFactory.getInstance(ALGORITHM);
 | |
|         factory.init(store, KEY_PASSWORD.toCharArray());
 | |
|         return factory.getKeyManagers();
 | |
|     }
 | |
| 
 | |
|     public static TrustManager[] createTestTrustManagers() throws Exception {
 | |
|         KeyStore store = loadKeystore(TRUSTSTORE_PATH);
 | |
|         TrustManagerFactory factory = TrustManagerFactory.getInstance(ALGORITHM);
 | |
|         factory.init(store);
 | |
|         return factory.getTrustManagers();
 | |
|     }
 | |
| 
 | |
|     public static SSLContext createSSLContext() throws Exception {
 | |
|         SSLContext ctx = SSLContext.getInstance(Options.DEFAULT_SSL_PROTOCOL);
 | |
|         ctx.init(createTestKeyManagers(), createTestTrustManagers(), new SecureRandom());
 | |
|         return ctx;
 | |
|     }
 | |
| }
 | |
| 
 | |
| public class ConnectTLSURL {
 | |
|     public static void main(String[] args) {
 | |
| 
 | |
|         try {
 | |
|             SSLContext.setDefault(SSLUtils2.createSSLContext()); // Set the default context
 | |
|             Options options = new Options.Builder().
 | |
|                                 server("tls://localhost:4222"). // Use the TLS protocol
 | |
|                                 build();
 | |
|             Connection nc = Nats.connect(options);
 | |
|             
 | |
|             // Do something with the connection
 | |
| 
 | |
|             nc.close();
 | |
|         } catch (Exception e) {
 | |
|             e.printStackTrace();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| </code></pre>
 | |
| 	</div>
 | |
| 	
 | |
| 	<div class="tab__content">
 | |
| 	<pre id="connect_tls_url_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/tls_samples.js#L26-31"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
 | |
|     url: "tls://demo.nats.io:4443",
 | |
|     tls: true
 | |
| });
 | |
| </code></pre>
 | |
| 	</div>
 | |
| 	
 | |
| 	<div class="tab__content">
 | |
| 	<pre id="connect_tls_url_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_tls_url.py#L1-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">import asyncio
 | |
| import ssl
 | |
| import certifi
 | |
| from nats.aio.client import Client as NATS
 | |
| from nats.aio.errors import ErrTimeout
 | |
| 
 | |
| async def run(loop):
 | |
|     nc = NATS()
 | |
| 
 | |
|     # If using Python 3.7 in OS X and getting SSL errors, run first:
 | |
|     #
 | |
|     # /Applications/Python\ 3.7/Install\ Certificates.command
 | |
|     #
 | |
|     # Setting the tls as the scheme will use same defaults as `ssl.create_default_context()`
 | |
|     #
 | |
|     await nc.connect("tls://demo.nats.io:4443", loop=loop)
 | |
| 
 | |
|     async def message_handler(msg):
 | |
|         subject = msg.subject
 | |
|         reply = msg.reply
 | |
|         data = msg.data.decode()
 | |
|         print("Received a message on '{subject} {reply}': {data}".format(
 | |
|             subject=subject, reply=reply, data=data))
 | |
| 
 | |
|     # Simple publisher and async subscriber via coroutine.
 | |
|     sid = await nc.subscribe("foo", cb=message_handler)
 | |
|     await nc.flush()
 | |
| 
 | |
|     # Stop receiving after 2 messages.
 | |
|     await nc.auto_unsubscribe(sid, 2)
 | |
|     await nc.publish("foo", b'Hello')
 | |
|     await nc.publish("foo", b'World')
 | |
|     await nc.publish("foo", b'!!!!!')
 | |
|     await asyncio.sleep(1, loop=loop)
 | |
|     await nc.close()
 | |
| </code></pre>
 | |
| 	</div>
 | |
| 	
 | |
| 	<div class="tab__content">
 | |
| 	<pre id="connect_tls_url_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_tls_url.rb#L3-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">EM.run do
 | |
| 
 | |
|   # In order to use TLS with the Ruby NATS client, use the :tls option
 | |
|   # when customizing the connection with an empty block.
 | |
|   options = {
 | |
|     :servers => [
 | |
|       'nats://demo.nats.io:4443',
 | |
|     ],
 | |
|     :tls => {}
 | |
|   }
 | |
| 
 | |
|   NATS.connect(options) do |nc|
 | |
|     puts :connected
 | |
|   end
 | |
| end
 | |
| </code></pre>
 | |
| 	</div>
 | |
| 	
 | |
| 	<div class="tab__content">
 | |
| 	<pre id="connect_tls_url_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/tls_samples.ts#L26-33"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
 | |
| let nc = await connect({
 | |
|     url: "tls://demo.nats.io:4443"
 | |
| });
 | |
| 
 | |
| nc.close();
 | |
| </code></pre>
 | |
| 	</div>
 | |
| 	
 | |
| </div>
 |