2

私の WebProxy はノードに組み込まれています。モジュールを使用してrequest、特定の URL からコンテンツを取得しています。https://www.macu.comでCERT_HAS_EXPIREDエラーが発生しますが、ブラウザでサイトが正常に開きます。

私の調査

Chromeで証明書の詳細を調べて確認しましたが、証明書の有効期限が切れていません。この Web サイトの証明書の問題がわかりません。

これは、Node.js のリストにないベンダーの問題である可能性があると考えました。npm とノードのバージョンをアップグレードしようとしましたが、成功しませんでした。さらに、 https://www.facebook.comの証明書もDigiCert High Assurance CA-3ベンダーによって発行されており、このベンダーが Node.js CA リストに存在することが明確に示されています。

コードは次のとおりです。

var request = require('request');

function getContent(urlOptions) {
  request.get(urlOptions, function(error, response, body) {
    if (error) console.log('Error:'  + error);

    if (body) {
      console.log('Body:' + body);
    }
  });
}

exports.init = function() {
  var urlOptions = {
    headers: {
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
      'Accept-Encoding': 'gzip,deflate,sdch',
      'Accept-Language': 'en-US,en;q=0.8',
      'Cache-Control': 'max-age=0',
      'Connection': 'keep-alive',
      'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36'
    },
    secureProtocol: 'TLSv1_method'
  };

  /* URL options for macu.com domain */
  urlOptions.url = 'https://www.macu.com/mystyle-checking';
  urlOptions.headers.host = urlOptions.headers.Host = 'www.macu.com';
  // urlOptions.rejectUnauthorized = false;  // Works when this option is set but it may cause security issue

  getContent(urlOptions);

  urlOptions.url = 'https://www.facebook.com';
  urlOptions.headers.host = urlOptions.headers.Host = 'www.facebook.com';

  getContent(urlOptions);
};

ただ知りたいだけです

  1. Request モジュールが macu.com に対しては文句を言うが、facebook.com については文句を言わないのに、どちらも同じベンダーによる証明書を持っているのはなぜですか。
  2. Macu の証明書の問題は何ですか?
  3. 証明書がノードのエラーをスローしているのに、ブラウザーによって受け入れられる理由。
4

1 に答える 1