
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?