[英]SSL Client Authenticated Webservice on ruby SSLv3 read server certificate B: certificate verify failed
[英]Ruby Webrick server not able to verify client certificate
我正在使用 Webrick 運行基於 sinatra 的 Web 應用程序。 我能夠使用我的自簽名服務器證書設置 TLS,並且 webrick 以 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
此問題已通過在服務器選項中提供 cacert 文件作為:SSLCACertificateFile
而不是:SSLClientCA
。
server_options = {
:Host => '0.0.0.0',
:Port => 443,
:SSLEnable => true,
:SSLVerifyClient => OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT | OpenSSL::SSL::VERIFY_PEER,
:SSLVerifyDepth => 4,
:SSLCertificate => OpenSSL::X509::Certificate.new(File.open('/Users/cert.pem').read),
:SSLPrivateKey => OpenSSL::PKey::RSA.new(File.open('/Users/key.pem').read),
:SSLCACertificateFile => '/Users/cai.cer'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.