Sử dụng chứng chỉ ứng dụng khách với wget


8

Tôi không thể sử dụng chứng chỉ ứng dụng khách. Tài liệu nói về việc sử dụng cờ --certert.

Việc sử dụng cờ chứng chỉ là rõ ràng, tôi đặt nó để sử dụng phiên bản PEM của chứng chỉ ứng dụng khách.

Nhưng khi kết nối tôi gặp lỗi sau:

HTTP request sent, awaiting response... Read error (error:14094410:SSL routines:
SSL3_READ_BYTES:sslv3 alert handshake failure; error:140940E5:SSL routines:SSL3_
READ_BYTES:ssl handshake failure) in headers.
Giving up.

lỗi bắt tay ssl có nghĩa là khách hàng không cung cấp đúng chứng chỉ ứng dụng khách. Vẫn là chứng chỉ ứng dụng khách tôi sử dụng, hoạt động trong trình duyệt.

Lưu ý: Khi tôi tắt xác thực ứng dụng khách trên máy chủ, wget có thể kết nối. Lưu ý: Việc sử dụng curl được đề xuất, nhưng tôi muốn tránh việc chuyển đổi.


Tôi đã thực hiện một cách giải quyết: Xác định Virtualhost trong Apache mà không cần xác thực chứng chỉ ứng dụng khách, đặt DocRoot thành cùng một thư mục và đặt Cho phép từ địa chỉ localhost.

Câu trả lời:


7

Tôi đã nghiên cứu một tuần về điều này, cuối cùng với sự giúp đỡ tôi nhận được từ trang này.

Lệnh tôi đã sử dụng để kết nối là:

wget --ca-cert=/etc/ssl/certs/winhostname.pem --certificate=/etc/ssl/private/linuxhost.pem \
     --private-key=/etc/ssl/private/linuxhost.key https://winhostname.home.net:8443/winhosturl.asmx

bạn đã làm cho ngày của tôi!
Peter Butkovic

4

Bạn có chắc chắn rằng xác thực chứng chỉ ứng dụng khách SSL đang hoạt động đối với máy chủ của bạn không?

Tôi vừa kiểm tra rằng tôi có thể lấy chứng chỉ của mình (ở định dạng PKCS12), chuyển đổi nó thành tệp chứng chỉ và khóa ở định dạng PEM và sử dụng nó với wget tốt.

Tôi có thể gây ra ba điều kiện lỗi, không có điều kiện nào phù hợp với những gì bạn đang báo cáo:

  1. không cung cấp tệp chính của tôi: 400 Yêu cầu xấu
  2. cung cấp khóa xấu: EVP_DecryptFinal_ex: giải mã xấu từ OpenSSL
  3. cung cấp chứng chỉ hợp lệ mà máy chủ không thích: 403 bị cấm

Tôi đang sử dụng nginx; bạn không đề cập đến những gì bạn đang sử dụng, vì vậy tôi không chắc liệu Apache có trả lại các phản hồi tương tự không.

Tôi sẽ đề nghị lấy chứng chỉ và khóa của bạn, kết hợp nó vào PKCS12 (hoặc chỉ nhập nó dưới dạng PEM nếu trình duyệt của bạn hỗ trợ định dạng) và đảm bảo rằng mọi thứ đều hoạt động ở mặt trước đó.

Nếu bạn đã làm điều đó, có lẽ bạn có thể thử từ một máy khác để đảm bảo rằng nó không có gì lạ với phiên bản OpenSSL bạn đang sử dụng.

Cuối cùng, hãy thử sử dụng OpenSSL trong chế độ s_client:

openssl s_client -cert cert.pem -key req.pem -connect host:port -debug

Và xem nếu mọi thứ hoạt động ở cấp độ đó. Nếu vậy, một cái gì đó rất khó khăn với wget và bạn có thể muốn xây dựng lại hoặc cài đặt lại nó. Nếu không, mức độ đầu ra gỡ lỗi có thể giúp bạn xác định chính xác vấn đề nhiều hơn so với đầu ra gỡ lỗi của wget.


Tôi đã thử tất cả các đề xuất của bạn: 1. Chứng chỉ hoạt động tốt trong FF 3.5 2. Máy chủ: Apache 2.2.11, Openssl 0.9.8i, Máy chủ Windows Server 2003: WGET 1.11.4, OpenSSL 0.9.8k (nhị phân), Win XP SP3 3 . Từ máy khác: cùng kết quả 4. Tôi đã nhận được chứng nhận từ Comodo. Chứng chỉ và chìa khóa là tất cả trong một. Tôi đã thử như sau: openssl s_client -cert cert.pem openssl s_client -cert cert.pem -key key.key (trích xuất từ ​​cert) openssl s_client -cert cert.pem -key copyofcert.pem (Tiếp tục trong bình luận tiếp theo)

Tất cả đều đưa ra cùng một lỗi: <br> lỗi thiết lập khóa riêng <br> 8584: error: 0B080074: x509 chứng chỉ <br> các thói quen: X509_check_private_key: các giá trị khóa <br> Lưu ý rằng đây là một lỗi khác nhau trên mức không khớp :. \ Crypto \ x509 \ x509_cmp.c: 399:

Bạn đang nhầm lẫn giữa certs và chìa khóa của bạn. Cho đến khi bạn làm cho nó hoạt động với openssl s_client, bạn có thể chắc chắn rằng bạn đang truyền sai tệp (nội dung) để wget. Nhìn vào bên trong các tệp và xem chúng có được gắn thẻ không (thường là với một cái gì đó như --- BEGIN PRIVATE KEY --- hoặc --- BEGIN RSA KEY --- hoặc --- BEGIN CHỨNG NHẬN --- ... vv .. .that sẽ cho bạn biết những gì trong các tập tin)
Ram

2

Tôi đã sử dụng thành công wget như thế này:

"C:\program files\GnuWin32\bin\wget" --no-check-certificate --certificate=C:\Users\Alex\xxx.pem --private-key=C:\Users\Alex\xxx.pem --input-file=retain.url --output-document=retain.xml

Lưu ý --private-key option. giữ lại.url có https: //bla.bla.bla

Tuy nhiên, bây giờ nó nhắc tôi với "Nhập cụm từ PEM pass:".

Nếu tôi nhập mật khẩu, nó hoạt động tốt, nhưng có ai biết cách xung quanh dấu nhắc không?


4
Tạo một bản sao của khóa mà không có bất kỳ cụm từ thông qua nào: openssl rsa -in key.pem -out keyout.pem
pehrs

0

Có thể wget đang kết nối với cổng 80? Lỗi đó rất giống với lỗi tôi nhận được khi kiểm tra khi tôi vô tình có HTTP nghe 80 và 443-wget đang cố nói chuyện SSL và không nhận được phản hồi như mong muốn.


Không. URL nằm trong một tập lệnh, vì vậy nó luôn giống nhau. Và khi tôi kiểm tra với máy khách tự động tắt, nhưng https bật, nó hoạt động.

0

Nhận một bản chụp mạng và tải nó trong Wireshark. Điều này sẽ cho bạn một bức tranh rõ ràng hơn về những gì thất bại ở cấp độ SSL / TLS.


0

Đã có vấn đề với SSLv3 trong các phiên bản như 0.9.8.

Hãy thử chuyển -no_ticket để openssl s_client hoặc nếu -ssl2 hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.