{"id":40886,"date":"2020-09-14T18:50:25","date_gmt":"2020-09-14T18:50:25","guid":{"rendered":"http:\/\/antonini.ddns.net\/zp\/?p=40886"},"modified":"2020-09-15T00:11:13","modified_gmt":"2020-09-15T00:11:13","slug":"como-criar-um-certificado-ssl-autoassinado-para-o-apache-no-ubuntu-18-04","status":"publish","type":"post","link":"https:\/\/heinzpechner.ddns.net\/?p=40886","title":{"rendered":"Como criar um certificado SSL autoassinado para o Apache no Ubuntu 18.04"},"content":{"rendered":"<p><!--more--><\/p>\n<div class=\"tutorial-authors-translations\">\n<div class=\"tutorial-authors\">\n<div class=\"component-collaborators-container\">\n<ul class=\"component-collaborators-content\">\n<li class=\"collaborator-byline-avatar\">\n<div class=\"mod-avatar mod-avatar-large\"><img decoding=\"async\" class=\"avatar avatar-large\" src=\"https:\/\/community-cdn-digitalocean-com.global.ssl.fastly.net\/variants\/huJVSbbX2xohemFuk1ZroHYp\/6a540d0de9b44df9962f62205489ba6e2a5beab748fa47e816b60597a256ba9b\"\/><\/div>\n<\/li>\n<li class=\"collaborators-byline-data\">\n<p class=\"names\">By <a href=\"https:\/\/www.digitalocean.com\/community\/users\/bboucheron\">Brian Boucheron<\/a><\/p>\n<p><span class=\"meta-section date-views\"> <span class=\"meta-section timestamp\"><span class=\"tutorial-date-text\">Posted<\/span><span class=\"tutorial-date\">January 9, 2020<\/span><\/span> <span class=\"meta-section pageviews\"><span class=\"views-count v-mid\">10.2k<\/span><span class=\"sr-only\"> views<\/span><\/span><\/span><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><input class=\"chosen-search-input\" autocomplete=\"off\" readonly=\"readonly\" type=\"text\"\/><\/p>\n<div class=\"content-body tutorial-content\" data-growable-markdown=\"\">\n<p><em>Uma vers\u00e3o anterior deste tutorial foi escrita por <a href=\"https:\/\/www.digitalocean.com\/community\/users\/jellingwood\">Justin Ellingwood.<\/a><\/em><\/p>\n<h3 id=\"introdu\u00e7\u00e3o\">Introdu\u00e7\u00e3o<\/h3>\n<p>O <strong>TLS<\/strong>, ou seguran\u00e7a de camada de transporte e seu antecessor, o <strong>SSL<\/strong>, que significa camada de socket segura, s\u00e3o protocolos Web usados para envolver o tr\u00e1fego normal em um pacote protegido e criptografado.<\/p>\n<p>Ao usar essa tecnologia, os servidores podem enviar tr\u00e1fego com seguran\u00e7a entre servidores e clientes sem a possibilidade de mensagens serem interceptadas por agentes externos. O sistema de certificados tamb\u00e9m ajuda os usu\u00e1rios a verificar a identidade dos sites com os quais eles est\u00e3o se conectando.<\/p>\n<p>Neste guia, mostraremos como configurar um certificado SSL autoassinado para uso com um servidor Web Apache no Ubuntu 18.04.<\/p>\n<p><strong>Nota:<\/strong> um certificado autoassinado ir\u00e1 criptografar a comunica\u00e7\u00e3o entre seu servidor e qualquer cliente. No entanto, uma vez que ele n\u00e3o est\u00e1 assinado por nenhuma das autoridades de certificados confi\u00e1veis inclu\u00eddas com navegadores Web, os usu\u00e1rios n\u00e3o podem usar o certificado para validar a identidade do seu servidor automaticamente.<\/p>\n<p>Um certificado autoassinado pode ser apropriado se voc\u00ea n\u00e3o tiver um nome de dom\u00ednio associado ao seu servidor e para inst\u00e2ncias onde uma interface Web criptografada n\u00e3o seja voltada para o usu\u00e1rio. Se voc\u00ea tiver <em>de fato<\/em> um nome de dom\u00ednio, em muitos casos \u00e9 melhor usar um certificado assinado por CA. Voc\u00ea pode descobrir como configurar um certificado de confian\u00e7a gratuito com o projeto Let\u2019s Encrypt <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-18-04\">aqui<\/a><\/p>\n<p><a name=\"pr\u00e9-requisitos\" data-unique=\"pr\u00e9-requisitos\"><\/a><a name=\"pr\u00e9-requisitos\" data-unique=\"pr\u00e9-requisitos\"><\/a><\/p>\n<h2 id=\"pr\u00e9-requisitos\">Pr\u00e9-requisitos<\/h2>\n<p>Antes de come\u00e7ar, voc\u00ea deve ter um usu\u00e1rio n\u00e3o-raiz configurado com privil\u00e9gios <code>sudo<\/code>. Voc\u00ea pode aprender como configurar esse tipo de usu\u00e1rio seguindo nossa <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/initial-server-setup-with-ubuntu-18-04\">Configura\u00e7\u00e3o inicial de servidor com o Ubuntu 18.04<\/a>.<\/p>\n<p>Voc\u00ea tamb\u00e9m precisar\u00e1 ter o servidor Web Apache instalado. Se voc\u00ea quiser instalar uma pilha LAMP (Linux, Apache, MySQL, PHP) inteira no seu servidor, voc\u00ea pode seguir nosso guia sobre <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04\">como configurar o LAMP no Ubuntu 18.04<\/a>. Se voc\u00ea quiser apenas o servidor web Apache, pule os passos referentes ao PHP e MySQL.<\/p>\n<p>Quando tiver completado os pr\u00e9-requisitos, continue abaixo.<\/p>\n<p><a name=\"passo-1-\u2014-criando-o-certificado-ssl\" data-unique=\"passo-1-\u2014-criando-o-certificado-ssl\"><\/a><a name=\"passo-1-\u2014-criando-o-certificado-ssl\" data-unique=\"passo-1-\u2014-criando-o-certificado-ssl\"><\/a><\/p>\n<h2 id=\"passo-1-\u2014-criando-o-certificado-ssl\">Passo 1 \u2014 Criando o certificado SSL<\/h2>\n<p>O TLS\/SSL funciona usando uma combina\u00e7\u00e3o de um certificado p\u00fablico e uma chave privada. A chave SSL \u00e9 mantida em segredo no servidor. Ela \u00e9 usada para criptografar o conte\u00fado enviado para clientes. O certificado SSL \u00e9 compartilhado publicamente com qualquer um que solicitar o conte\u00fado. Ele pode ser usado para decifrar o conte\u00fado assinado pela chave SSL associada.<\/p>\n<p>Podemos criar um par chave autoassinada e certificado com o OpenSSL em um \u00fanico comando:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \/etc\/ssl\/private\/apache-selfsigned.key -out \/etc\/ssl\/certs\/apache-selfsigned.crt<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Uma s\u00e9ria de quest\u00f5es ser\u00e1 feita a voc\u00ea. Antes de passarmos por isso, vamos ver o que est\u00e1 acontecendo no comando que estamos emitindo:<\/p>\n<ul>\n<li><strong>openssl<\/strong>: esta \u00e9 a ferramenta b\u00e1sica de linha de comando para cria\u00e7\u00e3o e gerenciamento de certificados OpenSSL, chaves e outros arquivos.<\/li>\n<li><strong>req<\/strong>: este subcomando especifica que queremos usar o gerenciamento X.509 de solicita\u00e7\u00e3o de assinatura de certificado (CSR). O \u201cX.509\u201d \u00e9 um padr\u00e3o de infraestrutura de chave p\u00fablica aderido pelo SSL e o TLS para seu gerenciamento de chaves e certificados. Queremos criar um novo cert X.509, ent\u00e3o estamos usando este subcomando.<\/li>\n<li><strong>-x509<\/strong>: isso modifica ainda mais o subcomando anterior dizendo ao utilit\u00e1rio que queremos criar um certificado autoassinado em vez de gerar uma solicita\u00e7\u00e3o de assinatura de certificado, como normalmente aconteceria.<\/li>\n<li><strong>-nodes<\/strong>: isso diz ao OpenSSL para pular a op\u00e7\u00e3o de proteger nosso certificado com uma frase secreta. Precisamos que o Apache consiga ler o arquivo, sem a interven\u00e7\u00e3o do usu\u00e1rio, quando o servidor for iniciado. Uma frase secreta impediria que isso acontecesse porque ter\u00edamos que digit\u00e1-la ap\u00f3s cada rein\u00edcio.<\/li>\n<li><strong>-days 365<\/strong>: esta op\u00e7\u00e3o define a dura\u00e7\u00e3o do tempo em que o certificado ser\u00e1 considerado v\u00e1lido. Aqui, n\u00f3s configuramos ela para um ano.<\/li>\n<li><strong>-newkey rsa:2048<\/strong>: isso especifica que queremos gerar um novo certificado e uma nova chave ao mesmo tempo. N\u00e3o criamos a chave necess\u00e1ria para assinar o certificado em um passo anterior, ent\u00e3o precisamos cri\u00e1-la junto com o certificado. A por\u00e7\u00e3o <code>rsa:2048<\/code> diz a ele para criar uma chave RSA que seja de 2048 bits.<\/li>\n<li><strong>-keyout<\/strong>: esta linha diz ao OpenSSL onde colocar o arquivo gerado de chave privada que estamos criando.<\/li>\n<li><strong>-out:<\/strong> isso diz ao OpenSSL onde colocar o certificado que estamos criando.<\/li>\n<\/ul>\n<p>Como mostrado acima, essas op\u00e7\u00f5es criar\u00e3o tanto um arquivo de chave como um certificado. Algumas perguntas sobre nosso servidor ser\u00e3o feitas para incorporar as informa\u00e7\u00f5es corretamente no certificado.<\/p>\n<p>Preencha os prompts devidamente. <strong>A linha mais importante \u00e9 aquela que solicita o <code>Nome comum (por exemplo, o servidor FQDN ou o SEU nome)<\/code>. Voc\u00ea precisa digitar o nome do dom\u00ednio associado ao seu servidor ou, mais prov\u00e1vel, o endere\u00e7o IP p\u00fablico do seu servidor.<\/strong><\/p>\n<p>A totalidade dos prompt se parecer\u00e1 com isto:<\/p>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>Country Name (2 letter code) [AU]:<span class=\"highlight\">US<\/span>\r\nState or Province Name (full name) [Some-State]:<span class=\"highlight\">New York<\/span>\r\nLocality Name (eg, city) []:<span class=\"highlight\">New York City<\/span>\r\nOrganization Name (eg, company) [Internet Widgits Pty Ltd]:<span class=\"highlight\">Bouncy Castles, Inc.<\/span>\r\nOrganizational Unit Name (eg, section) []:<span class=\"highlight\">Ministry of Water Slides<\/span>\r\nCommon Name (e.g. server FQDN or YOUR name) []:<span class=\"highlight\">server_IP_address<\/span>\r\nEmail Address []:<span class=\"highlight\">admin@your_domain.com<\/span>\r\n<\/code><\/pre>\n<p>Ambos os arquivos que voc\u00ea criou ser\u00e3o colocados nos subdiret\u00f3rios apropriados em <code>\/etc\/ssl<\/code>.<\/p>\n<p><a name=\"passo-2-\u2014-configurando-o-apache-para-usar-o-ssl\" data-unique=\"passo-2-\u2014-configurando-o-apache-para-usar-o-ssl\"><\/a><a name=\"passo-2-\u2014-configurando-o-apache-para-usar-o-ssl\" data-unique=\"passo-2-\u2014-configurando-o-apache-para-usar-o-ssl\"><\/a><\/p>\n<h2 id=\"passo-2-\u2014-configurando-o-apache-para-usar-o-ssl\">Passo 2 \u2014 Configurando o Apache para usar o SSL<\/h2>\n<p>Criamos nossos arquivos de chave e certificado no diret\u00f3rio <code>\/etc\/ssl<\/code>. Agora, precisamos modificar nossa configura\u00e7\u00e3o do Apache para aproveitarmos melhor o mesmo.<\/p>\n<p>Vamos fazer alguns ajustes na nossa configura\u00e7\u00e3o:<\/p>\n<ol>\n<li>Criaremos um snippet de configura\u00e7\u00e3o para especificar configura\u00e7\u00f5es padr\u00e3o robustas do SSL.<\/li>\n<li>Vamos modificar o arquivo SSL Apache Host Virtual incluso para apontar para nossos certificados SSL gerados.<\/li>\n<li>(Recomendado) Modificaremos o arquivo de Host Virtual n\u00e3o criptografado para redirecionar automaticamente as solicita\u00e7\u00f5es para o Host Virtual criptografado.<\/li>\n<\/ol>\n<p>Quando terminarmos, devemos ter uma configura\u00e7\u00e3o SSL segura.<\/p>\n<h3 id=\"criando-um-snippet-de-configura\u00e7\u00e3o-do-apache-com-configura\u00e7\u00f5es-de-criptografia-robustas\">Criando um snippet de configura\u00e7\u00e3o do Apache com configura\u00e7\u00f5es de criptografia robustas<\/h3>\n<p>Primeiro, vamos criar um snippet de configura\u00e7\u00e3o do Apache que defina algumas configura\u00e7\u00f5es do SSL. Isso ir\u00e1 configurar o Apache com uma s\u00e9rie de criptografia SSL forte e habilitar algumas funcionalidades avan\u00e7adas que ir\u00e3o ajudar a manter nosso servidor seguro. Os par\u00e2metros que vamos definir podem ser usados por qualquer Host Virtual habilitando o SSL.<\/p>\n<p>Crie um novo snippet no diret\u00f3rio <code>\/etc\/apache2\/conf-available<\/code>. Vamos nomear o arquivo <code>ssl-params.conf<\/code> para deixar seu objetivo claro:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo nano \/etc\/apache2\/conf-available\/ssl-params.conf<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Para configurar o Apache SSL com seguran\u00e7a, utilizaremos as recomenda\u00e7\u00f5es de Remy van Elst presentes no site <a href=\"https:\/\/cipherli.st\">Cipherli.st<\/a>. Este site foi projetado para fornecer configura\u00e7\u00f5es de criptografia de f\u00e1cil acesso para softwares populares.<\/p>\n<p>[note ]As configura\u00e7\u00f5es sugeridas no site mostrado acima oferecem uma seguran\u00e7a robusta. De vez em quando, isso acontece ao custo de maior compatibilidade com o cliente. Se voc\u00ea precisa dar suporte a clientes antigos, existe uma lista alternativa que pode ser acessada clicando no link na p\u00e1gina rotulada \u201cSim, d\u00ea-me uma criptografia que funciona com o software legado \/ velho.\u201d Essa lista pode ser substitu\u00edda pelos itens copiados abaixo.<\/p>\n<p>A escolha de qual configura\u00e7\u00e3o voc\u00ea usa depender\u00e1 em grande parte do que voc\u00ea precisa suportar. Ambas fornecer\u00e3o uma \u00f3tima seguran\u00e7a.<\/p>\n<p>Para nossos prop\u00f3sitos, podemos copiar as configura\u00e7\u00f5es fornecidas em sua totalidade. Vamos fazer apenas uma pequena mudan\u00e7a. Vamos desativar o cabe\u00e7alho <code>Strict-Transport-Security<\/code> (HSTS).<\/p>\n<p>O pr\u00e9-carregamento do HSTS proporciona maior seguran\u00e7a, mas pode ter consequ\u00eancias consider\u00e1veis se for habilitado acidentalmente ou de maneira incorreta. Neste guia, n\u00e3o habilitaremos essas configura\u00e7\u00f5es, mas voc\u00ea pode modificar isso caso tenha certeza de que voc\u00ea entenda as implica\u00e7\u00f5es.<\/p>\n<p>Antes de decidir, leia com cuidado <a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP_Strict_Transport_Security\">Seguran\u00e7a de transporte estrito HTTP, ou HSTS<\/a>, mais especificamente sobre a <a href=\"https:\/\/hstspreload.appspot.com\/\">funcionalidade \u201cpr\u00e9-carregamento\u201d<\/a><\/p>\n<p>Cole a configura\u00e7\u00e3o no arquivo <code>ssl-params.conf<\/code> que abrimos:<\/p>\n<div class=\"code-label \" title=\"\/etc\/apache2\/conf-available\/ssl-params.conf\">\/etc\/apache2\/conf-available\/ssl-params.conf<\/div>\n<pre class=\"code-pre \"><code>SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\r\nSSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1\r\nSSLHonorCipherOrder On\r\n<span class=\"highlight\"># Disable preloading HSTS for now.  You can use the commented out header line that includes<\/span>\r\n<span class=\"highlight\"># the \"preload\" directive if you understand the implications.<\/span>\r\n<span class=\"highlight\">#<\/span> Header always set Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\"\r\nHeader always set X-Frame-Options DENY\r\nHeader always set X-Content-Type-Options nosniff\r\n# Requires Apache &gt;= 2.4\r\nSSLCompression off\r\nSSLUseStapling on\r\nSSLStaplingCache \"shmcb:logs\/stapling-cache(150000)\"\r\n# Requires Apache &gt;= 2.4.11\r\nSSLSessionTickets Off\r\n<\/code><\/pre>\n<p>Salve e feche o arquivo quando voc\u00ea terminar.<\/p>\n<h3 id=\"modificando-o-arquivo-padr\u00e3o-de-host-virtual-ssl-do-apache\">Modificando o arquivo padr\u00e3o de Host Virtual SSL do Apache<\/h3>\n<p>Em seguida, vamos modificar o <code>\/etc\/apache2\/sites-available\/default-ssl.conf<\/code>, o arquivo padr\u00e3o de Host Virtual SSL do Apache Se estiver usando um arquivo de bloco de servidor diferente, substitua seu nome nos comandos abaixo.<\/p>\n<p>Antes de continuar, vamos voltar para o arquivo de Host Virtual SSL original:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo cp \/etc\/apache2\/sites-available\/default-ssl.conf \/etc\/apache2\/sites-available\/default-ssl.conf.bak<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Agora, abra o arquivo de Host Virtual SSL para fazer ajustes:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo nano \/etc\/apache2\/sites-available\/default-ssl.conf<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Dentro, com a maioria dos coment\u00e1rios removidos, o arquivo de Host Virtual deve se parecer com isso por padr\u00e3o:<\/p>\n<div class=\"code-label \" title=\"\/etc\/apache2\/sites-available\/default-ssl.conf\">\/etc\/apache2\/sites-available\/default-ssl.conf<\/div>\n<pre class=\"code-pre \"><code>&lt;IfModule mod_ssl.c&gt;\r\n        &lt;VirtualHost _default_:443&gt;\r\n                ServerAdmin webmaster@localhost\r\n\r\n                DocumentRoot \/var\/www\/html\r\n\r\n                ErrorLog ${APACHE_LOG_DIR}\/error.log\r\n                CustomLog ${APACHE_LOG_DIR}\/access.log combined\r\n\r\n                SSLEngine on\r\n\r\n                SSLCertificateFile      \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem\r\n                SSLCertificateKeyFile \/etc\/ssl\/private\/ssl-cert-snakeoil.key\r\n\r\n                &lt;FilesMatch \"\\.(cgi|shtml|phtml|php)$\"&gt;\r\n                                SSLOptions +StdEnvVars\r\n                &lt;\/FilesMatch&gt;\r\n                &lt;Directory \/usr\/lib\/cgi-bin&gt;\r\n                                SSLOptions +StdEnvVars\r\n                &lt;\/Directory&gt;\r\n\r\n        &lt;\/VirtualHost&gt;\r\n&lt;\/IfModule&gt;\r\n<\/code><\/pre>\n<p>Vamos fazer alguns pequenos ajustes no arquivo. Vamos definir as coisas normais que gostar\u00edamos de ajustar em um arquivo de Host Virtual (endere\u00e7o de e-mail do ServerAdmin, ServerName, etc., e ajustar as diretivas do SSL para que apontem para nossos arquivos de certificado e chave.<\/p>\n<p>Ap\u00f3s fazer essas altera\u00e7\u00f5es, seu bloco de servidor deve se parecer com este:<\/p>\n<div class=\"code-label \" title=\"\/etc\/apache2\/sites-available\/default-ssl.conf\">\/etc\/apache2\/sites-available\/default-ssl.conf<\/div>\n<pre class=\"code-pre \"><code>&lt;IfModule mod_ssl.c&gt;\r\n        &lt;VirtualHost _default_:443&gt;\r\n                ServerAdmin <span class=\"highlight\">your_email@example.com<\/span>\r\n                <span class=\"highlight\">ServerName server_domain_or_IP<\/span>\r\n\r\n                DocumentRoot \/var\/www\/html\r\n\r\n                ErrorLog ${APACHE_LOG_DIR}\/error.log\r\n                CustomLog ${APACHE_LOG_DIR}\/access.log combined\r\n\r\n                SSLEngine on\r\n\r\n                SSLCertificateFile      \/etc\/ssl\/certs\/<span class=\"highlight\">apache-selfsigned.crt<\/span>\r\n                SSLCertificateKeyFile \/etc\/ssl\/private\/<span class=\"highlight\">apache-selfsigned.key<\/span>\r\n\r\n                &lt;FilesMatch \"\\.(cgi|shtml|phtml|php)$\"&gt;\r\n                                SSLOptions +StdEnvVars\r\n                &lt;\/FilesMatch&gt;\r\n                &lt;Directory \/usr\/lib\/cgi-bin&gt;\r\n                                SSLOptions +StdEnvVars\r\n                &lt;\/Directory&gt;\r\n\r\n        &lt;\/VirtualHost&gt;\r\n&lt;\/IfModule&gt;\r\n<\/code><\/pre>\n<p>Salve e feche o arquivo quando voc\u00ea terminar.<\/p>\n<h3 id=\"recomendado-modificando-o-arquivo-de-host-http-para-redirecionar-para-https\">(Recomendado) Modificando o arquivo de host HTTP para redirecionar para HTTPS<\/h3>\n<p>Da forma em que se encontra, o servidor fornecer\u00e1 tanto tr\u00e1fego HTTP n\u00e3o criptografado quanto HTTPS criptografado. Para maior seguran\u00e7a, \u00e9 recomend\u00e1vel redirecionar na maioria dos casos o HTTP para HTTPS automaticamente. Se n\u00e3o quiser ou precisar dessa funcionalidade, voc\u00ea pode pular essa se\u00e7\u00e3o com seguran\u00e7a.<\/p>\n<p>Para ajustar o arquivo de Host Virtual n\u00e3o criptografado para redirecionar todo o tr\u00e1fego a ser criptografado pelo SSL, podemos abrir o arquivo <code>\/etc\/apache2\/sites-available\/000-default.conf<\/code>:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>L\u00e1, dentro dos blocos de configura\u00e7\u00e3o <code>VirtualHost<\/code>, precisamos adicionar uma diretiva <code>Redirect<\/code>, que direciona todo o tr\u00e1fego para a vers\u00e3o SSL do site:<\/p>\n<div class=\"code-label \" title=\"\/etc\/apache2\/sites-available\/000-default.conf\">\/etc\/apache2\/sites-available\/000-default.conf<\/div>\n<pre class=\"code-pre \"><code>&lt;VirtualHost *:80&gt;\r\n        . . .\r\n\r\n        Redirect \"\/\" \"https:\/\/<span class=\"highlight\">your_domain_or_IP<\/span>\/\"\r\n\r\n        . . .\r\n&lt;\/VirtualHost&gt;\r\n<\/code><\/pre>\n<p>Salve e feche o arquivo quando voc\u00ea terminar.<\/p>\n<p><a name=\"passo-3-\u2014-como-ajustar-o-firewall\" data-unique=\"passo-3-\u2014-como-ajustar-o-firewall\"><\/a><a name=\"passo-3-\u2014-como-ajustar-o-firewall\" data-unique=\"passo-3-\u2014-como-ajustar-o-firewall\"><\/a><\/p>\n<h2 id=\"passo-3-\u2014-como-ajustar-o-firewall\">Passo 3 \u2014 Como ajustar o Firewall<\/h2>\n<p>Se voc\u00ea tem o firewall <code>ufw<\/code> ativado, conforme recomendado pelos guias de pr\u00e9-requisitos, pode ser necess\u00e1rio ajustar as configura\u00e7\u00f5es para permitir o tr\u00e1fego SSL. Felizmente, o Apache registra alguns perfis com o <code>ufw<\/code> na instala\u00e7\u00e3o.<\/p>\n<p>Podemos ver os perfis dispon\u00edveis digitando:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo ufw app list<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Voc\u00ea deve ver uma lista como essa:<\/p>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>Available applications:\r\n  Apache\r\n  Apache Full\r\n  Apache Secure\r\n  OpenSSH\r\n<\/code><\/pre>\n<p>Voc\u00ea pode verificar a configura\u00e7\u00e3o atual digitando:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo ufw status<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Se voc\u00ea permitiu apenas o tr\u00e1fego HTTP regular mais cedo, seu resultado pode se parecer com este:<\/p>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>Status: active\r\n\r\nTo                         Action      From\r\n--                         ------      ----\r\nOpenSSH                    ALLOW       Anywhere\r\nApache                     ALLOW       Anywhere\r\nOpenSSH (v6)               ALLOW       Anywhere (v6)\r\nApache (v6)                ALLOW       Anywhere (v6)\r\n<\/code><\/pre>\n<p>Para tamb\u00e9m admitir o tr\u00e1fego HTTPS, podemos permitir o perfil \u201cApache Full\u201d e ent\u00e3o excluir a permiss\u00e3o de perfil redundante \u201cApache\u201d:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo ufw allow &#8216;Apache Full&#8217;<\/li>\n<li class=\"line\" data-prefix=\"$\">sudo ufw delete allow &#8216;Apache&#8217;<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Agora, seu status deve se parecer com este:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo ufw status<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>Status: active\r\n\r\nTo                         Action      From\r\n--                         ------      ----\r\nOpenSSH                    ALLOW       Anywhere\r\nApache Full                ALLOW       Anywhere\r\nOpenSSH (v6)               ALLOW       Anywhere (v6)\r\nApache Full (v6)           ALLOW       Anywhere (v6)\r\n<\/code><\/pre>\n<p><a name=\"passo-4-\u2014-habilitando-as-altera\u00e7\u00f5es-no-apache\" data-unique=\"passo-4-\u2014-habilitando-as-altera\u00e7\u00f5es-no-apache\"><\/a><a name=\"passo-4-\u2014-habilitando-as-altera\u00e7\u00f5es-no-apache\" data-unique=\"passo-4-\u2014-habilitando-as-altera\u00e7\u00f5es-no-apache\"><\/a><\/p>\n<h2 id=\"passo-4-\u2014-habilitando-as-altera\u00e7\u00f5es-no-apache\">Passo 4 \u2014 Habilitando as altera\u00e7\u00f5es no Apache<\/h2>\n<p>Agora que fizemos nossas altera\u00e7\u00f5es e ajustamos nosso firewall, \u00e9 poss\u00edvel habilitar os m\u00f3dulos SSL e de cabe\u00e7alhos no Apache, habilitar nosso Host Virtual pronto para o SSL e reiniciar o Apache.<\/p>\n<p>Podemos habilitar o <code>mod_ssl<\/code>, o m\u00f3dulo SSL do Apache e o <code>mod_headers<\/code>, necess\u00e1rio para algumas das configura\u00e7\u00f5es no nosso snippet SSL, com o comando <code>a2enmod<\/code>:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo a2enmod ssl<\/li>\n<li class=\"line\" data-prefix=\"$\">sudo a2enmod headers<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Em seguida, podemos habilitar nosso Host Virtual SSL com o comando <code>a2ensite<\/code>:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo a2ensite default-ssl<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Tamb\u00e9m precisaremos habilitar nosso arquivo <code>ssl-params.conf<\/code>, para que leia nos valores que definirmos:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo a2enconf ssl-params<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Neste ponto, nosso site e os m\u00f3dulos necess\u00e1rios est\u00e3o habilitados. Devemos verificar e garantir que n\u00e3o haja erros de sintaxe em nossos arquivos. Podemos fazer isso digitando:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo apache2ctl configtest<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Se tudo for bem-sucedido, voc\u00ea receber\u00e1 um resultado que se parecer\u00e1 com este:<\/p>\n<pre class=\"code-pre \"><code><\/code><\/pre>\n<div class=\"secondary-code-label \" title=\"Output\">Output<\/div>\n<pre class=\"code-pre \"><code>AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message\r\nSyntax OK\r\n<\/code><\/pre>\n<p>A primeira linha \u00e9 apenas uma mensagem informando que a diretiva <code>ServerName<\/code> n\u00e3o est\u00e1 definida globalmente. Se voc\u00ea quiser se livrar dessa mensagem, \u00e9 poss\u00edvel definir o <code>ServerName<\/code> como o nome do dom\u00ednio do seu servidor ou o endere\u00e7o IP em <code>\/etc\/apache2\/apache2.conf<\/code>. Isso \u00e9 opcional, uma vez que a mensagem n\u00e3o causar\u00e1 problemas.<\/p>\n<p>Se seu resultado tiver <code>Syntax OK<\/code>, seu arquivo de configura\u00e7\u00e3o n\u00e3o possui erros de sintaxe. Podemos reiniciar com seguran\u00e7a o Apache para implementar nossas altera\u00e7\u00f5es:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo systemctl restart apache2<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p><a name=\"passo-5-\u2014-testando-a-criptografia\" data-unique=\"passo-5-\u2014-testando-a-criptografia\"><\/a><a name=\"passo-5-\u2014-testando-a-criptografia\" data-unique=\"passo-5-\u2014-testando-a-criptografia\"><\/a><\/p>\n<h2 id=\"passo-5-\u2014-testando-a-criptografia\">Passo 5 \u2014 Testando a criptografia<\/h2>\n<p>Agora, estamos prontos para testar nosso servidor SSL.<\/p>\n<p>Abra seu navegador Web e digite <code>https:\/\/<\/code> seguido pelo nome do dom\u00ednio ou endere\u00e7o IP do seu servidor na barra de endere\u00e7o:<\/p>\n<pre class=\"code-pre \"><code>https:\/\/<span class=\"highlight\">server_domain_or_IP<\/span>\r\n<\/code><\/pre>\n<p>Pelo fato do certificado que criamos n\u00e3o ser assinado por uma das autoridades de certificado confi\u00e1veis do seu navegador, voc\u00ea provavelmente ver\u00e1 um aviso assustador como o que est\u00e1 abaixo:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/assets.digitalocean.com\/articles\/apache_ssl_1604\/self_signed_warning.png\" alt=\"Apache self-signed cert warning\"\/><\/p>\n<p>Isso \u00e9 esperado e \u00e9 normal. S\u00f3 estamos interessados no aspecto de criptografia do nosso certificado, n\u00e3o na valida\u00e7\u00e3o de terceiros da autenticidade do nosso host. Em todo caso, clique em \u201cADVANCED\u201d e ent\u00e3o no link fornecido para prosseguir para seu host:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/assets.digitalocean.com\/articles\/apache_ssl_1604\/warning_override.png\" alt=\"Apache self-signed override\"\/><\/p>\n<p>Voc\u00ea deve ser levado para seu site. Se voc\u00ea olhar na barra de endere\u00e7o do navegador, ser\u00e1 poss\u00edvel ver um cadeado com um \u201cx\u201d sobre ele. Neste caso, isso significa apenas que o certificado n\u00e3o pode ser validado. Ela ainda est\u00e1 criptografando sua conex\u00e3o.<\/p>\n<p>Se voc\u00ea configurou o Apache para redirecionar HTTP para HTTPS, tamb\u00e9m \u00e9 poss\u00edvel verificar se o redirecionamento est\u00e1 funcionando corretamente:<\/p>\n<pre class=\"code-pre \"><code>http:\/\/<span class=\"highlight\">server_domain_or_IP<\/span>\r\n<\/code><\/pre>\n<p>Se o resultado for o mesmo \u00edcone, isso significa que seu redirecionamento funcionou corretamente.<\/p>\n<p><a name=\"passo-6-\u2014-mudando-para-um-redirecionamento-permanente\" data-unique=\"passo-6-\u2014-mudando-para-um-redirecionamento-permanente\"><\/a><a name=\"passo-6-\u2014-mudando-para-um-redirecionamento-permanente\" data-unique=\"passo-6-\u2014-mudando-para-um-redirecionamento-permanente\"><\/a><\/p>\n<h2 id=\"passo-6-\u2014-mudando-para-um-redirecionamento-permanente\">Passo 6 \u2014 Mudando para um redirecionamento permanente<\/h2>\n<p>Se seu redirecionamento funcionou corretamente e voc\u00ea tem certeza de que quer permitir apenas o tr\u00e1fego criptografado, voc\u00ea deve modificar novamente o Host Virtual do Apache n\u00e3o criptografado para tornar o redirecionamento permanente.<\/p>\n<p>Abra mais uma vez o arquivo de configura\u00e7\u00e3o do bloco do seu servidor:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Encontre a linha <code>Redirect<\/code> que adicionamos mais cedo. Adicione <code>permanent<\/code> a essa linha. Isso muda o redirecionamento de uma redirecionamento tempor\u00e1rio 302 para um redirecionamento permanente 301:<\/p>\n<div class=\"code-label \" title=\"\/etc\/apache2\/sites-available\/000-default.conf\">\/etc\/apache2\/sites-available\/000-default.conf<\/div>\n<pre class=\"code-pre \"><code>&lt;VirtualHost *:80&gt;\r\n        . . .\r\n\r\n        Redirect <span class=\"highlight\">permanent<\/span> \"\/\" \"https:\/\/<span class=\"highlight\">your_domain_or_IP<\/span>\/\"\r\n\r\n        . . .\r\n&lt;\/VirtualHost&gt;\r\n<\/code><\/pre>\n<p>Salve e feche o arquivo.<\/p>\n<p>Verifique sua configura\u00e7\u00e3o quanto a erros de sintaxe:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo apache2ctl configtest<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p>Quando estiver pronto, reinicie o Apache para tornar o redirecionamento permanente:<\/p>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<ul class=\"prefixed\">\n<li class=\"line\" data-prefix=\"$\">sudo systemctl restart apache2<\/li>\n<\/ul>\n<pre class=\"code-pre command prefixed\"><code><\/code><\/pre>\n<p><a name=\"conclus\u00e3o\" data-unique=\"conclus\u00e3o\"><\/a><a name=\"conclus\u00e3o\" data-unique=\"conclus\u00e3o\"><\/a><\/p>\n<h2 id=\"conclus\u00e3o\">Conclus\u00e3o<\/h2>\n<p>Voc\u00ea configurou seu servidor Apache para usar uma criptografia robusta para conex\u00f5es com clientes. Isso permitir\u00e1 que voc\u00ea atenda aos pedidos com seguran\u00e7a e impedir\u00e1 que agentes externos leiam seu tr\u00e1fego.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[143],"tags":[],"class_list":["post-40886","post","type-post","status-publish","format-standard","hentry","category-dicas"],"_links":{"self":[{"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/40886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=40886"}],"version-history":[{"count":3,"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/40886\/revisions"}],"predecessor-version":[{"id":40889,"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=\/wp\/v2\/posts\/40886\/revisions\/40889"}],"wp:attachment":[{"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/heinzpechner.ddns.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}