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