Servidor proxy com criptografia SSL para arquivos war no CentOS 7

0

Como posso configurar um servidor web CentOS 7 para exibir somente conteúdo SSL criptografado de war arquivos, com tomcat executando atrás de um servidor proxy?

Eu imagino que isso envolva usar firewalld , https e tomcat . E esse https é um wrapper para httpd . Atualmente, war arquivos são executados perfeitamente em tomcat quando eu exponho tomcat na porta 8080. Mas quero bloquear todo o acesso externo à porta 8080. Esta pergunta é sobre como agrupar tomcat acima de um SSL -encrypted proxy server .

Aqui está o que eu tenho até agora.

O público zone em firewalld é:

[root@xxx-xx-xxx-xx conf]# firewall-cmd --list-all
public (default, active)
  interfaces: enp3s0
  sources: 
  services: https ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

/usr/lib/firewalld/services/https.xml é assim:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Secure WWW (HTTPS)</short>
  <description>HTTPS is a modified HTTP used to serve Web pages when security is important. Examples are sites that require logins like stores or web mail. This option is not required for viewing pages locally or developing Web pages. You need the httpd package installed for this option to be useful.</description>
  <port protocol="tcp" port="443"/>
</service>

Meu /etc/httpd/conf/httpd.conf pode estar pronto clicando em este link . Observe que eu excluí muitas coisas relacionadas a permissões de arquivos / diretórios porque quero que httpd sirva como proxy para tomcat . Eu também adicionei uma tag virtualhost . Preciso adicionar algo em httpd.conf ? Além disso, httpd será chamado automaticamente porque eu adicionei https ao firewalld public zone ?

Meu /opt/tomcat/conf/server.xml pode ser lido em este link .

EDITAR:

A tentativa de reiniciar o httpd falhou. Aqui estão os resultados:

[[email protected] ~]# systemctl restart httpd.service
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

[[email protected] ~]# systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Thu 2014-12-11 15:38:00 EST; 59s ago
  Process: 31036 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31034 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31034 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 11 15:38:00 server.ip.address.static.servdns.com httpd[31034]: AH00526: Syntax error on line 58 of /etc/httpd/conf/httpd.conf:
Dec 11 15:38:00 server.ip.address.static.servdns.com httpd[31034]: Invalid command '...///', perhaps misspelled or defined by a module not included in the server configuration
Dec 11 15:38:00 server.ip.address.static.servdns.com systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 11 15:38:00 server.ip.address.static.servdns.com systemd[1]: Failed to start The Apache HTTP Server.
Dec 11 15:38:00 server.ip.address.static.servdns.com systemd[1]: Unit httpd.service entered failed state.

EDIT # 2:

Alterei a tag virtualhost , adicionei um arquivo index.html simples em /www/example1/index.html e, em seguida, adicionei uma tag de documento a httpd.conf da seguinte forma:

<VirtualHost *:443>
   DocumentRoot /www/example1/
   SSLEngine on
   SSLProxyEngine on
   SSLCertificateFile /etc/pki/tls/certs/some.crt
   SSLCertificateChainFile /etc/pki/tls/certs/bundle.crt
   SSLCertificateKeyFile /etc/pki/tls/private/some.key
   # ProxyPass / http://local_host:8080/
   # ProxyPassReverse / http://local_host:8080/
</VirtualHost>  

<Directory "/www/example1/">
     Options None
     AllowOverride None
     allow from all
</Directory>  

Mas agora digitar https://server.ip.address nos resultados do navegador em Unable to connect. Firefox can't establish a connection to the server at server.ip.address

    
por CodeMed 10.12.2014 / 22:21

1 resposta

1

Ao que parece, você está atrás de um reverse proxy . Um Google rápido mostrará uma boa seleção de possíveis soluções.

Uma opção simples é usar o servidor web apache , que você já instalou, como seu proxy.

Para fazer isso, você precisa alterar seu httpd.conf e adicionar:

<VirtualHost your.domain.name:443>
    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile /etc/pki/tls/certs/your_public.crt
    SSLCertificateChainFile /etc/pki/tls/certs/bundle.crt
    SSLCertificateKeyFile /etc/pki/tls/private/your_private.key
    ProxyPass / http://ip.addr:8080/myappname
    ProxyPassReverse / http://ip.addr:8080/myappname
</VirtualHost>

Nota : Remova o sublinhado de local_host acima - SE não me permitirá publicá-lo como uma palavra!

Pode haver necessidade de pequenos ajustes, dependendo de suas outras configurações, mas os itens acima devem ajudá-lo a começar.

    
por 10.12.2014 / 22:43