
Não sou administrador, mas às vezes há tarefas mais fáceis (e mais interessantes) de resolver do que delegar a alguém.
Ocasionalmente, precisamos "elevar" o contêiner do servlet (geralmente o Apache Tomcat) e configurar o proxy para ele, a terminação ssl (ou simplesmente https) e cobrir tudo com um firewall (deixando apenas ssh e http / https de fora).
Aconteceu que, na última semana, resolvi esse problema três vezes (quando as estrelas se tornaram e antes disso - dois anos atrás) e essa experiência foi transformada nessa pequena obra.
Portanto, considerando o servidor Ubuntu 18.04 ou 16.04 (provavelmente você não terá problemas com as versões anteriores 14.04). Se você não possui um servidor Ubuntu, pode "buscá-lo" rapidamente, por exemplo, no
Digital Ocean (meu link de referência). Depois de escrever o artigo, notei que o DO para novas contas dá US $ 100 por 60 dias para tentar, se você indicar um empréstimo.
DNS
Para um esquema simples para obter um certificado https gratuito do Let's Encrypt, precisamos acessar o servidor DNS. Escrevemos nele o endereço IP do nosso servidor Ubuntu com o nome, digamos, xyz. Digamos, por definição, que você tenha meu domínio.com, ou seja, O nome DNS do nosso servidor será xyz.mydomain.com
Instalação
Instale o Apache Tomcat (usarei a versão 8)
apt install tomcat8
E agora Nginx
apt install nginx-core
Personalização
Nginx
Configure o Nginx registrado anteriormente no nome do servidor DNS (arquivo
/ etc / nginx / sites-available / default )
server_name xyz.mydomain.com;
Registramos o link no Apache Tomcat instalado (se você não alterou nada, ele "permanece" na porta 8080). Precisamos adicionar o bloco
upstream ao bloco do
servidor .
upstream tomcat { server 127.0.0.1:8080 fail_timeout=0; } server { ...
Faça alterações no bloco de
localização e redirecione todo o tráfego para o Apache Tomcat
server { ... location / {
Verificamos se tudo foi inserido corretamente
service nginx configtest
e reinicie o nginx
service nginx restart
Apache tomcat
Em princípio, esta parte é opcional e, se não for importante para você que os endereços IP, portas, o esquema para o qual a solicitação está chegando (estou falando de https) e o servidor solicitado sejam enviados ao tomcat, essa etapa poderá ser omitida. No entanto, em alguns casos, esta etapa é necessária (por exemplo, para Java Web Start, também conhecida como tecnologia JNLP).
Adicione ao arquivo
/etc/tomcat8/server.xml no bloco
<Host /> .
<Host> ... <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" /> </Host>
Reinicie o tomcat
service tomcat8 restart
Certificado HTTP
Um certificado https com verificação via http nos ajudará a obter o bot certbot, ou melhor, sua modificação para nginx'a - python-certbot-nginx
No Ubuntu 18.04, para instalar o certbot, basta executar
apt install python-certbot-nginx
Para o Ubuntu 16.04 - é necessário mexer na adição de repositórios, etc. (consulte o
guia detalhado para o link ).
Lançamos
certbot --nginx
No processo, especifique seu email, aceite o contrato de licença, não permita que “atrapalhem” nossos dados com o Let's Encrypt, confirme o nome DNS para o qual o certificado será emitido, aceite que o bot em si “configurará” o nginx.
Voila :)
Por precaução, verificamos que a renovação do certificado será aprovada sem problemas (o certificado é emitido por 90 dias e depois pode ser prorrogado indefinidamente pelo mesmo período).
certbot renew --dry-run
E, para a paranóia interna, verificamos se o arquivo cron está no lugar
ls -al /etc/cron.d/certbot
Firewall
Paramos e fazemos backup (instantâneo) da máquina virtual.
ufw allow ssh ufw allow http ufw allow https ufw default allow outgoing ufw default deny incoming ufw show added
Ore!
ufw enable ufw status
Verificamos que tudo deu certo - o site é acessível via https, o tráfego http é redirecionado e outras portas além das listadas acima e o ssh estão fechadas com segurança.
PS Espero sinceramente que este texto possa ser útil a alguém e terei prazer em receber críticas construtivas.
PPS Ou talvez o ALL onisciente me diga a substituição do certbot para Windows? Você precisa obter o certificado inicial (idealmente, atualizá-lo de acordo com a programação ou, em geral, o brilho chique). Eu mesmo configurei o nginx. Sim, eu entendo que você provavelmente pode pegar a ferramenta para criptografar + IIS e usá-la no meu script, mas de repente existe um "ideal" pronto?