No HTTPS e no Tomcat, as solicitações GET funcionam, mas não as solicitações POST

0

Eu consegui fazer o meu suporte Ubuntu HTTPS. Se no Chrome eu quero ver uma página localizada em / var / www ele é exibido bom (bloqueio verde no lado).

Mas eu tenho problemas no tomcat. Se eu quiser ver uma página no tomcat no Chrome, recebo um aviso de segurança (e um cadeado vermelho). Além disso, no Android, posso emitir solicitações via GET, mas para solicitações POST, recebo javax.net.ssl.SSLHandshakeException: Handshake failed . Eu não sabia como obter um keystore, então criei um e fiz o server.xml suportá-lo via <Connector... . É o problema?

Como posso fazer o tomcat suportar POST e não apenas GET?

    
por Ran 27.08.2016 / 16:42

1 resposta

0

Bem, se você precisar executar o tomcat para usar o HTTPS, precisará de keystore para ser criado e, se precisar executar o mesmo na porta 443, será necessário configurar o ubuntu para permitir que o tomcat use as portas privilegiadas. Números de porta menores que 1024 são portas privilegiadas. Então você precisa seguir os passos abaixo. Estou muito inseguro de quanto você fez ou conseguiu. Enquanto isso, detalhe os seguintes passos.

Tomcat7 em Portas Privilegiadas (: 80.443)
1) No server.xml, mude a linha

 <Server port="8005" shutdown="SHUTDOWN">
    <Connector port="80" maxHttpHeaderSize="8192" protocol="HTTP/1.1" 
            maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
            enableLookups="false" redirectPort="443" acceptCount="100" 
            connectionTimeout="20000" disableUploadTimeout="true" 
            socketBuffer="18000" 
            compression="on" URIEncoding="UTF-8" 
            compressionMinSize="2048" 
            noCompressionUserAgents="gozilla, traviata" 
            compressableMimeType="application/javascript,text/html,text/xml,text/javascript,text/css,text/plain,application/json,text/json,a    pplication/xml"/>

<Connector port="443" maxHttpHeaderSize="8192" protocol="HTTP/1.1" SSLEnabled="true" 
        scheme="https" secure="true" 
        keystoreFile="/path/to/my.keystore" keystorePass="changeit" 
        clientAuth="false" sslProtocol="TLS" 
        maxThreads="350" minSpareThreads="25" maxSpareThreads="75" 
        enableLookups="false" acceptCount="100" 
        connectionTimeout="60000" disableUploadTimeout="true" 
        bufferSize="4096" 
        compression="on" 
        compressionMinSize="2048" URIEncoding="UTF-8" 
        noCompressionUserAgents="gozilla, traviata" 
        compressableMimeType="application/javascript, text/html, text/xml,text/javascript, text/css,text/plain,     application/json,text/json,application/xml"/>


2) Instale o authbind

sudo apt-get install authbind

3) Disponibilizar a porta 80 para authbind (você precisa ser root):

sudo su
touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat7 /etc/authbind/byport/80
touch /etc/authbind/byport/443
chmod 500 /etc/authbind/byport/443
chown tomcat7 /etc/authbind/byport/443

4) Tornar o IPv4 o padrão (o authbind atualmente não suporta o IPv6). Para fazer isso, crie o arquivo $ TOMCAT_HOME / bin / setenv.sh com o seguinte conteúdo:

CATALINA_OPTS="-Djava.net.preferIPv4Stack=true"
AUTHBIND=yes

5) Altere a última linha /usr/share/tomcat7/bin/startup.sh para algo como a seguir.

exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
# OLD: exec "$PRGDIR"/"$EXECUTABLE" start "$@"

Etapas de geração do keystore do Tomcat:

  1. Para gerar a chave SSL, execute o seguinte comando no terminal
% bl0ck_qu0te%

Forneça as informações necessárias e defina a senha. A senha padrão é "changeit".

  1. Conceder permissão de execução ao arquivo my.keystore
% bl0ck_qu0te%

É isso.

Observação: eu publiquei tags de conector do tomcat server.xml para um ambiente de produção. Se você estiver executando em ambiente de pré-produção com baixa configuração de servidor, evite ou reduza as opções dentro das tags como max-min-Threads, pesquisas, timeouts, etc., com facilidade.

    
por SAGAR Nair 27.08.2016 / 17:12