Come modificare il backend libcurl SSL da gnutls a openssl sul server Ubuntu

Sto ricevendo errori specifici nel mio webserver Tornado durante l'elaborazione delle risposte SSL di Google OpenID. Uno dei suggerimenti che ho ottenuto dalla mailing list di Tornado è quello di provare il backend di OpenSSL invece di gnutls. Ma non sembra essere semplice sul server Ubuntu (11.10).

Sul server Ubuntu, i gnutls sono forniti dal pacchetto libcurl3-gnutls e il supporto openssl curl è fornito dal libcurl4-openssl-dev . (Non so perché il nome successivo sia denominato 4 e dev , ma non ho trovato nessun altro pacchetto openssl + curl nella ricerca apt-cache).

Avevo libcurl3-gnutls installato per impostazione predefinita, ma non libcurl4-openssl-dev . Così ho installato le istanze di Torando successive e riavviate. Ma quello non sembrava funzionare. Ho ancora gli stessi errori di gnutls.

Ho trovato vecchie discussioni sulle liste di mailing curl riguardo ai problemi di supporto di diversi backlinks SSL a libcurl, ma non ho trovato esattamente come si fa oggi. Finora la mia ipotesi è openssl è incorporata in libcurl e gnutls è fornito tramite pacchetto separato (che spiega perché non esiste libcurl3-openssl). Ma come faccio a fare libcurl per raccogliere l'openssl backend e non gnutls? C'è qualche opzione nell'applicazione libcurl / pycurl per farlo?

Ho provato a disinstallare libcurl3-gnutls , ma apt-get viene richiesto che rimuoverà anche python-pycurl insieme ad esso. Quindi non lo farà.

4 Solutions collect form web for “Come modificare il backend libcurl SSL da gnutls a openssl sul server Ubuntu”

I pacchetti -dev sono i pacchetti di sviluppo, contengono le intestazioni di libreria, utilizzate per sviluppare e compilare i programmi che utilizzano la libreria. Di solito non è richiesto dai pacchetti binari applicativi (che sono già stati compilati). L'installazione di libcurl4-openssl-dev non è sufficiente per rendere i pacchetti binari che sono stati costruiti contro libcurl3-gnutls utilizzare invece OpenSSL. Sarebbe utile solo per applicazioni che si ricompilano contro di essa.

Il pacchetto python-pycurl ha una dipendenza diretta da libcurl3-gnutls e libgnutls26 .

A less che non ci siano pacchetti basati su cURL per Ubuntu compilati contro OpenSSL invece che GnuTLS in un repository alternativo, potrebbe essere necessario costruirli purtroppo.

Questo potrebbe essere fatto in linea di principio scaricando la sorgente ( apt-get source python-pycurl , e pacchetti correlati). Dovresti andare nei file di configuration dell'imballaggio Debian e modificare le opzioni (di solito passate allo script di configure che configura anche il Makefile s prima della compilazione) in modo da modificare le opzioni di compilazione, per utilizzare invece OpenSSL. Potrebbe anche essere necessario modificare la descrizione del pacchetto per limitare l'interruzione degli altri pacchetti, forse utilizzando la direttiva " provide: directive" per dire che il tuo pacchetto può sostituire quello compresso da Ubuntu.

Ho visto una soluzione su Debian bug tracker .

Ho pensato che avrei postato una soluzione per le persone a fissare il pacchetto python-pycurl stessi.

 sudo apt-get install build-essential fakeroot dpkg-dev mkdir ~/python-pycurl-openssl cd ~/python-pycurl-openssl sudo apt-get source python-pycurl sudo apt-get build-dep python-pycurl sudo apt-get install libcurl4-openssl-dev dpkg-source -x pycurl_7.18.2-1.dsc cd pycurl-7.18.2 

Nota Pycurl potrebbe essere stato aggiornato in modo che il nome non sia esattamente pycurl_7.18.2-1.dsc Modificare il file debian/control e sostituire tutte le istanze di libcurl4-gnutls-dev con libcurl4-openssl-dev

 dpkg-buildpackage -rfakeroot -b sudo dpkg -i ../python-pycurl_7.18.2-1_i386.deb 

Per testare solo saltare sull'interpnetworking e guardare la versione.

Sarebbe dire:

 shell~# python Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pycurl >>> pycurl.version 'libcurl/7.18.2 GnuTLS/2.4.2 zlib/1.2.3.3 libidn/1.8' 

Ora dirà (se hai fatto tutto bene):

 shell~# python Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pycurl >>> pycurl.version 'libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.8 libssh2/0.18' 

Il motivo per cui modifica il file debian / control funziona è perché libcurl4-gnutls-dev e libcurl4-openssl-dev utilizzano il file /usr/bin/curl-config per build i propri pacchetti. Uno è per gli ambienti di gnutls mentre l'altro è per openssl.

Per quanto lo capisco, il pacchetto libcurl3 dovrebbe offrire supporto OpenSSL.

Rimuovere il module pycurl e reinstallarlo utilizzando pip.

 sudo pip install pycurl 
Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.