Yapmak çok cazip olabilir rejectUnauthorized: false
ya da process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
yapma! Orta saldırılarda sizi adama maruz bırakır.
Diğer cevaplar, sorunun, sertifikanızın "bir aracı CA tarafından imzalanmış olması" gerçeğinde yatması nedeniyle doğrudur. Buna kolay bir çözüm var, bu ssl-root-cas
da herhangi bir ek CA'yı düğüme enjekte etmek veya enjekte etmek gibi bir üçüncü taraf kütüphanesi gerektirmiyor .
Düğümdeki çoğu https istemcisi, istek başına bir CA belirtmenize olanak tanıyan ve çözülecek seçenekleri destekler UNABLE_TO_VERIFY_LEAF_SIGNATURE
. Düğümün yerleşik https
modülünü kullanan basit bir örnek .
import https from 'https';
const options = {
host: '<your host>',
defaultPort: 443,
path: '<your path>',
// assuming the bundle file is co-located with this file
ca: readFileSync(__dirname + '/<your bundle file>.ca-bundle'),
headers: {
'content-type': 'application/json',
}
};
https.get(options, res => {
// do whatever you need to do
})
Ancak, barındırma sunucunuzda ssl ayarlarını yapılandırabilirseniz, ara sertifikaları barındırma sağlayıcınıza eklemek en iyi çözüm olacaktır. Bu şekilde, istemcinin sunucunun içinde bulunduğu için bir CA belirtmesi gerekmez. Şahsen namecheap + heroku kullanıyorum. Benim için hile ile bir .crt dosyası oluşturmak oldu cat yourcertificate.crt bundle.ca-bundle > server.crt
. Daha sonra bu dosyayı açtım ve ilk sertifikadan sonra bir satırsonu ekledim. Daha fazla bilgi için:
https://www.namecheap.com/support/knowledgebase/article.aspx/10050/33/installing-an-ssl-certificate-on-heroku-ssl