Проверьте безопасное соединение через прокси, используя LWP :: UserAgent и HTTP :: Request - PullRequest
1 голос
/ 24 марта 2020

Лет a go Я пишу некоторый код Perl, используя LWP::UserAgent и HTTP::Request. Этот код работает нормально, и одна его часть проверяет защищенное соединение, проверяя заголовок ответа для Client-SSL-Cipher, Client-SSL-Cert-Subject и Client-SSL-Cert-Issuer (кроме https: URL).

Однако когда программа использует прокси (через $user_agent->env_proxy()), ответ не включает эти Client-SSL заголовки. (Заголовки via указывают, что используется прокси (squid/2.7.STABLE5).)

Среда прокси перечисляет https_proxy, используя URL http://some_host:3128/.

Как я могу получить эти SSL-детали при использовании прокси? Используются версии для SLES12 SP4, поэтому ни очень старые, ни самые последние (perl 5.18.2).

(частичный) пример заголовка без прокси

   '_headers' => HTTP::Headers=HASH(0x55bfc8d76470)
      '::std_case' => HASH(0x55bfc90a0980)
         'client-date' => 'Client-Date'
         'client-peer' => 'Client-Peer'
         'client-response-num' => 'Client-Response-Num'
         'client-ssl-cert-issuer' => 'Client-SSL-Cert-Issuer'
         'client-ssl-cert-subject' => 'Client-SSL-Cert-Subject'
         'client-ssl-cipher' => 'Client-SSL-Cipher'
         'client-ssl-socket-class' => 'Client-SSL-Socket-Class'
         'strict-transport-security' => 'Strict-Transport-Security'
         'x-content-type-options' => 'X-Content-Type-Options'
         'x-frame-options' => 'X-Frame-Options'
      'accept-ranges' => 'bytes'
      'client-date' => 'Tue, 24 Mar 2020 10:45:23 GMT'
      'client-peer' => '134.76.12.6:443'
      'client-response-num' => 1
      'client-ssl-cert-issuer' => '/C=DE/O=Verein zur Foerderung eines Deutschen Forschungsnetzes e. V./OU=DFN-PKI/CN=DFN-Verein Global Issuing CA'
      'client-ssl-cert-subject' => '/C=DE/ST=NIEDERSACHSEN/L=GOETTINGEN/O=Gesellschaft fuer wissenschaftliche Datenverarbeitung/CN=ftp6.gwdg.de'
      'client-ssl-cipher' => 'ECDHE-RSA-AES256-GCM-SHA384'
      'client-ssl-socket-class' => 'IO::Socket::SSL'
      'connection' => 'close'
...