サーバーは SSL証明書 を使用するように設定できます。サーバー証明書を持つ本番サーバーを取得するには、Namecheap、GoDaddy、Thawteなどの よく知られたプロバイダー から証明書を購入する必要があります。テスト目的では 自己署名証明書 を使用できます(自己署名証明書を使用するDemos/Chatの例を確認してください)。
証明書は PEM 形式である必要があります。PEM(Privacy Enhanced Mail の略)は RFC 1421~1424 で定義されたコンテナ形式で、パブリック証明書のみ(Apache のインストールや CA 証明書ファイル /etc/ssl/certs など)、またはパブリックキー、プライベートキー、ルート証明書を含む証明書チェーン全体を含む場合があります。単一の PEM 証明書を作成するには、プライベートキーファイルを開き、内容をコピーして証明書ファイルに貼り付けます。
例:
certificate.crt
-----BEGIN CERTIFICATE-----
.....
-----END CERTIFICATE-----
certificate.key
-----BEGIN PRIVATE KEY-----
.....
-----END PRIVATE KEY-----
certificate.pem
-----BEGIN PRIVATE KEY-----
.....
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
.....
-----END CERTIFICATE-----
SSLを有効にするには、SSLプロパティを有効にする だけで、CertFile、 KeyFile、RootFileへのパスを設定します。 証明書に証明書チェーン全体(公開鍵、秘密鍵など)が含まれている場合は、 すべてのパスを同じ証明書に設定するだけです。
設定する必要がある別のプロパティは SSLOptions.Port で、これはセキュア接続に使用されるポートです。
例: IP 127.0.0.1 とポート 443 で SSL を設定します
oServer := TsgcWebSocketServer.Create(nil);
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.Port := 443;
oServer.Port := 443;
oServer.Active := true;
サーバーを複数の IP とポートでリッスンするよう設定できます。動作の詳細についてはバインディングの記事を参照してください。サーバーは SSL 接続と非 SSL 接続を同時に受け付けるように設定できます(もちろん、異なるポートでリッスンします)。2つの異なるポートにバインドし、一方のポートを SSL 接続用、もう一方を非 SSL 接続用に設定するだけです。
例: サーバーを IP 127.0.0.1、ポート 80(非暗号化)および 443(SSL)で設定する
oServer := TsgcWebSocketServer.Create(nil);
With oServer.Bindings.Add do
begin
IP := '127.0.0.1';
Port := 80;
end;
With oServer.Bindings.Add do
begin
IP := '127.0.0.1';
Port := 443;
end;
oServer.Port := 80;
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.Port := 443;
oServer.Active := true;