Como melhorar a segurança do Certificado SSL no servidor
A segurança do servidor é algo bem delicado e deve ser tratado com cautela. Existem diversos recursos para te auxiliar como Firewall, IDS e outros. O Certificado SSL também é um deles, mas existem algumas recomendações a serem seguidas antes de habilitar uma conexão SSL/TLS no servidor.
Apesar do termo SSL ser muito usado na internet os servidores não usam mais este protocolo (ou pelo menos não deveriam), o correto é usar o protocolo TLS (no link abaixo explica o porque).
Quer saber a diferença entre o SSL e o TLS? Acesse este ink.
Então é necessário verificar se o servidor está configurado com os protocolos e conjuntos de cifras recomendados. Abaixo vou te passar algumas recomendações de serviços como IIS, Apache (mod_ssl) e Apache tomcat.
Recomendações para o Microsoft Internet Information Services (IIS)
Altere os protocolos SSL e os conjuntos de cifra (Conteúdo em inglês). Esses tipos de alteração envolvem fazer modificações no registro.
Desabilitando SSLv2, SSLv3 e TLSv1. Contém um Microsoft Fix It para facilitar o processo:
https://support.microsoft.com/en-us/help/187498/how-to-disable-pct-1.0,-ssl-2.0,-ssl-3.0,-or-tls-1.0-in-internet-information-services (Conteúdo em inglês).
Restringindo algoritmos e protocolos criptográficos:
https://support.microsoft.com/en-us/help/245030/how-to-restrict-the-use-of-certain-cryptographic-algorithms-and-protocols-in-schannel.dll (Conteúdo em inglês).
Recomendações para Apache / mod_ssl
Alta segurança, somente TLSv1.2. Pode não ser compatível com todos os navegadores e dispositivos.
O protocolo SSL e o conjunto de cifra abaixo são destinados apenas a troca de informações de alta segurança entre o servidor e cliente (website e navegador). Mas para que funcione corretamente o usuário precisa usar um navegador recente (Firefox > 27, Chrome > 32, IE > 11).
SSLProtocol all -TLSv1.1 -TLSv1 -SSLv2 -SSLv3 SSLCipherSuite ALL:+HIGH:!ADH:!EXP:!SSLv2:!SSLv3:!MEDIUM:!LOW:!NULL:!aNULL SSLHonorCipherOrder on
Média segurança. Oferece segurança e compatibilidade.
O protocolo SSL e o conjunto de cifra abaixo são destinados apenas a troca de informações de média segurança entre o servidor e cliente.
SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ALL:+HIGH:+TLSv1:!ADH:!EXP:!SSLv2:!MEDIUM:!LOW:!NULL:!aNULL SSLHonorCipherOrder on
Java Security Socket Extension para Apache Tomcat
O Apache Tomcat usa o conector JSSE por padrão, como oposição ao Apache Portable Runtime (APR). Abaixo estão alguns conjuntos de cifra recomendados.
ciphers="TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
Exemplo de configurações do conector JSSE no arquivo $ TOMCAT_BASE / conf / server.xml
<Connector port = "8443" protocolo = "org.apache.coyote.http11.Http11Protocol" maxThreads = "150" SSLEnabled = esquema "verdadeiro" = "https" seguro = " verdadeiro " clientAuth = "falso" sslProtocol = "TLS" sslEnabledProtocols = "TLSv1.2, TLSv1.1, TLSv1" keyStoreFile = "/ path / to /" keystore.jks keystorePass = "keystorepasswordhere" cifras = "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" />TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" />TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" />/>/>
Apache Tomcat com conector de tempo de execução portátil Apache (Apache Portable Runtime)
SSLProtocol = "all -SSLv2 -SSLv3" SSLCipherSuite = "ALL: + HIGH: + TLSv1:! DH:! ADH:! EXP:! SSLv2:! MEDIUM:! LOW:! NULL:! ANULL" SSLHonorCipherOrder = "on"
Exemplo de configurações do conector APR no arquivo $ TOMCAT_BASE / conf / server.xml
<! - Conector APR -> <Protocolo do conector = "org.apache.coyote.http11.Http11AprProtocol" porta = "8443" maxHttpHeaderSize = "8192" maxThreads = "150" enableLookups = "falso" disableUploadTimeout = "true" acceptCount = "100" esquema = "https" seguro = " verdadeiro " SSLEnabled = " verdadeiro " SSLCertificateFile = "/ caminho / para / certificate.cer" SSLCertificateKeyFile = "/ caminho / para / private.key" SSLCertificateChainFile = "/ caminho / para /intermediário/certificate/bundle.cer " SSLProtocol ="Todos -SSLv2 -SSLv3 " SSLCipherSuite =" ALL: + HIGH: + TLSv1:! DH :! ADH:! EXP:! SSLv2:! MEDIUM:! LOW :! NULL:! ANULL " SSLHonorCipherOrder =" on " />
Recomendo você testar o Certificado SSL antes e depois de fazer as configurações no servidor. Assim poderá ter uma noção de como foi melhorada a segurança do SSL no servidor.
Se você gostou deste conteúdo, peço que ajude mais pessoas a entenderem a melhorarem a segurança do SSL/TLS no servidor, compartilhando este artigo com seus amigos.
Caso tenha alguma dúvida a sobre o assunto, por favor deixe seu comentário que terei o prazer de conversar com você a respeito.
Um grande abraço e até a próxima!
Comentários não são permitidos.