Communauté Eggdrop

Version complète : sslv3 alert handshake failure sur un flux rss avec rss-synd.tcl
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour.

J'utilise Eggdrop RSS Syndication pour afficher des flux RSS.
La version du package TLS installée est la 1.7.18 sur Eggdrop 1.8.4 et la 1.6.7.1 sur Eggdrop 1.6.21
La version du package HTTP installée est la 2.8.12 sur Eggdrop 1.8.4 et la 2.7.13 sur Eggdrop 1.6.21


Depuis le 14 juillet, le flux https://korben.info/feed produit l'erreur suivante :

sur Eggdrop 1.8.4 :
RSS HTTP Error: https://korben.info/feed (State: {error flushing "sock6077beb70": software caused connection abort} {error flushing "sock6077beb70": software caused connection abort while executing "flush $sock"} {POSIX ECONNABORTED {software caused connection abort}})
Tcl error: SSL channel "sock6077beb70": error: sslv3 alert handshake failure

sur Eggdrop 1.6.21 :
RSS HTTP Error: https://korben.info/feed (State: {error flushing "sock13": too many users} {error flushing "sock13": too many users
Tcl error: SSL channel "sock13": error: sslv3 alert handshake failure

Je récupère d'autres flux RSS en https et ils n'ont aucun souci.


Je ne détaille pas les nombreux tests et recherches que j'ai pu faire pendant les (trop) nombreuses heures que j'y ai passé, en voici la synthèse.

https://www.ssllabs.com/ssltest/analyze....04.26.2.94 montre que les protocoles suivants sont actifs / inactifs :
TLS 1.3 Yes
TLS 1.2 Yes
TLS 1.1 No
TLS 1.0 No
SSL 3 No
SSL 2 No
For TLS 1.3 tests, we only support RFC 8446.

La configuration du socket https utilisée jusqu'à ce jour était la suivante :
tcl
::http::register https 443 [list ::tls::socket -tls1 1]



J'ai donc testé avec -tls1.2 1 puis -tls1.2 1 -tls1.3 1

D'autres options que j'ai testées sans trop y croire mais histoire de dire que j'ai tout essayé :
-ssl2 0 -ssl3 0 -myaddr $::vhost4 (ou $::my-ip sur Egg 1.6.21) -request 1 -require 0

Des idées ?
As tu testé :
tcl
http::register https 443 [list ::tls::socket -servername korben.info]



Pour info:
tcl
package require http
package require tls
bind pub - "!poc" poc
 
variable useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
 
proc poc {user host handle chan args} {
       ::http::register https 443 [list tls::socket -servername korben.info]
       ::http::config -useragent $::useragent
       catch { set token [::http::geturl https://korben.info/feed]}
       if {[info exists token] && [::http::status $token]=="ok"} {
               putserv "privmsg $chan :ok"
       } else {
               putserv "privmsg $chan :**KO**"
       }
}



Code :
08:50:25 <@CrazyCat> !poc
08:50:29 <@Artus> ok

Nota: Eggdrop 1.8.4 sous linux avec http 2.8.9 1.0 et tls 1.6.7
Je vais tester ça et je te tiens au courant, mais ça oblige à mettre une ligne spécifique à un seul flux RSS dans le code de rss-synd.tcl alors la solution n'est pas   top.



Edit : Je confirme que ça fonctionne mais comme je le disais, j'ai dû prévoir un cas spécifique pour ce RSS dans le code.
Pourquoi ce paramètre est-il requis pour le site korben.info et pas pour les autres ?
Il est requis pour de plus en plus de sites, c'est d'ailleurs parce que j'ai eu ce souci que j'ai trouvé l'astuce.
Si j'ai bien tout compris, c'est utile lorsque le même serveur présente plusieurs certificats (serveurs mutualisés ?, différents sous-domaines sur le même espace ?)

Le plus simple et la plus perenne serait peut-être d'ajouter une variable domain dans le tableau de configuration et dans les rss() qui le nécessite pour adapter le ::http::register. Sinon, une variable ssl-options qui comprendrait toute la chaine d'options à ajouter.
Merci pour le coup de main et l'explication.