1

Node.js で TLS サーバーと適切な TLS クライアントを作成しました。もちろん、両者は互いに動作しますが、確認したいと思います。

基本的には、接続を検査する、またはサーバーに手動で接続して送信内容を検査する、またはそのようなものを考えます...

サーバーの関連コードは次のとおりです。

var tlsOptions = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('server.pem')
};

tls.createServer(tlsOptions, function (tlsConnection) {
  var d = dnode({
    // [...]
  });
  tlsConnection.pipe(d).pipe(tlsConnection);
}).listen(3000);

適切なクライアント コードは次のとおりです。

var d = dnode();
d.on('remote', function (remote) {
    // [...]
});

var tlsConnection = tls.connect({
    host: '192.168.178.31',
    port: 3000
});
tlsConnection.pipe(d).pipe(tlsConnection);

どうすればそれができますか?

4

2 に答える 2

3

Wireshark は、データが TLS 暗号化されているかどうかを通知しますが、接続が中間者攻撃に対して実際に安全であるかどうかは通知しません. このためには、クライアントが、信頼できる CA によって署名されていない証明書、別のホスト名に対してのみ有効な証明書、無効になった証明書、失効した証明書などを提供するサーバーへの接続を拒否するかどうかをテストする必要があります。

server.pem が実際の/信頼できる CA からの証明書ではなく、クライアントがサーバーへの接続を拒否しない場合 (および server.pem をクライアントに明示的に提供していない場合)、クライアントはおそらく安全でない。ホスト名ではなく IP に接続していることを考えると、信頼できる CA が証明書を発行していないはずなので、自己署名されたものを使用していて脆弱であると想定します。おそらく、rejectUnauthorizedいつconnect()ing かを指定する必要があります。(暴言: これはかなりよくある間違いなので、検証をデフォルトにしないのは非常に無責任だと思います。)

于 2012-12-31T12:22:44.133 に答える
0

基本的には、接続を調べたり、サーバーに手動で接続して送信内容を調べたり、そういうことを考えています...

Wiresharkなどのツールを使用して、送信しているデータを確認できます。

于 2012-12-29T20:10:17.380 に答える