【发布时间】:2015-07-14 01:19:53
【问题描述】:
更新:我的许多问题都与不知道如何发布客户端证书有关。我已经放置了那些details over here。
我正在使用 Ruby 连接到仅支持 TLS_RSA_WITH_AES_256_CBC_SHA256 密码的 SSL 服务器。我还需要提供客户证书。
当我查看来自 OpenSSL::Cipher.ciphers 的可用密码时,TLS_RSA_WITH_AES_256_CBC_SHA256 并未列为选项。
如何将此密码添加到可用密码中?
谢谢!
这是我的代码:
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.cert = OpenSSL::X509::Certificate.new(File.read("my.cer"))
http.ca_file = 'their_root.cer'
http.ciphers = ['AES256-SHA256']
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.ssl_version = :SSLv23
request = Net::HTTP::Post.new(uri.request_uri)
request.body = my_xml
response = http.request(request)
我收到的错误:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read finished A: sslv3 alert handshake failure
检查数据包显示服务器终止并显示消息“握手失败 (40)”,这似乎是密码问题。
我不是从命令行连接,但这里是 openssl s_client 的结果:
$ openssl s_client -connect dir-staging.surescripts.net:443 -tls1 -servername dir-staging.surescripts.net
CONNECTED(00000003)
depth=2 /C=US/O=Surescripts LLC./OU=Surescripts Certification Authorities/CN=Surescripts Root Certification Authority
verify error:num=19:self signed certificate in certificate chain
verify return:0
14089:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/s3_pkt.c:1145:SSL alert number 40
14089:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.20.2/src/ssl/s3_pkt.c:566:
【问题讨论】:
-
我正在尝试连接到现有的私人服务,但似乎无法配置 SSL 以使其工作。
-
编辑了我的答案,但现在真的是 2 个问题。
-
@steenslag 我不知道问题是密码还是其他问题。 jww 指出了 openssl 命令行的一些问题,但还没有高兴。
-
@Tom - 与
http.cert = OpenSSL::X509::Certificate.new(File.read("my.cer"))相关...您在哪里设置与证书一起使用的密钥?我认为你需要一个http.key在某个地方...... -
@jww 那是从哪里来的?我用来创建 CSR 的密钥文件?