服务器可以配置为使用 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 属性 并配置 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 连接(当然需要在不同端口上监听)。您只需绑定到两个不同的端口,并将一个端口配置为 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;