Ho una directory contenente un pacchetto di certificati, uno script Python e uno script di nodo. Entrambi gli script eseguono una richiesta GET sullo stesso URL e vengono forniti con lo stesso pacchetto di certificati. Lo script Python effettua la richiesta come previsto invece lo script del nodo getta questo errore:Impossibile verificare il primo certificato
{ [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }
Lo Script Python (Python 3.4.3 e la libreria requests):
import requests
print(requests.get(url, verify='/tmp/cert/cacert.pem'))
Lo script del nodo (Node 4.2.6 e la libreria request):
var fs = require('fs');
var request = require('request');
request.get({
url: url,
agentOptions: {
ca: fs.readFileSync('/tmp/cert/cacert.pem')
}
}, function (error, response, body) {
if (error) {
console.log(error);
} else {
console.log(body);
}
});
Entrambi utilizzano la stessa versione OpenSSL:
$ python -c 'import ssl; print(ssl.OPENSSL_VERSION)'
OpenSSL 1.0.2e-fips 3 Dec 2015
$ node -pe process.versions.openssl
1.0.2e
Non credo il problema sia con il fascio certificato e io non voglio disattivare la verifica host nel nodo.
Qualcuno sa perché il nodo sta generando questo errore?