mirror of
https://github.com/taigrr/nats.docs
synced 2025-01-18 04:03:23 -08:00
Cleaned up how examples are handled to reduce thrashing in git
Examples are no longer in the final html as solo files, only in their container file
This commit is contained in:
213
_examples/connect_tls.html
Normal file
213
_examples/connect_tls.html
Normal file
@@ -0,0 +1,213 @@
|
||||
|
||||
<div class="tab-wrap">
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_go" name="connect_tls" class="tab" checked>
|
||||
|
||||
<label for="connect_tls_go" class="api-lang" data-language="go">Go</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_java" name="connect_tls" class="tab">
|
||||
|
||||
<label for="connect_tls_java" class="api-lang" data-language="java">Java</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_js" name="connect_tls" class="tab">
|
||||
|
||||
<label for="connect_tls_js" class="api-lang" data-language="js">JavaScript</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_py" name="connect_tls" class="tab">
|
||||
|
||||
<label for="connect_tls_py" class="api-lang" data-language="py">Python</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_ruby" name="connect_tls" class="tab">
|
||||
|
||||
<label for="connect_tls_ruby" class="api-lang" data-language="ruby">Ruby</label>
|
||||
|
||||
|
||||
<input type="radio" id="connect_tls_ts" name="connect_tls" class="tab">
|
||||
|
||||
<label for="connect_tls_ts" class="api-lang" data-language="ts">TypeScript</label>
|
||||
|
||||
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_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/main.go#L10-21"><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("localhost",
|
||||
nats.ClientCert("resources/certs/cert.pem", "resources/certs/key.pem"),
|
||||
nats.RootCAs("resources/certs/ca.pem"))
|
||||
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_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/ConnectTLS.java#L18-81"><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 SSLUtils {
|
||||
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 ConnectTLS {
|
||||
public static void main(String[] args) {
|
||||
|
||||
try {
|
||||
SSLContext ctx = SSLUtils.createSSLContext();
|
||||
Options options = new Options.Builder().
|
||||
server("nats://localhost:4222").
|
||||
sslContext(ctx). // Set the SSL context
|
||||
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_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#L44-56"><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 caCert = fs.readFileSync(caCertPath);
|
||||
let clientCert = fs.readFileSync(clientCertPath);
|
||||
let clientKey = fs.readFileSync(clientKeyPath);
|
||||
let nc = NATS.connect({
|
||||
url: url,
|
||||
tls: {
|
||||
ca: [caCert],
|
||||
key: [clientKey],
|
||||
cert: [clientCert]
|
||||
}
|
||||
});
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_tls.py#L7-20"><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">nc = NATS()
|
||||
|
||||
ssl_ctx = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH)
|
||||
ssl_ctx.load_verify_locations('ca.pem')
|
||||
ssl_ctx.load_cert_chain(certfile='client-cert.pem',
|
||||
keyfile='client-key.pem')
|
||||
await nc.connect(io_loop=loop, tls=ssl_ctx)
|
||||
|
||||
await nc.connect(servers=["nats://demo.nats.io:4222"], tls=ssl_ctx)
|
||||
|
||||
# Do something with the connection.
|
||||
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_tls.rb#L3-51"><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
|
||||
|
||||
options = {
|
||||
:servers => [
|
||||
'nats://localhost:4222',
|
||||
],
|
||||
:tls => {
|
||||
:private_key_file => './spec/configs/certs/key.pem',
|
||||
:cert_chain_file => './spec/configs/certs/server.pem'
|
||||
}
|
||||
}
|
||||
|
||||
NATS.connect(options) do |nc|
|
||||
puts "#{Time.now.to_f} - Connected to NATS at #{nc.connected_server}"
|
||||
|
||||
nc.subscribe("hello") do |msg|
|
||||
puts "#{Time.now.to_f} - Received: #{msg}"
|
||||
end
|
||||
|
||||
nc.flush do
|
||||
nc.publish("hello", "world")
|
||||
end
|
||||
|
||||
EM.add_periodic_timer(0.1) do
|
||||
next unless nc.connected?
|
||||
nc.publish("hello", "hello")
|
||||
end
|
||||
|
||||
# Set default callbacks
|
||||
nc.on_error do |e|
|
||||
puts "#{Time.now.to_f } - Error: #{e}"
|
||||
end
|
||||
|
||||
nc.on_disconnect do |reason|
|
||||
puts "#{Time.now.to_f} - Disconnected: #{reason}"
|
||||
end
|
||||
|
||||
nc.on_reconnect do |nc|
|
||||
puts "#{Time.now.to_f} - Reconnected to NATS server at #{nc.connected_server}"
|
||||
end
|
||||
|
||||
nc.on_close do
|
||||
puts "#{Time.now.to_f} - Connection to NATS closed"
|
||||
EM.stop
|
||||
end
|
||||
end
|
||||
end
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div class="tab__content">
|
||||
<pre id="connect_tls_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#L40-52"><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 caCert = readFileSync(caCertPath);
|
||||
let clientCert = readFileSync(clientCertPath);
|
||||
let clientKey = readFileSync(clientKeyPath);
|
||||
let nc = await connect({
|
||||
url: url,
|
||||
tls: {
|
||||
ca: [caCert],
|
||||
key: [clientKey],
|
||||
cert: [clientCert]
|
||||
}
|
||||
});
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user