TsgcWebSocketServer | 服务器 SSL

服务器可以配置为使用 SSL 证书。要获得带有服务器证书的生产服务器,您必须购买来自知名提供商(Namecheap、GoDaddy、Thawte 等)的证书。出于测试 目的,您可以使用自签名 证书(查看使用自签名证书的 Demos/Chat 示例)。

 

证书必须为 PEM 格式,PEM(隐私增强邮件)定义于 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 连接(当然需要在不同端口上监听)。您只需绑定到两个不同的端口,并将一个端口配置为 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;