このテストプログラムはhttpsサーバーに接続し、コンテンツを取得します。ブラウザとcurlでサーバーを確認しましたが、証明書は正しく機能しています。curlを実行してサーバーからデータを取得すると、-cacertを使用して渡すか、-kを使用してセキュリティをオフにしない限り、証明書が不明であると正しく文句を言います。
ですから、私が抱えている問題は、クライアントが証明書認証を行う必要があると思い、公開証明書がどこにあるかを伝えているにもかかわらず、常に機能するということです。ca:オプションを削除して、サーバーからの証明書が何であるかわからない場合は、サイレントに機能します。認証エラーをキャッチしたいのですが、キャッチできないようです。
var https = require('https');
var fs = require('fs');
function main() {
var data = '';
var get = https.get({
path: '/',
host: 'localhost',
port: 8000,
agent: false,
ca: [ fs.readFileSync('https_simple/cacert.pem') ]
}, function(x) {
x.setEncoding('utf8');
x.on('data', function(c) {data += c});
x.on('error', function(e) {
throw e;
});
x.on('end', function() {
console.log('Hai!. Here is the response:');
console.log(data);
});
});
get.on('error', function(e) {throw e});
get.end();
}
main();