モジュール基本モジュール

モジュールSSL

ssl モジュールは fibjs の組み込み暗号化モジュールであり、ネットワーク接続の SSL ハイパーテキスト転送プロトコルを確立するために使用できます。このモジュールは暗号検証を提供するため、クライアントとサーバーは接続が安全であることを確認できます。

ssl モジュールには、完全な SSL クライアント/サーバー通信プロセスに使用できる複数のオブジェクトと定数が含まれています。一般的に使用されるカテゴリは次のとおりです。

  1. SslSocket: 基礎となるものに基づくSocketカプセル化された SSL ソケット オブジェクトを使用して、リモート サーバーとの双方向認証やその他の通信操作を実行できます。
  2. SslHandler: SSL プロトコル変換プロセッサ。データ ストリームを SSL ストリーム プロトコルに変換するために使用され、サーバー側サービスの構築に適しています。
  3. SslServer: 標準マルチファイバー SSL サーバーの構築に便利な SSL サーバー オブジェクト。

以下はssl.Server例として、sslモジュールの使用を紹介します。

ssl.ServerSSL ベースのネットワーク サービスを提供する基本的な SSL サーバーです。使用ssl.Serverこのクラスは、SSL/TLS に基づいてサーバーを迅速に作成でき、基本的に TCP/HTTP サービスのすべての機能と互換性があります。次のような特徴があります。

  • 複数のドメイン名証明書、ワイルドカード、SAN 証明書、その他の機能をサポートする X.509 証明書マネージャーが付属しています。
  • TCP サーバーと同じインターフェイスと使い方を持ち、上位層のコードは SSL 接続と TCP 接続の違いを気にする必要がありません。
  • すべての SSL/TLS セキュリティ プロトコルは、組み込みの OpenSSL ライブラリを使用して実装されます。
  • SNI、ALPNなどのプロトコル拡張機能をサポート。

簡単な例を次に示します。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const ssl = require('ssl'); const http = require('http'); const crypto = require('crypto'); // read cert and key let key = crypto.loadPKey('mycert.key'); let cert = crypto.loadCert('mycert.pem'); // create ssl server const svr = new ssl.Server(cert, key, 8080, s => { var data; while (data = s.read()) { console.log(`received data: ${data.toString()}`); s.write(data.toString().toUpperCase()); } }); // start server svr.start();

上記のコードでは、最初に SSL 証明書と秘密キー ファイルを読み取り、次に SSL サーバー インスタンスを作成しました。サーバーのコールバック関数では、クライアント データを受信した後、データを大文字に変換し、書き込み関数を通じてデータをクライアントに返します。

物体

Socket

作成するSslSocketオブジェクト、参照SslSocket

1
SslSocket ssl.Socket;

Handler

作成するSslHandlerオブジェクト、参照SslHandler

1
SslHandler ssl.Handler;

Server

作成するSslServerオブジェクト、参照SslServer

1
SslServer ssl.Server;

静的関数

connect

作成するSslSocketオブジェクトを選択して接続を確立する

1 2
static Stream ssl.connect(String url, Integer timeout = 0) async;

呼び出しパラメータ:

  • url: 文字列。接続プロトコルを指定します。次のようになります: ssl://host:port
  • timeout: 整数、タイムアウトを指定します。単位はミリ秒です。デフォルトは 0 です。

返される結果:


作成するSslSocketオブジェクトを選択して接続を確立する

1 2 3 4
static Stream ssl.connect(String url, X509Cert crt, PKey key, Integer timeout = 0) async;

呼び出しパラメータ:

  • url: 文字列。接続プロトコルを指定します。次のようになります: ssl://host:port
  • crt:X509Cert、証明書。クライアントを検証するためにサーバーに送信するために使用されます。
  • key:PKey、秘密キー、クライアントとの通信に使用されます
  • timeout: 整数、タイムアウトを指定します。単位はミリ秒です。デフォルトは 0 です。

返される結果:


作成するSslSocketオブジェクトを選択して接続を確立する

1 2 3 4 5
static Stream ssl.connect(String url, Integer verification, X509Cert crt, PKey key, Integer timeout = 0) async;

呼び出しパラメータ:

  • url: 文字列。接続プロトコルを指定します。次のようになります: ssl://host:port
  • verification: 整数、証明書検証モード
  • crt:X509Cert、証明書。クライアントを検証するためにサーバーに送信するために使用されます。
  • key:PKey、秘密キー、クライアントとの通信に使用されます
  • timeout: 整数、タイムアウトを指定します。単位はミリ秒です。デフォルトは 0 です。

返される結果:


setClientCert

デフォルトのクライアント証明書を設定する

1 2
static ssl.setClientCert(X509Cert crt, PKey key);

呼び出しパラメータ:

  • crt:X509Cert、証明書。クライアントを検証するためにサーバーに送信するために使用されます。
  • key:PKey、秘密キー、クライアントとの通信に使用されます

loadRootCerts

付属のデフォルトのルート証明書をロードします。これは以下と同等です。ssl.ca.loadRootCerts

1
static ssl.loadRootCerts();

この証明書の内容は、http: //hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txtから取得されます。

静的プロパティ

ca

X509Cert、グローバル証明書、SSL クライアント モード検証サーバー証明書に使用されます。

1
static readonly X509Cert ssl.ca;

verification

整数。証明書検証モードを設定します。デフォルトは VERIFY_REQUIRED です。

1
static Integer ssl.verification;

絶え間ない

VERIFY_NONE

証明書検証モード、検証なし

1
const ssl.VERIFY_NONE = 0;

VERIFY_OPTIONAL

証明書検証モード、オプションの検証、検証の失敗を許可

1
const ssl.VERIFY_OPTIONAL = 1;

VERIFY_REQUIRED

証明書検証モード。検証が必要ですが、検証が失敗すると中断されます。

1
const ssl.VERIFY_REQUIRED = 2;

BADCERT_EXPIRED

証明書の検証結果、証明書のタイムアウト

1
const ssl.BADCERT_EXPIRED = 1;

BADCERT_REVOKED

証明書の検証結果、証明書は失効しました

1
const ssl.BADCERT_REVOKED = 2;

BADCERT_CN_MISMATCH

証明書の検証結果、証明書名が間違っています

1
const ssl.BADCERT_CN_MISMATCH = 4;

BADCERT_NOT_TRUSTED

証明書の検証結果、証明書は信頼できません

1
const ssl.BADCERT_NOT_TRUSTED = 8;