2012-02-26 31 views
15

Tôi đang cố gắng sử dụng openssl để nhận chứng chỉ và dường như vẫn bị treo. Tôi đã thực hiện rất nhiều nghiên cứu nhưng không phải tất cả các tùy chọn có sẵn đều hoạt động trên Windows.openssl bị treo và không thoát khỏi

openssl s_client -showcerts -connect google.com:443 > cert.txt 

Tôi đã thử này:

openssl s_client -connect xyz:443 <quit.txt> cert.txt 

đâu quit.txt chứa "bỏ \ n" từ http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-script

Đó không làm việc. Tôi cũng nhìn Openssl s_clinet -connect scripting. Force quit help

Tôi cũng đã cố gắng -prexit

Tôi cũng đã nhìn vào này là tốt và không thể có được nó làm việc: https://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

tôi đang làm rất tốt! Tôi quản lý để làm một cái gì đó mà tôi nghĩ rằng sẽ là không thể và một điều đơn giản như lỗi này quản lý để ngăn chặn tôi trong thời gian là: (

+1

Chỉnh sửa chính tả cơ bản và ngữ pháp, cố gắng để làm cho nó trông giống như bạn đặt một số nỗ lực vào đặt câu hỏi. Di chuyển phiên bản mới sang ServerFault, nơi bạn có nhiều khả năng nhận được câu trả lời. –

+0

Kiểm tra http: // stackoverflow.com/questions/16823068/gnuwin32-openssl-s-client-conn-to-websphere-mq-server-không-đóng-tại-eof-hangs - SendKeys ("\ n") trong WScript có thể làm cho OpenSSL thoát khỏi nơi EOF không thể. – clacke

Trả lời

16

Dường như một số phân phối OpenSSL cho Windows đang mong đợi một phím bổ sung, độc lập Quit.txt được đưa chính xác vào đường dẫn của STDIN của openssl (máy chủ nhận lệnh QUIT), nhưng không có gì xảy ra cho đến khi bạn nhấn bất kỳ phím nào. [IMG] khoảng 100 MB dung lượng đĩa, nhưng bạn có thể thử chỉ trích xuất openssl.exe và các thư viện bắt buộc.

Phương pháp này hoạt động:

echo QUIT | c:\cygwin\bin\openssl.exe s_client -showcerts -connect google.com:443 > cert.txt 
+1

cảm ơn bạn vì MBu đó. nó làm việc này là danh sách các tập tin tôi cần thiết để sao chép cygcrypto-0.9.8.dll cyggcc_s-1.dll cygssl-0.9.8.dll cygwin1.dll cygz.dll find-serial.bat libeay32.dll openssl.exe ssleay32.dll – Adiboy

+1

Không chỉ trên Windows mà còn trên Linux thì tiếng vang QUIT được đưa vào lệnh giải quyết vấn đề đầu ra bị trì hoãn. –

1

Vì lý do tôi không completeley hiểu, lặp lại QUIT hoặc bỏ \ n vào đầu vào đã không làm việc trong trường hợp của tôi. Tôi đang sử dụng MINGW64 với OpenSSL 1.0.2d trên Windows 8.1 và tôi đang sử dụng openssl để nhận chứng chỉ từ các máy chủ bên trong tập lệnh bash. Tuy nhiên, chỉ cần chạy lệnh openssl ở chế độ nền và chờ đợi một chút làm việc cho tôi:

#!/bin/bash 

openssl s_client -connect my.server.com:443 -showcerts > output.txt 2>/dev/null & 
sleep 2 
6

Nếu chạy dưới mingw64 trên cửa sổ bạn có thể sử dụng chương trình winpty để quấn một cách chính xác các thiết bị đầu cuối

Ví dụ tạo alias dưới bash alias openssl = 'winpty openssl.exe'

Sau đó openssl s_client -connect blah

nên việc như mong đợi

+7

Hoặc chỉ cần gõ winpty trước khi openssl. Đó là những gì làm việc cho tôi. Cảm ơn. – smoore4

4

Trên cửa sổ, chỉ cần gõ winpty trước khi lệnh openssl của bạn sẽ thực hiện thủ thuật. Vì vậy, ví dụ, bạn có thể tạo ra một giấy chứng nhận như sau:

winpty openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX