segunda-feira, 14 de agosto de 2023

Instalar OBS Studio e VLC no Slackware 15

À MODA [QUASE] SLACK

   Tomem essa instalação como uma forma de aprendizado, pois os pacotes instalados aqui tem um padrão que será praticamente o mesmo no Slackware em relação à SlackBuilds e as instalações de um modo geral.

   O OBS Studio (Open Broadcaster Software) é um software livre e de código aberto para gravação de vídeo e transmissão em tempo real.
Ele captura e mistura vídeo/áudio em tempo real de alto desempenho, com cenas ilimitadas nas quais você pode alternar através de transições personalizadas sem interrupções.

   Primeiro faremos [quase] à moda Slack (só para os fortes... ou teimosos)!
A vantagem é que assim você escolhe a versão que quer instalar ou instala o programa mais atual possível.

   A sequência de instalação de pacotes com SlackBuild praticamente será a seguinte não importando o programa (software, pacote, etc) a ser instalado:

1 - Logue como root;
2 - Atualize o sistema;
3 - Baixe sempre primeiro o SlackBuild (pacote.tar.gz);
4 - Descompacte-o;
5 - Entre na pasta descompactada;
6 - Baixe o fonte (source);
7 - Execute o SlackBuild;
8 - Copie o pacote para a pasta;
9 - Instale o pacote tgz criado.

   Estritamente à moda Slack é você mesmo escrever os fontes, compilá-los e instalá-los.

   Na segunda parte tem uma maneira mais fácil (para os fracos).
   O programa instalado é o que está nos repositórios, geralmente é de uma versão anterior à mais atual.

   A instalação é para 64 bits, mas é só mudar o arquivo se teu sistema for 32 bits que o procedimento é o mesmo.
   Maiores informações e pacotes você encontra aqui:

Abra o terminal e logue como root.
$ su -

Verificando a versão do OpenGL, necessário para o OBS Studio:
# glxinfo | grep "OpenGL" <<< o OpenGL deverá ser maior ou igual a 3.3, senão você deverá atualizar o OpenGL.

OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.3.5

Atualizando o sistema:
# slackpkg update

Salvaremos tudo na pasta obs_studio criada em /opt:
# cd /opt
# mkdir obs_studio
# cd obs_studio

   Siga as instalações na ordem: faac, jack, luajit, libfdk-aac, mbedtls, rtmpdump, x264, nlohmann_json, vlc, obs-studio.


FAAC
Este é o único que será diferente dos outros.
# wget https://github.com/knik0/faac/archive/1_30/faac-1_30.tar.gz
# tar -xzf faac-1_30.tar.gz
# cd faac-1_30
# ./bootstrap
# ./configure
# make
# make install

Deverá terminar:
make[2]: Saindo do diretório '/opt/obs_studio/faac-1_30'

make[1]: Saindo do diretório '/opt/obs_studio/faac-1_30'

Caso der ERROR em algum momento você deverá refazer o processo e caso o error persistir você deve ler a mensagem de erro e tentar solucioná-lo, pois não é o escopo do artigo.
Você pode olhar dentro do arquivo INSTALL que estão ali todos os comandos para compilar o pacote.

Voltando um diretório:
# cd ..


JACK
E seguindo na ordem, agora o pacote JACK:
# removepkg jack2 <<< removendo alguma provável instalação anterior
# removepkg jack

Download do pacote jack.tar.gz para facilitar e não precisar alterar arquivos:
# wget https://slackbuilds.org/slackbuilds/15.0/audio/jack.tar.gz

Descompactando:
# tar -xzf jack.tar.gz

Entrando no diretório:
# cd jack

Baixando o pacote dos fontes, necessário para a compilação:
# wget https://github.com/jackaudio/jack2/archive/v1.9.21/jack2-1.9.21.tar.gz
# ls <<< para conferir se o arquivo foi baixado

Compilando:
# ./jack.SlackBuild

Deverá terminar dizendo que o pacote tgz foi criado:
usr/share/dbus-1/services/
usr/share/dbus-1/services/org.jackaudio.service

Slackware package /tmp/jack-1.9.21-x86_64-1_SBo.tgz created.

Copiando para a pasta jack o pacote tgz criado:
# cp /tmp/jack-1.9.21-x86_64-1_SBo.tgz . <<< no final tem um ponto (.) separado do tgz por um espaço em branco, significa que o arquivo deve ser copiado para o diretório no qual se está.
# ls

Instalando:
# installpkg jack-1.9.21-x86_64-1_SBo.tgz

Terminará:
Executing install script for jack-1.9.21-x86_64-1_SBo.tgz.
Package jack-1.9.21-x86_64-1_SBo.tgz installed.

Você pode conferir dentro do diretório /usr/bin que foram criados uns 40 arquivos jack.
As instalações são rápidas, o que demora são as compilações.


LUAJIT
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/development/luajit.tar.gz
# tar -xzf luajit.tar.gz
# ls
# cd luajit
# wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
# ./luajit.SlackBuild

Terminará:
Slackware package /tmp/luajit-2.0.5-x86_64-2_SBo.tgz created.

# cp /tmp/luajit-2.0.5-x86_64-2_SBo.tgz .
# installpkg luajit-2.0.5-x86_64-2_SBo.tgz

Terminará:
Executing install script for luajit-2.0.5-x86_64-2_SBo.tgz.
Package luajit-2.0.5-x86_64-2_SBo.tgz installed.

De novo, caso quiser conferir em /usr/bin.


LIBFDK-AAC
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/libraries/libfdk-aac.tar.gz
# ls
# tar -xzf libfdk-aac.tar.gz
# ls
# cd libfdk-aac
# wget https://github.com/mstorsjo/fdk-aac/archive/v2.0.2/fdk-aac-2.0.2.tar.gz
# ls
# ./libfdk-aac.SlackBuild

Terminará:
Slackware package /tmp/libfdk-aac-2.0.2-x86_64-1_SBo.tgz created.

# cp /tmp/libfdk-aac-2.0.2-x86_64-1_SBo.tgz .
# ls
# installpkg libfdk-aac-2.0.2-x86_64-1_SBo.tgz

Terminará:
Executing install script for libfdk-aac-2.0.2-x86_64-1_SBo.tgz.
Package libfdk-aac-2.0.2-x86_64-1_SBo.tgz installed.


MBEDTLS
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/libraries/mbedtls.tar.gz
# ls
# tar -xzf mbedtls.tar.gz
# cd mbedtls
# wget https://github.com/ARMmbed/mbedtls/archive/mbedtls-2.16.8/mbedtls-mbedtls-2.16.8.tar.gz
# ls
# ./mbedtls.SlackBuild

Terminará:
Slackware package /tmp/mbedtls-2.16.8-x86_64-1_SBo.tgz created.

# cp /tmp/mbedtls-2.16.8-x86_64-1_SBo.tgz .
# installpkg mbedtls-2.16.8-x86_64-1_SBo.tgz

Terminará:
Executing install script for mbedtls-2.16.8-x86_64-1_SBo.tgz.
Package mbedtls-2.16.8-x86_64-1_SBo.tgz installed.


RTMPDUMP
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/multimedia/rtmpdump.tar.gz
# tar -xzf rtmpdump.tar.gz
# cd rtmpdump
# wget http://ponce.cc/slackware/sources/repo/rtmpdump-20210219_f1b83c1.tar.xz
# ls
# ./rtmpdump.SlackBuild

Terminará:
Slackware package /tmp/rtmpdump-20210219_f1b83c1-x86_64-1_SBo.tgz created.

# cp /tmp/rtmpdump-20210219_f1b83c1-x86_64-1_SBo.tgz .
# ls
# installpkg rtmpdump-20210219_f1b83c1-x86_64-1_SBo.tgz

Terminará:
Executing install script for rtmpdump-20210219_f1b83c1-x86_64-1_SBo.tgz.
Package rtmpdump-20210219_f1b83c1-x86_64-1_SBo.tgz installed.


X264
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/multimedia/x264.tar.gz
# tar -xzf x264.tar.gz
# cd x264
# wget https://sources.liwjatan.org/x264/x264-git_20210613_5db6aa6c.tar.lz
# ls
# ./x264.SlackBuild

Terminará:
Slackware package /tmp/x264-git_20210613_5db6aa6c-x86_64-1_SBo.tgz created.

# cp /tmp/x264-git_20210613_5db6aa6c-x86_64-1_SBo.tgz .
# installpkg x264-git_20210613_5db6aa6c-x86_64-1_SBo.tgz

Terminará:
Executing install script for x264-git_20210613_5db6aa6c-x86_64-1_SBo.tgz.
Package x264-git_20210613_5db6aa6c-x86_64-1_SBo.tgz installed.


NLOHMANN_JSON
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/libraries/nlohmann_json.tar.gz
# tar -xzf nlohmann_json.tar.gz
# ls
# cd nlohmann_json
# wget https://github.com/nlohmann/json/archive/v3.11.2/json-3.11.2.tar.gz
# ls
# ./nlohmann_json.SlackBuild

Terminará (este demora um bocado):
Slackware package /tmp/nlohmann_json-3.11.2-x86_64-1_SBo.tgz created.

# cp /tmp/nlohmann_json-3.11.2-x86_64-1_SBo.tgz .
# installpkg nlohmann_json-3.11.2-x86_64-1_SBo.tgz

Terminará:
#
Package nlohmann_json-3.11.2-x86_64-1_SBo.tgz installed.


VLC
Caso você já tiver o VLC instalado aconselho a desinstalar e depois instalar este.
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/multimedia/vlc.tar.gz
# tar -xzf vlc.tar.gz
# cd vlc

Agora vamos precisar mexer no arquivo vlc.SlackBuild para evitar o erro "configure: error: Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.":
# vim vlc.SlackBuild <<< usei o vim, use teu editor preferido.

Acrescente as duas últimas linhas (--disable-lua \ e --enable-luajit=2.0.5 \) na seguinte posição do arquivo, por volta da linha 134:
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--mandir=/usr/man \
--docdir=/usr/doc/vlc-$VERSION \
--localstatedir=/var \
--build=$ARCH-slackware-linux \
--enable-qt=5 \
--enable-merge-ffmpeg \
--disable-upnp \
--disable-libplacebo \
--disable-lua \
--enable-luajit=2.0.5 \
$wayland \

Salve e saia do arquivo.

# wget https://get.videolan.org/vlc/3.0.18/vlc-3.0.18.tar.xz
# ls
# chmod +x vlc.SlackBuild
# ./vlc.SlackBuild

Ignore as mensagens em rosa e azul e os "warning".
O VLC também demorará um bocado, aguarde terminar.

Terminando como abaixo é porque deu tudo certo:
Slackware package /tmp/vlc-3.0.18-x86_64-1_SBo.tgz created.

# cp /tmp/vlc-3.0.18-x86_64-1_SBo.tgz .
# installpkg vlc-3.0.18-x86_64-1_SBo.tgz

Terminará:
Executing install script for vlc-3.0.18-x86_64-1_SBo.tgz.
Package vlc-3.0.18-x86_64-1_SBo.tgz installed.


OBS Studio
# cd ..
# wget https://slackbuilds.org/slackbuilds/15.0/multimedia/obs-studio.tar.gz
# tar -xzf obs-studio.tar.gz
# cd obs-studio

Aqui precisa dos dois fontes:
# wget https://cdn-fastly.obsproject.com/downloads/cef_binary_4638_linux64.tar.bz2
# wget https://sourceforge.net/projects/slackbuildsdirectlinks/files/obs/obs-studio-c58e511813c33e93da7637d50aa431ae0cddda0c.tar.gz
# ls
# chmod +x obs-studio.SlackBuild
# ./obs-studio.SlackBuild

Demorará um bocado e terminará:
Slackware package /tmp/obs-studio-29.1.3-x86_64-1_SBo.tgz created.

# cp /tmp/obs-studio-29.1.3-x86_64-1_SBo.tgz .
# installpkg /tmp/obs-studio-29.1.3-x86_64-1_SBo.tgz

Terminará:
Executing install script for obs-studio-29.1.3-x86_64-1_SBo.tgz.
Package obs-studio-29.1.3-x86_64-1_SBo.tgz installed.

E está terminado, done, feito!


Figura 01


   Para qualquer SlackBuild aconselho a fazer esse procedimento, pois é mais garantido e menos sujeito a erros.
   Todo e qualquer SlackBuild aconselho a realizar esse procedimento, não importando a versão dos arquivos.
   Os sources (aqueles pacotes que tem o número da versão, logo abaixo de "Source Downloads") não tem o arquivo SlackBuild, por isso para facilitar baixamos os dois pacotes, pois o pacote "Download SlackBuild" é o que tem o arquivo Slackbuild.

   Você pode acessar o link
https://slackbuilds.org/repository/15.0/multimedia/obs-studio/
e baixar os pacotes com cliquezinhos do mouse, mas tenha o cuidado de organizá-los numa pasta.
   Optei pelo procedimento acima porque ficou mais organizada a sequência.


MANEIRA FÁCIL

Verificando a versão do OpenGL, necessário para o OBS Studio:
# glxinfo | grep "OpenGL" <<< o OpenGL deverá ser maior ou igual a 3.3, senão você deverá atualizar o OpenGL.

OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.3.5

# slackpkg update
# cd /opt

Escolha se for 15.0
# wget http://www.slackware.com/~alien/slackbuilds/obs-studio/pkg64/15.0/obs-studio-28.1.2-x86_64-1alien.txz

Ou se for current
# wget http://www.slackware.com/~alien/slackbuilds/obs-studio/pkg64/current/obs-studio-28.1.2-x86_64-1alien.txz

# upgradepkg --install-new obs-studio-28.1.2-x86_64-1alien.txz

Aparecerá algo parecido como abaixo:

+==============================================================================
| Installing new package ./obs-studio-28.1.2-x86_64-1alien.txz
+==============================================================================

Verifying package obs-studio-28.1.2-x86_64-1alien.txz.
Installing package obs-studio-28.1.2-x86_64-1alien.txz:
PACKAGE DESCRIPTION:
# obs-studio (software for video recording and live streaming)
#
# OBS-studio is software for video recording and live streaming.
# It allows to create scenes made up of multiple sources including
# window captures, images, text, browser windows, webcams,
# capture cards and more.
# The interface makes it easy to transition between scenes and has
# a powerful audio mixer with per-stream filters.
# OBS supports all major streaming platforms.
#
# See also: https://obsproject.com/
Executing install script for obs-studio-28.1.2-x86_64-1alien.txz.
Package obs-studio-28.1.2-x86_64-1alien.txz installed.

Depois, se for Xfce, vá em Aplicações > Multimídia > deverá estar OBS Studio.


Figura 02



Referências






quinta-feira, 10 de agosto de 2023

Instalar certificado SSL/TLS digital válido gratuito no Linux



INTRODUÇÃO

Um certificado SSL (Secure Sockets Layer) é um tipo de certificado digital que é usado para autenticar a identidade de um website e proteger a comunicação entre o website e os usuários que o acessam.

O SSL é um protocolo de segurança que criptografa a conexão entre o navegador do usuário e o servidor do website, garantindo que a informação enviada e recebida seja mantida privada e segura contra hackers e interceptações.

Os certificados SSL são emitidos por autoridades certificadoras confiáveis e contêm informações sobre o nome do proprietário do website, a validade do certificado e a chave pública usada para criptografar a conexão. Quando um usuário visita um site com um certificado SSL válido, seu navegador exibe um ícone de cadeado na barra de endereço para indicar que a conexão é segura.

Um certificado SSL (Secure Sockets Layer) é um certificado digital que criptografa e autentica a comunicação entre um navegador da web e um servidor da web. Ele é usado para proteger a privacidade dos usuários e garantir que as informações transmitidas entre o navegador e o servidor sejam seguras e privadas.

Os certificados SSL são usados em sites que lidam com informações confidenciais, como informações de login, informações de pagamento ou informações pessoais dos usuários. Eles ajudam a prevenir ataques de hackers e garantem que as informações não sejam interceptadas ou roubadas durante a transmissão.

Os certificados SSL são emitidos por autoridades certificadoras confiáveis e contêm informações sobre o proprietário do site, a data de validade do certificado e a chave pública usada para criptografar as informações. Quando um usuário visita um site com um certificado SSL válido, o navegador exibe um cadeado na barra de endereço, indicando que a conexão é segura. Isso transmite confiança e oferece garantia para quem está visitando o site.

O certificado que usaremos aqui será o da Let's Encrypt que utiliza a ferramenta Certbot para instalar o certificado.

O Certbot é uma ferramenta de software gratuita e de código aberto para usar automaticamente os certificados Let's Encrypt em sites administrados manualmente para habilitar o HTTPS.

O Certbot é feito pela Electronic Frontier Foundation (EFF), uma organização sem fins lucrativos 501(c)3 (501(c)3 é um item da legislação tributária norte-americana que trata de organizações sem fins lucrativos que têm direitos à isenção de impostos) com sede em San Francisco, CA, que defende a privacidade digital, a liberdade de expressão e a inovação.

O antigo protocolo SSL, atualmente TLS (Transport Layer Security), geralmente designado por SSL/TLS, começou a ser usado há quase 25 anos, sendo que a designação correta atual é TLS, mas as as iniciais SSL permaneceram, por isso a nova versão do protocolo ainda é comumente referida pelo antigo nome.

Muitos provedores de hospedagem possuem ferramentas internas para habilitar o HTTPS. Antes de usar o Certbot, verifique se o seu provedor de hospedagem é um deles .

Caso não utilize um provedor de hospedagem e tenha seu site hospedado num servidor em casa ou na sua empresa, então este artigo lhe será muito útil.

As distribuições testadas foram os Debian 10, 11 e 12 e o Ubuntu 22.04, todos no Apache2, porém, acredito que a instalação servirá para a maioria das distribuições.

INSTALANDO

Na própria página oficial do Certbot encontramos instruções de instalação para várias distribuições Linux:

Basta acessar a página, escolher o software (Apache, Nginx, etc) e escolher o sistema operacional e aparecerão instruções de instalação.

Contudo, a instalação aqui demonstrada procurou evitar as sugestões da página oficial, pois a maioria das instalações ali sugeridas pedem primeiro a instalação do Snapd, todavia, não utilizei o Snapd para evitar mais camadas intermediárias, entretanto, caso você queira, utilize o snap.

*** LEIA ATÉ O FINAL ANTES DE SAIR EXECUTANDO COMANDOS ***

Parece complicado, mas a sequência de comandos é curtinha. Optei por dar explicações a mais do que o necessário. Os comandos são utilizados como root ou sudo, se quiser, e devem ser executados na ordem abaixo:

# apt-get update
# apt-get install certbot python3-certbot-apache
# systemctl reload apache2
# apache2ctl configtest

Deverá aparecer Syntax Ok.

Agora antes de continuar dando o último comando veja o arquivo de configuração teu_site.conf (ou 000-default.conf ou com o nome que você deu) em /etc/apache2/sites-available e verifique se o parâmetro ServerName está com www, por exemplo: www.exemplo.com.br.

Se não estiver, coloque e dê um reload no Apache2 e teste abrindo o navegador.

Porém, depois colocando as configurações oferecidas na próxima página provavelmente não terá esse problema.

Agora escolha como você gostaria de executar o Certbot.

Execute o comando abaixo para obter um certificado e fazer com que o Certbot edite sua configuração do apache automaticamente ativando o acesso HTTPS em uma única etapa.

# certbot --apache

Ou apenas obtenha um certificado.

Se você se sentir mais conservador e quiser fazer as alterações na configuração do Apache manualmente, execute este comando:

# certbot certonly --apache
(dê preferência para este comando)

ou

# certbot certonly --apache -d exemplo.com.br -d www.exemplo.com.br

este comando já indica o domínio/site para o qual deve ser gerado o certificado.

Sugiro FORTEMENTE que utilizem o comando "certbot certonly --apache" porque vamos configurar o Apache2 manualmente, sendo que deixarei um exemplo de arquivo "meu_site.conf" que deverá ficar no diretório /etc/apache2/sites-available.

Com o comando "certbot --apache", sem certonly, a ferramenta realiza automaticamente as configurações dos arquivos e isso trouxe problemas com alguns programas como, por exemplo: o PgAdmin4-web perdeu o acesso a conexão com o servidor. Esse foi um dos softwares que saíram feridos na realização das instalações, mas eles passam bem no momento.

Tal fato aconteceu porque com o comando "certbot --apache" uma das perguntas que aparecem é esta:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Caso escolher a opção 1, para não redirecionar automaticamente todas as conexões para HTTPS você deverá configurar manualmente os redirects nos arquivos, porém, ainda assim o Certbot se mete em algumas outras configurações do Apache.

Caso escolher a opção 2, para redirecionar automaticamente todas as conexões e mesmo ali dizendo que você pode desfazer isso (You can undo this) editando seus arquivos de configurações do Apache, ainda assim não é uma boa opção, pois o Cerbot se entranha no Apache.

EXECUTE o comando:

# certbot certonly --apache

e responda algumas perguntas e forneça um e-mail.

Responda Yes para todas ou, se quiser, responda No para a pergunta que pede se a Electronic Frontier Foundation (EFF) pode compartilhar seu email para receber mensagens dela.

Aparecerá algo parecido com o que está abaixo:

Plugins selected: Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): seu@email.com.br

  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(A)gree/(C)ancel: A

  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(Y)es/(N)o: Y

Com o comando certbot certonly --apache uma das perguntas que aparecerão a seguir é a pergunta que pede para escolher em qual site gerar o certificado.


O Certbot "pega" as informações do ServerName e do ServerAlias dos arquivos do Apache2, por exemplo:

ServerName www.exemplo.com.br:80
ServerAlias exemplo.com.br exemplo exemplo2

Segundo a documentação do Apache2 a sintaxe do ServerName é:

ServerName fully-qualified-domain-name[:port]

Ou seja, www.exemplo.com.br:80 ou seguido da porta utilizada, porém, na própria documentação diz que se não for colocada a porta o Apache2 procura a porta indicada no virtualhost.

Depois no arquivo de configuração veremos como isso se dá na prática e que colocar www.exemplo.com.br ou exemplo.com.br no ServerName faz muita diferença.

A sintaxe do ServerAlias é:

ServerAlias hostname hostname ...

<VirtualHost *>
ServerName server.domain.com
ServerAlias server server2.domain.com server2
# ...
</VirtualHost>

Caso o Certbot sugira duas opções de sites para instalar o certificado, por exemplo:

1. exemplo.com.br
2. www.exemplo.com.br

escolha sempre a opção com www e procure verificar no arquivo de configuração exemplo.conf em sites-available se o parâmetro ServerName está com www.

Caso ofereça somente uma opção escolha essa mesma, óbvio.

Depois seguirá:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for exemplo.conf
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/exemplo.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/exemplo.conf
Enabling available site: /etc/apache2/sites-available/exemplo.conf

  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations! You have successfully enabled https://www.exemplo.com.br

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.exemplo.com.br/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/www.exemplo.com.br/privkey.pem
Your cert will expire on 2019-10-24. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Lets Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Em /etc/letsencrypt/live/www.exemplo.com.br/fullchain.pem está o caminho para o certificado.

Em /etc/letsencrypt/live/www.exemplo.com.br/privkey.pem está o caminho para a chave.

Resumindo a sequência de comandos:

# apt-get update
# apt-get install certbot python3-certbot-apache
# systemctl reload apache2
# apache2ctl configtest
# certbot certonly --apache

Veremos a seguir a configuração do arquivo meu_site.conf que fica em /etc/apache2/sites-available.


CONFIGURANDO

RENOVAÇÃO DOS CERTIFICADOS
O certificado auto-assinado é válido por 90 dias. No entanto, este pode ser renovado quando estiver prestes a expirar nos últimos 30 dias.

RENOVAÇÃO MANUAL
O processo de renovação dos certificados Let's Encrypt é facilitado pelo certbot que reutiliza os parâmetros usados na criação do certificado.

Os certificados são renovados apenas se estiverem prestes a expirar.

Caso tente renovar antes do término do prazo de 90 dias dará um aviso de que não foi possível renovar:

# certbot renew

Saving debug log to /var/log/letsencrypt/letsencrypt.log

-----------------------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/exemplo.com.conf
-----------------------------------------------------------------------------------------------
Cert not yet due for renewal

The following certs are not due for renewal yet:
/etc/letsencrypt/live/home.example.com/fullchain.pem (skipped)
No renewals were attempted.

----------------------------------------------------------------------------------------------

Antes de renovar pode fazer uma simulação com:

# certbot renew --dry-run

RENOVAÇÃO AUTOMÁTICA
Opcionalmente, pode-se criar uma tarefa agendada no Cron para proceder à renovação automática dos certificados quando estes estiverem prestes a expirar.

Durante a instalação o certbot configura essa tarefa de forma automática.

Você pode vislumbrar o arquivo com:

# vim /etc/cron.d/certbot
* ou use teu editor de texto predileto.

# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc.  Renewal will only occur if expiration
# is within 30 days.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew

Para adicionar um domínio:
# certbot-auto --expand -d dominio1.com.br,dominio2.com.br

Para deletar um certificado:
# certbot revoke --cert-path /etc/letsencrypt/live/www.exemplo.com/fullchain.pem

Para ver o status e se o certificado está ativo e ver informações como data, etc:
# systemctl status certbot.timer

Arquivo meu_site.conf:
# cd /etc/apache2/sites-available
# vim meu_site.conf

Lembrando que o arquivo meu_site.conf você já deverá tê-lo criado na instalação e configuração do Apache2.

Aqui chamaremos de exemplo.conf.
# vim exemplo.conf

Coloque o seguinte dentro do arquivo e/ou adapte para as tuas configurações:

<VirtualHost *:80>
   ServerName www.exemplo.com.br
   ServerAlias exemplo.com.br
   Redirect permanent / https://www.exemplo.com.br/
   # ErrorLog ${APACHE_LOG_DIR}/www.exemplo.com.br/www-error.log
   # CustomLog ${APACHE_LOG_DIR}/www.exemplo.com.br/www-access.log combined
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
#
<VirtualHost _default_:443>
   ServerName exemplo.com.br
   Redirect permanent / https://www.exemplo.com.br/
   SSLProxyEngine on
   SSLEngine on
   SSLCertificateFile        /etc/letsencrypt/live/www.exemplo.com.br/cert.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/www.exemplo.com.br/privkey.pem
   SSLCaCertificateFile   /etc/letsencrypt/live/www.exemplo.com.br/fullchain.pem
</VirtualHost>
#
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin admin@exemplo.com.br
                ServerName www.exemplo.com.br
                DocumentRoot /var/www/exemplo.com.br
                SSLEngine on
    SSLCertificateFile        /etc/letsencrypt/live/www.exemplo.com.br/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.exemplo.com.br/privkey.pem
    SSLCaCertificateFile   /etc/letsencrypt/live/www.exemplo.com.br/fullchain.pem
                <FilesMatch ".(cgi|shtml|phtml|php)$">
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                </Directory>
                BrowserMatch "MSIE [2-6]"
                                nokeepalive ssl-unclean-shutdown
                                downgrade-1.0 force-response-1.0
                BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
        </VirtualHost>
</IfModule>

Coloque teu site no lugar de www.exemplo.com.br e acrescente as tuas configurações no arquivo, se quiser. Salve e saia do arquivo e execute:

Para criar um link com sites-enabled, se já não tiver:
# a2ensite exemplo.conf

Para dar um reload nas configurações:
# systemctl reload apache2

Para reiniciar o Apache2:
# systemctl restart apache2

Teste abrindo o navegador e digitando na barra de endereços:

www.exemplo.com.br

e verá teu site abrir com HTTPS e o cadeado ao lado.

Caso isso não aconteça ou que apareça aquela página escrota de "site não confiável", certificado inválido, etc, pode ser que seja a tua primeira vez com o Certbot, então acesse o e-mail que tu cadastrou na instalação e clique no link do e-mail enviado pelo Certbot para ativar. As vezes é necessário, as vezes não.

Repare que temos três linhas:

SSLCertificateFile         /etc/letsencrypt/live/exemplo.com.br/cert.pem
SSLCertificateKeyFile  /etc/letsencrypt/live/exemplo.com.br/privkey.pem
SSLCaCertificateFile    /etc/letsencrypt/live/exemplo.com.br/fullchain.pem

  • SSLCertificateFile - arquivo de dados de certificado X.509 codificado por PEM do servidor ou identificador de token; aponta para um arquivo com os dados do certificado.
  • SSLCertificateKeyFile - arquivo de chave privada codificado por PEM do servidor; aponta para o arquivo de chave privada.
  • SSLCaCertificateFile - arquivo de certificados CA codificados por PEM concatenados para autenticação do cliente; define o arquivo tudo-em-um onde são montados os Certificados das Autoridades Certificadoras (CA).

PEM - significa Privacy Enhanced Mail (E-mails reforçados para privacidade). O formato PEM é frequentemente usado para representar certificados, solicitações de certificado, cadeias de certificados e chaves. A extensão típica para um arquivo formatado como PEM é . pem, mas não precisa ser. É usado para estabelecer um canal de comunicação seguro entre um servidor da Web e um navegador. É codificado em Base64 e pode conter uma chave privada, certificado de servidor e/ou uma combinação de outros certificados.

Grosso modo, PEM é um formato de arquivo contêiner que define a estrutura e o tipo de codificação do arquivo usado para armazenar os dados.

A linha repetida nos VirtualHosts 80 e 443:

Redirect permanent / https://www.exemplo.com.br/

fazem o redirecionamento de todas as conexões HTTP para HTTPS, ou seja, se alguém acessar teu site com http://www.exemplo.com.br será sempre automaticamente redirecionado para https://www.exemplo.com.br.

Caso tiver arquivos 000-default.conf aconselho a executar:
# mv 000-default.conf 000-default.conf.bkp

As linhas ServerName e ServerAlias deixe-as como estão.

Pode testar colocando ServerName e ServerAlias, os dois somente com www.exemplo.com.br ou com exemplo.com.br e verá que teu site poderá ficar lento ou aparecer o erro ERR_CONNECTION_REFUSED. O Apache é um cara bem sensível.

As linhas com BrowserMatch, pesquise no link com mod_setenvif abaixo.

A título de curiosidade, no arquivo README.Debian.gz do Apache2 encontramos informações interessantíssimas.

Caminho no Debian, procure o caminho na tua distribuição:
# vim /usr/share/doc/apache2/README.Debian.gz


REFERÊNCIAS