Nos artigos anteriores, efetuamos a instalação do sistema Raspbian (neste exemplo, Raspbian GNU/Linux 8 – Kernel 4.9) na Raspberry Pi e configuramos o acesso remoto através de SSH e VNC, permitindo assim que a Raspberry Pi seja acessada pela rede, dispensando o uso de monitor, teclado e mouse. O objetivo agora é instalar o Apache (servidor web) na Pi, permitindo a ela hospedar sites e/ou aplicações web, como para o controle do GPIO (portas programáveis de entrada e saída de dados).
Instalação do Apache e do OpenSSL:
Para começarmos é preciso acessar a Pi através de SSH ou VNC para acesso ao Terminal (neste exemplo utilizamos o SSH). No terminal, entre com o comando: $ sudo apt-get install apache2 openssl.
Após esta instalação o Apache já estará rodando na Pi. Você pode confirmar o serviço com o comando $ netstat -tupan | grep apache2 (80 LISTEN) ou acessá-lo através do endereço IP da Pi, neste caso http://192.168.25.81, no navegador de um outro computador da rede.
Configuração de SSL (Certificado Digital):
1 – Habilite o módulo de SSL com o comando:
$ sudo a2enmod ssl
2 – Crie um diretório para armazenar o certificado digital que criaremos em seguida com o comando:
$ sudo mkdir -p /etc/ssl/localcerts
3 – Crie um certificado digital com o comando abaixo. Será necessário entrar com informações (podem ser fictícias) como código do país, estado, cidade, companhia, departamento, domínio (site) e email:
$ sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
*Se necessário, altere as configurações do certificado de acordo com sua necessidade.
4 – Crie um link para o arquivo de configuração padrão do SSL com o comando:
$ sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
5 – Edite o arquivo de configuração padrão do SSL com o comando:
$ sudo nano /etc/apache2/sites-enabled/000-default-ssl.conf
Então:
– Confirme se o parâmetro SSLEngine está habilitado:
SSLEngine on
– Modifique ou insira (neste caso comentando o parâmetro padrão) o caminho dos certificados gerados acima:
SSLCertificateFile /etc/ssl/localcerts/apache.pem SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
*Use o comando Ctrl + w para localizar, conforme exibido na imagem abaixo.
6 – Salve o arquivo (tecle Ctrl + x, digite Y e tecle Enter para confirmar) e então reinicie o serviço do Apache com o comando:
$ sudo /etc/init.d/apache2 restart
Após esta configuração o Apache já estará respondendo a requisições de HTTPS. Você pode confirmar o serviço, agora rodando também na porta 443, com o comando $ netstat -tupan | grep apache2 (80 / 443 LISTEN) ou acessá-lo através do endereço IP da Pi, neste caso https://192.168.25.81, no navegador de um outro computador da rede.
*Como é um certificado local, sem a validação de um órgão certificador, é preciso confirmar uma exceção de segurança do navegador no primeiro acesso.
Configuração de NAT (Port Forward) para acesso ao Apache pela Internet
Efetuadas as configurações acima, o Apache já pode ser acessado pela rede local, porém, para acesso pela Internet é preciso efetuar uma configuração de NAT (Network Address Translation / Port Forwarding) no Firewall ou Roteador da rede. Neste exemplo, a rede possui um link ADSL com IPv4 dinâmico e, por esta razão, o serviço do NO-IP foi utilizado para o gerenciamento de DNS dinâmico.
DDNS (Dynamic Domain Name System) é uma funcionalidade criada para atualizar automaticamente um servidor de nomes (DNS) permitindo o acesso à redes com IP dinâmico através de um nome de domínio.
As configurações de NAT foram efetuadas no roteador da operadora, de acordo com as instruções abaixo:
1 – Pela rede local, abra o navegador e acesse o roteador através do seu IP padrão, neste caso, http://192.168.25.1 (VIVO/GVT). Você precisará das credenciais de acesso ao equipamento.
2 – Nas configurações avançadas do sistema, localize a função de Port Forwarding ou NAT (muitos roteadores também chamam esta função de Virtual Server) e crie uma regra para encaminhar as solicitações de acesso à porta 443 ao IP da Raspberry PI, neste caso, 192.168.25.81, conforme ilustrado abaixo:
3 – Salve a configuração efetuada e, se necessário, reinicie o roteador.
4 – Use um celular com acesso 3G/4G para testar o acesso externo. Caso tenha um serviço de DDNS ativado e configurado, basta entrar com o seu domínio no navegador do celular. Caso não tenha, use o IP público atual do seu link de Internet (use o www.ping.eu para verificar seu IP público atual).
Obs.: caso precise efetuar algum ajuste avançado no Apache, acesse os arquivos /etc/apache2/apache2.conf – Configurações gerais
/etc/apache2/ports.conf – Portas padrão
/etc/apache2/sites-available/default – Configuração de sites
/var/log/apache2 – Configuração de erros.
*Com referências de: Debian – Self-Signed Certificate, WikiHow – Servidor Web – Raspberry-Pi, Raspberry Pi – Apache, Raspberry PI Projects – LAMP, Study Raspberry Pi – SSL for Apache, Instructables – Web Interface.
Olá, estou tentando fazer este tutorial. Preciso configurar a página html para chamar dois Ips de camêras. Será que poderia me dar umas dicas. Não sei como altero.
Olá! Caso precise de um código html simples, para direcionar para um IP/URL, pode usar este abaixo, alterando o https://daniel.scota.com.br para o IP desejado. Mas, se precisa de algo relacionado a redirecionamento de portas, pesquise por configurações de firewall (portas / nat).
https://pastebin.pl/view/a1fb508d
Porque não informa o link do artigo anterior? Não consegui encontrar pra começar do zero
Olá, Alex! No final do artigo, no rodapé do blog, há uma chamada para o artigo anterior / próximo a este 😉