Estou tentando reconfigurar meu servidor Apache Tomcat para usar apenas o TLSv1. No entanto, ele ainda está voltando ao SSLv3 usando determinados navegadores.
Eu configurei a tag <connector> com as seguintes configurações:
<Connector ...
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA" sslEnabledProtocols="TLSv1" />
Estou faltando uma configuração ou tenho algo presente que não deveria estar presente?
ssl
tomcat
configuration
poodle
rmiesen
fonte
fonte
sslProtocols=TLSv1
versossslProtocol="TLS"
(percebeu issos
?). A especificação de suas versões do Tomcat e Java o salvará da loucura.Respostas:
Dependendo da versão do Tomcat 5 e da versão 6, o SSLEnabled = "true" pode não funcionar, pois foi adicionado no meio do release. Para superar isso, basta editar o seguinte: sslProtocols = TLS Para: sslProtocols = "TLSv1, TLSv1.1, TLSv1.2"
Parece estranho, mas, embora diga TLS, contém o SSL 3.
Isso foi corrigido nas instâncias do Tomcat 5.5.20 e Tomcat 6. -Greg
Eu acredito que você precisa fazer é:
Jboss:
Não tenho certeza sobre a definição do conjunto de cifras, no entanto, sslprotocols apenas deve ser definido como TLSv1, TLSv1.1, TLSv1.2
dependendo da sua versão do tomcat, será diferente, outras possíveis soluções:
Tomcat 5 e 6
** Nas distros baseadas em RHEL5, o seguinte se aplica às versões do Tomcat 6 anteriores ao Tomcat 6.0.38 **
Observe que
TLSv1.1,TLSv1.2
é suportado pelo Java 7, não pelo Java 6. A adição dessas diretivas a um servidor executando o Java 6 é inofensiva, mas não ativará o TLSv1.1 e o TLSv1.2.Tomcat> = 7
Conectores APR do Tomcat
o acima foi alterado para atender às especificações do conector acima. Fonte: https://access.redhat.com/solutions/1232233
fonte
sslEnabledProtocols
não funcionou para nós no Tomcat 6.sslProtocols = "TLSv1,...."
funcionou.Eu tenho um caso de uso semelhante, que permite ao Tomcat 7 usar estritamente apenas o TLSv1.2, para não voltar a protocolos SSL anteriores, como TLSv1.1 ou SSLv3.
Estou usando: C: \ apache-tomcat-7.0.64-64bit e C: \ Java64 \ jdk1.8.0_60.
Seguindo estas instruções: https://tomcat.apache.org/tomcat-7.0-doc/security-howto.html . O Tomcat é relativamente simples de configurar o suporte SSL.
De muitas referências, testei muitas combinações, finalmente encontrei 1 que forçará o Tomcat 7 a aceitar apenas TLSv1.2. 2 lugares necessários para tocar:
1) Em C: \ apache-tomcat-7.0.64-64bit \ conf \ server.xml
Onde
keystoreFile
= armazenamento confiável autoassinado localorg.apache.coyote.http11.Http11Protocol
= Implementação JSSE BIO.Nós não usamos
org.apache.coyote.http11.Http11AprProtocol
, porque é alimentado por openssl. O openssl subjacente voltará a suportar protocolos SSL anteriores.2) Ao iniciar o Tomcat, ative os seguintes parâmetros do ambiente.
A restrição JAVA_OPTS é necessária, caso contrário, o Tomcat (que é alimentado por Java8) voltará a suportar protocolos SSL anteriores.
Inicie o Tomcat
C:\apache-tomcat-7.0.64-64bit\bin\startup.bat
Podemos ver que JAVA_OPTS aparece no log de inicialização do Tomcat.
Em seguida, podemos usar o comando openssl para verificar nossa configuração. Primeiro, conecte o host local: 8443 com o protocolo TLSv1.1. O Tomcat se recusa a responder com o certificado do servidor.
Conecte localhost: 8443 com o protocolo TLSv1.2, o Tomcat responde o ServerHello com o certificado:
Isso prova que o Tomcat agora responde estritamente apenas à solicitação TLSv1.2.
fonte
JAVA_OPTS=-Djdk.tls.client.protocols="TLSv1.2
não é necessário (Tomcat 8.0.29, Java 1.8.0_74). Também não é mencionado aqui: wiki.apache.org/tomcat/Security/POODLEA documentação do Tomcat 7 afirma claramente que as opções
sslEnabledProtocols
esslProtocol
são suportadas e que há uma sobreposição entre elas:https://tomcat.apache.org/tomcat-7.0-doc/config/http.html
fonte
No Tomcat 6.0.41, você precisará usar o conector de bloqueio, pois o NIO está ignorando essas configurações.
http://wiki.apache.org/tomcat/Security/POODLE
http://mail-archives.apache.org/mod_mbox/tomcat-users/201410.mbox/%[email protected]%3E
Porta do conector = "443" protocol = "org.apache.coyote.http11.Http11Protocol" maxThreads = "esquema 200" = "https" secure = "true" SSLEnabled = "true" clientAuth = "false"
keystoreFile = "tomcat.jks "keystorePass =" changeit "sslEnabledProtocols =" TLSv1, TLSv1.1, TLSv1.2 "/>
fonte
No Tomcat 5.5, você deve usar parâmetro não documentado
restringir o uso de exatamente esta versão do protocolo.
fonte
Para desativar o SSL 3 (POODLE) no Jboss 4.0.3 SP1 (Tomcat 5.5 com java 1.5) no server.xml, altere seu código assim.
<Connector port="443" address="${jboss.bind.address}" maxThreads="100" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/eCP.keystore" keystorePass="password" sslProtocol="TLS" protocols="TLSv1,TLSv1.1,TLSv1.2" />
fonte
para Tomcats mais recentes usam sslProtocols e sslEnabledProtocols de combinação como esta:
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" SSLEnabled="true" URIEncoding="UTF-8" keystorePass=""/>
fonte
Primeiro de tudo, como o @iviorel diz, não é
sslProtocols
, ésslProtocol
. (Por que a resposta dele foi reduzida?)JSSE
Para mim, no Tomcat 7 e Java 7,
sslProtocol
a seguinte configuração não funciona:Diz:
Mas o seguinte funciona muito bem:
APR
Para desativar o SSL v3 e ativar o protocolo TLSv1:
Para ativar os protocolos TLSv1, TLSv1.1, TLSv1.2:
Ou:
Nota: os valores "TLSv1.1", "TLSv1.2" requerem o Tomcat Native 1.1.32 e uma versão do Tomcat que o suporte.
fonte