Skip to content

Instantly share code, notes, and snippets.

@Zapotek
Created November 2, 2011 04:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zapotek/1332896 to your computer and use it in GitHub Desktop.
Save Zapotek/1332896 to your computer and use it in GitHub Desktop.
EventMachine bug: ssl_verify_peer() not called on CA mismatch of cert and key.
require 'eventmachine'
class Handler < EventMachine::Connection
def initialize( opts = {} )
@role = opts[:role]
@ssl_opts = opts[:ssl] || {}
@ssl_opts[:verify_peer] = true
end
def post_init
start_tls( @ssl_opts )
end
def receive_data( data )
log 'Received: ' + data.to_s
end
def send_stuff( msg )
log 'Sending: ' + msg.to_s
send_data( msg )
end
def ssl_verify_peer( cert )
log 'VERIFY'
return true
end
def log( msg )
puts @role.to_s + ': ' + msg
end
end
server_opts = {
:role => :server
}
client_opts = {
:ssl => {
:private_key_file => 'key.pem',
# :private_key_file => 'foo-key.pem',
:cert_chain_file => 'cert.pem',
# :cert_chain_file => 'foo-cert.pem',
},
:role => :client
}
EM.run {
EM.start_server( "127.0.0.1", 9999, Handler, server_opts )
handler = EM.connect( "127.0.0.1", 9999, Handler, client_opts )
handler.send_stuff( 'Hi' )
}
@Zapotek
Copy link
Author

Zapotek commented Nov 2, 2011

PEM files can be downloaded from: http://segfault.gr/em-ssl-bug-pems.tar.bz2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment