2014-12-25 3 views
0

지난 5 일 동안 내 앱 로그에 많은 이상한 오류가 있습니다. 다음은 스택 추적입니다.node.js의 "tlsv1 alert unknown ca"

Error: 140428615087936:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:../deps/openssl/openssl/ssl/s3_pkt.c:1234:SSL alert number 48 
    at CleartextStream._pusher (tls.js:674:24) 
    at SlabBuffer.use (tls.js:217:18) 
    at CleartextStream.CryptoStream._push (tls.js:501:33) 
    at SecurePair.cycle (tls.js:898:20) 
    at EncryptedStream.CryptoStream.write (tls.js:285:13) 
    at Socket.ondata (stream.js:38:26) 
    at Socket.EventEmitter.emit (events.js:96:17) 
    at TCP.onread (net.js:397:14) 

이 오류는 모두 같습니다. Node.js 버전은 0.8.24입니다. 왜 그 일이 일어날 수 있는지 아는 사람 있습니까?

+0

v0.8을 계속 사용해야한다면 적어도 v0.8.28로 업그레이드를 시도 했습니까? – mscdex

+0

@mscdex 좋은 생각입니다. 노드를 v0.8.28로 업그레이드하려고합니다. – schfkt

+0

서버 구성을 테스트 할 수 있도록 관련 코드 *와 * 연결하려는 서버를 제공하십시오. – jww

답변

0

우리는이 문제를 해결했습니다. 이는 다른 API 서버 (node.js가 말한)에서 SSL 인증서가 잘못 구성 되었기 때문에 발생했습니다.

SSL 구성을 확인하려면 SSL Labs에서 one service을 사용할 수 있습니다.

problem with SSL certificate chain

당신이 (nginx docs에서 발췌) 다음을 수행해야합니다 그것을 해결하기 위해 :

일부 브라우저가 서명 한 인증서에 대해 불평 할 수 있습니다 우리의 경우이 경고 (불완전 체인 문제)가 있었다 다른 브라우저는 문제없이 인증서 을 수락 할 수 있지만 잘 알려진 인증 기관에 의해 인증됩니다. 이는 발행 기관이 이 아닌 중간 인증서를 사용하여 서버 인증서를 에 서명했기 때문에 발생합니다. 특정 브라우저와 함께 배포되는 잘 알려진 신뢰할 수있는 인증서 기관의 인증서에 있습니다. 이 의 경우이 기관은 이 서명 된 서버 인증서에 연결되어야하는 체인화 된 인증서 번들을 제공합니다.

$ cat www.example.com.crt bundle.crt > www.example.com.chained.crt 

결과 파일이 ssl_certificate 지시어에 사용되어야한다 :

server { 
    listen    443 ssl; 
    server_name   www.example.com; 
    ssl_certificate  www.example.com.chained.crt; 
    ssl_certificate_key www.example.com.key; 
    ... 
} 

의 핵심 부분은 인증서의 연결입니다 서버 인증서는 결합 된 파일의 체인 인증서 앞에 나타나야합니다 파일. node.js 앱의 오류가 변경된 직후 사라졌습니다.