TsgcWebSocketServer | サーバーSSL

サーバーは 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プロパティを有効にする だけで、CertFileKeyFileRootFileへのパスを設定します。 証明書に証明書チェーン全体(公開鍵、秘密鍵など)が含まれている場合は、 すべてのパスを同じ証明書に設定するだけです。

 

設定する必要がある別のプロパティは SSLOptions.Port で、これはセキュア接続に使用されるポートです。

 

シンプルな SSL 設定

例: 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;

 

SSLおよび非SSL

サーバーを複数の 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;