Tôi có hỗ trợ dịch vụ web javaxác thực ssl 2 chiều. Vì vậy, tôi có kho khóa khách hàng (khách hàng.p12), chứng chỉ máy chủ nằm trong kho lưu trữ đáng tin cậy và chứng chỉ ứng dụng khách trong kho khóa máy chủ nằm trong kho lưu trữ đáng tin cậy.
Tôi có thể dễ dàng gọi dịch vụ của mình bằng trình duyệt hoặc người đưa thư (chỉ cần nhập vào quản lý chứng chỉ trình duyệt khách hàng.p12), nhưng tôi gặp sự cố khi sử dụng ứng dụng khách Ruby.
Phiên bản hiện tại của tôi:
yêu cầu 'rest_client'
p12 = OpenSSL::PKCS12.new(File.read('client.p12'), 'password')
client = RestClient::Resource.new('https://localhost:8080/service',
:ssl_client_cert => p12.certificate,
:ssl_cert_key => p12.key,
:verify_ssl => OpenSSL::SSL::VERIFY_NONE,
:ssl_version => 'TLSv1_2',
:ssl_ciphers => 'ECDHE-RSA-AES128-GCM-SHA256').get
thất bại:
connect_nonblock': SSL_connect SYSCALL trả về=5 errno=0 state=trạng thái không xác định (OpenSSL::SSL::SSLError)
Có gì sai với mã khách hàng của tôi?
đầu ra openssl s_client:
$ openssl s_client -kết nối localhost:8080
....
Phiên SSL:
Giao thức: TLSv1.2
Mật mã: ECDHE-RSA-AES128-GCM-SHA256
...
Tùy chọn chuyển chìa khóa không phải là:ssl_cert_key
, Nhưng:ssl_client_key
. Nó có tạo nên sự khác biệt nào không?
Tôi là một lập trình viên xuất sắc, rất giỏi!