0

一部のデータを他のサーバーに送信するnodejsを使用しようとしています。Nodejs は https で他のサーバーと通信しており、nodejs は利用可能なルート証明書を使用して他のサーバーの証明書を検証します。要件は、nodejs が許可されていないものを拒否する必要があることです。

上記のセットアップをいくつかのテストサーバーでテストしています。1 つのテスト サーバーについて、サーバー証明書を作成し、openSSL を使用して自己署名 CA 証明書「CA1.cer」によって署名されています。もう 1 つのテスト サーバーについては、最初のテスト サーバーと同じ手順に従いましたが、makecert ユーティリティを使用しました。

これで、nodejs コードに両方の CA 証明書を含めました。問題は、makecert ユーティリティを使用して作成された証明書を持つテスト サーバーで nodejs が失敗することです。ただし、同じコードは、openSSL を使用して作成された証明書を持つテスト サーバーで機能します。

一方、両方のサーバーは、証明書エラーなしでブラウザ上で正常に動作します..

私のnodejsオプションは以下の通りで、私はバージョンv0.8.18を使用しています:

var options = {
    host: host,
    port: port,
    path: pathname,
    method: 'POST',
    ca: [ fs.readFileSync('./ca1.cer'), //created using OpenSSL
          fs.readFileSync('./ca2.cer') ], // created using makecert util
    agent: false,
    requestCert: true,
    rejectUnauthorized: true,
    auth: cred,
    headers: {
        'Content-Type': 'text/xml',
        'Content-Length': xmldata.length
    }
};

助けてください....

4

2 に答える 2

0

問題は解決しました。makecert util から作成された証明書が .pem 形式ではありませんでした。.pem に変換すると、上記のコードが機能します。アンドレイのサポートに感謝します。

于 2013-12-09T07:48:44.250 に答える