Я хотел бы использовать openssl s_client
, чтобы открыть TLS-соединение через прокси (Squid) на исходном сервере с использованием метода запроса CONNECT. Я использую сертификат клиента для подключения к прокси-серверу, как показано ниже:openssl s_client TLS-соединение через прокси с clientAuth
openssl s_client -connect my_proxy:4443 -CAfile /etc/ssl/ca/ca.crt -cert /etc/ssl/cert/client.crt -key /etc/ssl/key/client_key.pem
После запуска выше, информация о соединении печатает нормально, а затем я ввожу CONNECT и GET методы, и это работает отлично:
CONNECT www.google.com:80 HTTP/1.1 Host: www.google.com
HTTP/1.1 200 Соединение установлено
GET /search?q=ip+address HTTP/1.1 Host: www.google.com
HTTP/1.1 200 OK
Однако, я действительно хотел бы быть в состоянии установить соединение TLS (HTTPS), но я не смог заставить его работать:
CONNECT www.google.com:443 HTTP/1.1 Host: www.google.com
HTTP/1.1 200 Соединение установлено
GET /search?q=ip+address HTTP/1.1
закрыт
Что я здесь делаю неправильно? Прежде чем вы скажете, чтобы попробовать OpenSSL 1.1.x с параметром -proxy, я уже пробовал это. Обратите внимание, что сертификат CA, клиентский сертификат и клиентский ключ в приведенной выше команде предназначены для подключения к моему прокси-серверу, а не для целевого сервера (google.com), как показано ниже с OpenSSL 1.1.0-pre3 (тот же вывод, если я попробуйте подключиться к Google: 443).
openssl s_client -connect google.com:80 -proxy my_proxy:4443 -CAfile /etc/ssl/ca/ca.crt -cert /etc/ssl/cert/client.crt -key /etc/ssl/key/client_key.pem
CONNECTED (00000003)
s_client: HTTP CONNECT не удалось
сертификат не равный доступен
Нет сертификата клиента имена CA не отправлено SSL рукопожатия прочитал 0 байт и написано 25 байт Подтверждение: ОК
New (NONE), Cipher не (NONE) Secure Повторных переговоров не поддерживаются сжатие: NONE Расширение: NONE Нет ALPN договорных
я смог загрузить мой клиент CERT, ключ клиента, и CA cert в Firefox (все в комплекте в файле pkcs12), и я могу подключиться к различным сайтам через TLS. Это должно быть возможно в командной строке.
Stack Overflow - это сайт для вопросов программирования и разработки. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Также см. [Где я пишу вопросы о Dev Ops?] (Http://meta.stackexchange.com/q/134306). – jww