2016-04-05 29 views
1

node.jsクライアントを使用してWebサーバーに接続しようとすると、上記のエラーが表示されます。NodeJS 'DEPTH_ZERO_SELF_SIGNED_CERT'

しかし、サーバーに接続しようとするとエラーが発生します。

'DEPTH_ZERO_SELF_SIGNED_CERT'

これは、要求を送信するコードです。また、証明書のチェックを無効にすることは有効ではありません。私は接続を確保する必要があります。

var options = 
    { 
     hostname: baseUri, 
     port: 443, 
     path: 'oauth', 
     method: 'POST', 
     requestCert: true, 
     ca:fs.readFileSync('Comodo_PositiveSSL_bundle.crt'), 
     rejectUnauthorized: true, 
     headers: { 
      //'User-Agent': USER_AGENT, 
      'Content-Type': 'application/x-www-form-urlencoded', 
      'Content-Length': data.length 
     } 
    }; 

    var req = http.request(options, (res) => { 
     console.log('statusCode: ', res.statusCode); 
     console.log('headers: ', res.headers); 

     res.on('data', (d) => { 
     process.stdout.write(d); 
     }); 
    }); 

    req.write(data) 
    req.end(); 

    req.on('error', (e) => { 
     console.error(e); 
    }); 

誰かが私がどのように認証を正しく設定できるか教えていただけますように、エラーは生成されません。


証明書バンドルの画像。バンドルには、ルート証明書だけが含まれていることがわかります。サーバーが提供する証明書を検証する必要があります。

Cert bundle

+0

.crtファイルを開くと、バッファまたは適切なテキストが表示されますか?それがバッファーの場合は、実際の証明書を使用する必要があります(ノードで変換するか、対応する.pemファイルを使用してください) – VirginieLGB

+0

ファイルは '----- BEGIN CERTIFICATE ----- 'その前に空白はありません。 –

+0

それでは、問題は署名プロセスから来ていると思います。新しいものを生成し、すべてのフィールドが正しいことを確認してください。 – VirginieLGB

答えて

0

問題は、以下のコードによって解決されます。私はoptions.agent = http.Agent(options);を追加し、それが問題を解決しました。

セキュリティで保護されたサーバーを認証しようとしていて、上記のエラーが発生した場合は、これが解決策になります。以下は、上記の編集済みコードを追加したものです。

var options = 
     { 
      hostname: baseUri, 
      port: 443, 
      path: 'oauth', 
      method: 'POST', 
      requestCert: true, 
      headers: { 
       //'User-Agent': USER_AGENT, 
       'Content-Type': 'application/x-www-form-urlencoded', 
       'Content-Length': data.length 
      } 
     }; 
     options.agent = http.Agent(options); 

     var req = http.request(options, (res) => { 
      console.log('statusCode: ', res.statusCode); 
      console.log('headers: ', res.headers); 

      res.on('data', (d) => { 
      process.stdout.write(d); 
      }); 
     }); 

     req.write(data) 
     req.end(); 

     req.on('error', (e) => { 
      console.error(e); 
     }); 
関連する問題