서버는 SSL Certificates를 사용하도록 구성할 수 있습니다. 서버 인증서가 있는 프로덕션 서버를 얻으려면 잘 알려진 공급자: 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과 Port 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 및 port에서 수신 대기하도록 구성할 수 있습니다. 작동 방식을 설명하는 Binding 글을 확인하십시오. 서버는 SSL 연결과 비-SSL 연결을 동시에 허용하도록 구성할 수 있습니다(물론 서로 다른 port에서 수신 대기). 두 개의 서로 다른 port에 바인딩하고 한 port는 SSL 연결용으로, 다른 port는 비-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;