1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
# -*- encoding: utf-8 -*-
#
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
#
if Kernel.respond_to?(:require_relative)
require_relative("../ssl_common")
require_relative("../../stomp_common")
else
$LOAD_PATH << File.dirname(__FILE__)
require "../ssl_common"
require("../../stomp_common")
end
include SSLCommon
include Stomp1xCommon
#
# == SSL Use Case 4 - User Supplied Ciphers
#
# If you need your own ciphers list, this is how.
# Stomp's default list will work in many cases. If you need to use this, you
# will know it because SSL connect will fail. In that case, determining
# _what_ should be in the list is your responsibility.
#
class ExampleSSL4C
# Initialize.
def initialize # Change the following as needed.
@host = host()
# It is very likely that you will have to specify your specific port number.
# 61612 is currently my AMQ local port number for ssl client auth is required.
@port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
end
# Run example.
def run
puts "SSLUC4C Connect host: #{@host}, port: #{@port}"
#
# SSL Use Case 4
#
# Possibly change the cert file(s) name(s) here.
ssl_opts = Stomp::SSLParams.new(
:key_file => "#{cli_loc()}/#{cli_key()}", # the client's private key, private data
:cert_file => "#{cli_loc()}/#{cli_cert()}", # the client's signed certificate
:ts_files => "#{ca_loc()}/#{ca_cert()}", # The CA's signed sertificate
:ciphers => ciphers_list(), # The cipher list
:fsck => true # Check that files exist first
)
puts "SSLOPTS: #{ssl_opts.inspect}"
#
hash = { :hosts => [
{:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
],
:reliable => false, # YMMV, to test this in a sane manner
}
#
puts "Connect starts, SSL Use Case 4"
c = Stomp::Connection.new(hash)
puts "Connect completed"
puts "SSL Verify Result: #{ssl_opts.verify_result}"
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
c.disconnect()
end
end
#
e = ExampleSSL4C.new()
e.run
|