diff options
Diffstat (limited to 'sample/soap/ssl/sslserver_require_clientauth.rb')
-rw-r--r-- | sample/soap/ssl/sslserver_require_clientauth.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sample/soap/ssl/sslserver_require_clientauth.rb b/sample/soap/ssl/sslserver_require_clientauth.rb new file mode 100644 index 0000000000..63caf69caf --- /dev/null +++ b/sample/soap/ssl/sslserver_require_clientauth.rb @@ -0,0 +1,50 @@ +require 'soap/rpc/httpserver' +require 'webrick/https' +require 'logger' + +class HelloWorldServer < SOAP::RPC::HTTPServer +private + + def on_init + @default_namespace = 'urn:sslhelloworld' + add_method(self, 'hello_world', 'from') + end + + def hello_world(from) + "Hello World, from #{ from }" + end +end + + +if $0 == __FILE__ + DIR = File.dirname(File.expand_path(__FILE__)) + + def cert(filename) + OpenSSL::X509::Certificate.new(File.open(File.join(DIR, filename)) { |f| + f.read + }) + end + + def key(filename) + OpenSSL::PKey::RSA.new(File.open(File.join(DIR, filename)) { |f| + f.read + }) + end + + $server = HelloWorldServer.new( + :BindAddress => "0.0.0.0", + :Port => 17443, + :AccessLog => [], + :SSLEnable => true, + :SSLCACertificateFile => File.join(DIR, 'files/ca.cert'), + :SSLCertificate => cert('files/server.cert'), + :SSLPrivateKey => key('files/server.key'), + :SSLVerifyClient => + OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT|OpenSSL::SSL::VERIFY_PEER, + :SSLClientCA => cert('files/ca.cert') + ) + trap(:INT) do + $server.shutdown + end + $server.start +end |