一部のデータを他のサーバーに送信する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
}
};
助けてください....