TsgcWebSocketLoadBalancerServer › Propriedades › SSLOptions

SSLOptions Propriedade

Contém os caminhos de certificado, a seleção de versão do TLS e o ajuste do OpenSSL para o listener TLS do load balancer.

Sintaxe

property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;

Valor Padrão

Version=tlsUndefined, VerifyCertificate=False

Observações

Forneça o material do certificado antes de ativar o balanceador de carga quando SSL for True: RootCertFile, CertFile e KeyFile apontam para arquivos PEM (use o mesmo caminho para os três quando o arquivo contiver a cadeia completa), e Password é necessário apenas se a chave privada for criptografada. Defina VerifyCertificate como True para solicitar e validar certificados de cliente (as sub-opções FailIfNoCertificate e VerifyClientOnce refinam a verificação) com VerifyDepth controlando o comprimento da cadeia; isso é útil quando os backends que se registram devem apresentar um certificado de cliente para TLS mútuo. Version escolhe uma versão TLS específica (tls1_0, tls1_1, tls1_2, tls1_3) ou deixa a negociação aberta (tlsUndefined). Com iohNativeTLS, é a versão mínima permitida; veja abaixo. OpenSSL_Options expõe controles de baixo nível: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), LibPath/LibPathCustom, UnixSymLinks, ECDHE, CipherList, CurveList, VersionMin e X509Checks.

IOHandler seleciona o mecanismo TLS. iohOpenSSL é o padrão e iohSChannel usa o provedor do Windows. iohNativeTLS seleciona o mecanismo TLS em Object Pascal puro do pacote sgcCrypto, que fala TLS 1.3 e TLS 1.2: nenhuma biblioteca OpenSSL é carregada, e no TLS 1.3 os grupos híbridos de troca de chaves pós-quântica da RFC 10024 são oferecidos com X25519MLKEM768 em primeiro lugar. Suas duas listas de preferência são NativeTLS_Options.Groups e NativeTLS_Options.CipherSuites, separadas por dois-pontos no estilo do OpenSSL, e uma lista vazia mantém os padrões do mecanismo. O mecanismo funciona igualmente no modelo clássico de uma thread por conexão e nos mecanismos IOCP e EPOLL. iohAppleTLS e iohAndroidTLS são handlers somente de cliente: um servidor com um deles gera uma exceção quando Active é definido como True, a menos que OnSSLGetHandler forneça seu próprio handler. Use iohNativeTLS, iohOpenSSL ou, no Windows, iohSChannel.

Para o mecanismo nativo, Version é a versão mínima permitida, não uma versão exata como ocorre com iohOpenSSL. tlsUndefined (o padrão) e tls1_2 aceitam TLS 1.3 e TLS 1.2, tls1_3 aceita apenas TLS 1.3, e tls1_0 ou tls1_1 geram um erro de configuração quando o servidor inicia, porque o mecanismo aceita apenas TLS 1.2 e TLS 1.3. Para aceitar apenas TLS 1.2, informe somente conjuntos de cifras TLS 1.2, como TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, em NativeTLS_Options.CipherSuites. O mecanismo valida os certificados de cliente em relação às raízes de RootCertFile, além das raízes em que o sistema operacional confia quando NativeTLS_Options.UseSystemRoots é True (False por padrão). Com iohNativeTLS, CertFile também pode ser um arquivo .pfx ou .p12 contendo o certificado, a cadeia e a chave, aberto com Password. O mecanismo retoma sessões com tíquetes de sessão de TLS 1.3 e TLS 1.2: NativeTLS_Options.SessionTickets (True por padrão) os ativa, e NativeTLS_Options.TicketLifetime (7200 segundos por padrão) define por quanto tempo um tíquete pode ser usado. A retomada em TLS 1.2 exige que o cliente suporte o extended master secret. Ele não aceita 0-RTT e não dispara o evento OnSSLVerifyPeer, que pertence ao handler do OpenSSL. VerifyCertificate pede um certificado ao cliente e o valida, VerifyCertificate_Options.FailIfNoCertificate recusa um cliente que não envia nenhum, e VerifyClientOnce não tem efeito porque o mecanismo nunca renegocia. Consulte TLS Nativo.

Exemplo


oServer := TsgcWebSocketLoadBalancerServer.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.Version := tls1_3;
oServer.SSLOptions.OpenSSL_Options.VersionMin := tls1_2;
oServer.SSLOptions.Port := 443;
oServer.Active := true;

Voltar para Propriedades