Support de TLSv1.2 dans recuperer_url() #4157

Closed
opened 5 years ago by cerdic · 3 comments
cerdic commented 5 years ago
Owner

Certains serveurs débranchent TLSv1.0 qui n'est plus assez sécurisé et demandent que le https utilise TLSv1.2
On y arrive avec curl() mais pas avec recuperer_url() en l'état, support à prendre en charge
cf https://zone.spip.org/trac/spip-zone/changeset/110983/spip-zone

Certains serveurs débranchent TLSv1.0 qui n'est plus assez sécurisé et demandent que le https utilise TLSv1.2 On y arrive avec curl() mais pas avec recuperer_url() en l'état, support à prendre en charge cf https://zone.spip.org/trac/spip-zone/changeset/110983/spip-zone
Poster
Owner

AH AH AH qu'est-ce qu'on rigole
http://grokbase.com/t/php/php-bugs/1541c7f5jy/php-bug-bug-69345-new-tls-wrapper-disables-tls-1-1
avec tls:// seul TLS v1.0 est utilisé, les versions supérieures ne le sont pas

Il faudrait revenir à ssl:// pour avoir une negociation complète des protocoles possibles…
(totalement contre-intuitif et contre-productif mais imposé pour éviter des ruptures de compat)
(à tester donc)

AH AH AH qu'est-ce qu'on rigole http://grokbase.com/t/php/php-bugs/1541c7f5jy/php-bug-bug-69345-new-tls-wrapper-disables-tls-1-1 avec tls:// seul TLS v1.0 est utilisé, les versions supérieures ne le sont pas Il faudrait revenir à ssl:// pour avoir une negociation complète des protocoles possibles… (totalement contre-intuitif et contre-productif mais imposé pour éviter des ruptures de compat) (à tester donc)
Poster
Owner

Confirmé donc. Le patch suivant rétablit les connexions en TLSv1.1 et TLSv1.2 avec une negociation complete du bon protocole crypto :

 
# svn diff
Index: distant.php
===================================================================
--- distant.php	(révision 23960)
+++ distant.php	(copie de travail)
`` -1175,8 +1175,8 ``
 		$scheme = 'http';
 		$noproxy = '';
 	} elseif ($t['scheme'] == 'https') {
-		$scheme = 'tls';
-		$noproxy = 'tls://';
+		$scheme = 'ssl';
+		$noproxy = 'ssl://';
 		if (!isset($t['port']) || !($port = $t['port'])) {
 			$t['port'] = 443;
 		}
`` -1275,13 +1275,13 ``

 	$connect = "";
 	if ($http_proxy) {
-		if (defined('_PROXY_HTTPS_VIA_CONNECT') and $scheme == "tls") {
+		if (defined('_PROXY_HTTPS_VIA_CONNECT') and $scheme == "ssl") {
 			$path_host = (!$user ? '' : "$user`") . $host . (($port != 80) ? ":$port" : "");
 			$connect = "CONNECT " . $path_host . " $vers\r\n"
 				. "Host: $path_host\r\n"
 				. "Proxy-Connection: Keep-Alive\r\n";
 		} else {
-			$path = (($scheme == 'tls') ? 'https://' : "$scheme://")
+			$path = (($scheme == 'ssl') ? 'https://' : "$scheme://")
 				. (!$user ? '' : "$user`")
 				. "$host" . (($port != 80) ? ":$port" : "") . $path;
 		}
Confirmé donc. Le patch suivant rétablit les connexions en TLSv1.1 et TLSv1.2 avec une negociation complete du bon protocole crypto : <pre> # svn diff Index: distant.php =================================================================== --- distant.php (révision 23960) +++ distant.php (copie de travail) `` -1175,8 +1175,8 `` $scheme = 'http'; $noproxy = ''; } elseif ($t['scheme'] == 'https') { - $scheme = 'tls'; - $noproxy = 'tls://'; + $scheme = 'ssl'; + $noproxy = 'ssl://'; if (!isset($t['port']) || !($port = $t['port'])) { $t['port'] = 443; } `` -1275,13 +1275,13 `` $connect = ""; if ($http_proxy) { - if (defined('_PROXY_HTTPS_VIA_CONNECT') and $scheme == "tls") { + if (defined('_PROXY_HTTPS_VIA_CONNECT') and $scheme == "ssl") { $path_host = (!$user ? '' : "$user`") . $host . (($port != 80) ? ":$port" : ""); $connect = "CONNECT " . $path_host . " $vers\r\n" . "Host: $path_host\r\n" . "Proxy-Connection: Keep-Alive\r\n"; } else { - $path = (($scheme == 'tls') ? 'https://' : "$scheme://") + $path = (($scheme == 'ssl') ? 'https://' : "$scheme://") . (!$user ? '' : "$user`") . "$host" . (($port != 80) ? ":$port" : "") . $path; } </pre>
Poster
Owner

Statut changé à Fermé

**Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.