매우 할 유혹 할 수있다 rejectUnauthorized: false
또는 process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
그러나 그것을하지 않는다! 그것은 중간 공격에서 사람에게 노출됩니다.
다른 답변은이 문제가 "중개 CA가 서명 한"인증서라는 사실에 있습니다. 이것에 대한 쉬운 해결책이 있습니다.이 방법은 ssl-root-cas
추가 CA를 노드에 주입하거나 주입하는 것과 같은 타사 라이브러리가 필요하지 않습니다 .
노드의 대부분의 https 클라이언트는 요청 당 CA를 지정할 수있는 옵션을 지원 UNABLE_TO_VERIFY_LEAF_SIGNATURE
합니다. 다음은 노드의 내장 https
모듈을 사용하는 간단한 예 입니다.
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
})
그러나 호스팅 서버에서 SSL 설정을 구성 할 수있는 경우 가장 좋은 방법은 중간 인증서를 호스팅 공급자에게 추가하는 것입니다. 이렇게하면 클라이언트 요청자가 서버 자체에 포함되어 있으므로 CA를 지정할 필요가 없습니다. 나는 개인적으로 namecheap + heroku를 사용합니다. 나를위한 트릭은 .crt 파일 하나를 만드는 것이 었습니다 cat yourcertificate.crt bundle.ca-bundle > server.crt
. 그런 다음이 파일을 열고 첫 번째 인증서 뒤에 줄 바꿈을 추가했습니다. 더 읽을 수 있습니다
https://www.namecheap.com/support/knowledgebase/article.aspx/10050/33/installing-an-ssl-certificate-on-heroku-ssl