# -*- encoding: utf-8 -*- # # Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview # require "rubygems" require "stomp" # # == SSL Use Case 2 - server does *not* authenticate client, client *does* authenticate server # # Subcase 2.A - Message broker configuration does *not* require client authentication # # - Expect connection success # - Expect a verify result of 0 becuase the client did authenticate the # server's certificate. # # Subcase 2.B - Message broker configuration *does* require client authentication # # - Expect connection failure (broker must be sent a valid client certificate) # class ExampleSSL2 # Initialize. def initialize # Change the following to the location of the cert file(s). @cert_loc = "/ad3/gma/sslwork/2013" @host = ENV['STOMP_HOST'] ? ENV['STOMP_HOST'] : "localhost" @port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612 end # Run example. def run puts "Connect host: #{@host}, port: #{@port}" ts_flist = [] # Possibly change the cert file(s) name(s) here. ts_flist << "#{@cert_loc}/TestCA.crt" ssl_opts = Stomp::SSLParams.new(:ts_files => ts_flist.join(","), :fsck => true) # hash = { :hosts => [ {:login => 'guest', :passcode => 'guest', :host => @host, :port => @port, :ssl => ssl_opts}, ], :reliable => false, # YMMV, to test this in a sane manner } # puts "Connect starts, SSL Use Case 2" 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}" c.disconnect end end # e = ExampleSSL2.new e.run