Я запускаю веб-приложение на основе sinatra, используя Webrick.Я смог настроить TLS, используя свои самозаверяющие серверные сертификаты, и вебрик запускается в режиме TLS, но я не могу установить соединение с сервером с помощью клиентского сертификата (проверка подлинности на основе сертификатов).
В журналах сервера указано « ОШИБКА OpenSSL :: SSL :: SSLError: возвращено SSL_accept = 1 errno = 0 состояние = ошибка: сбой проверки сертификата "
Но те же сертификаты(и сервер, и клиент) работают с сервером Apache.
def self.run!
server_options = {
:Host => '0.0.0.0',
:Port => 33443,
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT | OpenSSL::SSL::VERIFY_PEER,
:SSLVerifyDepth => 3,
:SSLCertificate => OpenSSL::X509::Certificate.new(File.open('/Users/cert.pem').read),
:SSLPrivateKey => OpenSSL::PKey::RSA.new(File.open('/Users/key.pem').read),
:SSLClientCA => OpenSSL::X509::Certificate.new(File.open('/Users/cai.cer').read)
}
Rack::Handler::WEBrick.run self, server_options do |server|
[:INT, :TERM].each { |sig| trap(sig) { server.stop } }
server.threaded = settings.threaded if server.respond_to? :threaded=
set :running, true
end
end