mtls
Configurando e configurando o certificado mTLS para a Plataforma OneEntry usando tokens e mTLS, além de implantar a aplicação em um servidor com Nginx, Docker e GitLab
Parte 1: Configurando mTLS
Protegendo a API
- Usando Token: Gere um token nas configurações do OneEntry e adicione-o aos cabeçalhos da solicitação com o parâmetro 'x-app-token', onde o valor é o token.
- Usando mTLS: Ative a opção mTLS no seu painel do OneEntry e gere o certificado nas configurações do OneEntry.
Configurando o certificado
- No seu painel, vá para a aba 'Acesso' e mude de token para mTLS.
- Gere um novo certificado no OneEntry ('Configurações' -> 'Certificados de Aplicação' -> 'Criar Novo Certificado').
- Baixe-o para o seu computador e extraia-o para a pasta 'cert' na raiz do seu projeto.
Configurando o ambiente local (usando ReactJS como exemplo)
- Baixe o arquivo setupProxy.js e salve-o na pasta 'src'.
- Edite o parâmetro 'target', especificando o endereço do seu projeto.
- Instale o pacote 'http-proxy-middleware': 'npm install http-proxy-middleware'.
- Inicie a aplicação.
Parte 2: Configuração do Servidor
Preparando o Servidor
- Atualize as informações do repositório: `apt update`.
- Adicione o repositório Docker e instale os pacotes: `apt install nginx certbot docker-ce pwgen`.
Configuração do UFW
- Bloqueie todas as conexões de entrada: `ufw default deny incoming`.
- Permita todas as conexões de saída: `ufw default allow outgoing`.
- Permita conexões TCP de entrada nas portas 22, 80 e 443: `ufw allow 22,80,443/tcp`.
Configuração do SSH
- Edite a configuração do daemon SSH: `nano /etc/ssh/sshd_config`.
- Defina `PasswordAuthentication no`.
- Reinicie o daemon SSH: `systemctl restart ssh`.
Configuração do Nginx
- Remova o arquivo de configuração padrão: `rm /etc/nginx/sites-available/default`
- Crie um novo arquivo de configuração: `nano /etc/nginx/sites-available/my_app`.
- Baixe e edite a configuração do Nginx do OneEntry, substituindo "your_domain.com" pelo seu domínio.
- Em seguida, execute o comando: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled', substituindo "my_app" pelo nome do seu arquivo de configuração.
- Emita certificados SSL usando o Certbot: `certbot certonly --webroot -w /var/www/html -d your_domain`
- Verifique a renovação automática do certificado: `certbot renew --dry-run`.
- Edite a tarefa cron do Certbot para recarregar automaticamente a configuração do Nginx após a emissão dos certificados: ‘nano /etc/cron.d/certbot', substituindo a última linha por: `echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot`
- Descomente as linhas no arquivo de configuração 'nano /etc/nginx/sites-available/my_app' (onde 'my_app' é o nome do seu arquivo de configuração).
- Verifique a configuração do Nginx: `nginx -t`
- Recarregue o Nginx após cada alteração: `nginx -s reload`.
Parte 3: Implantando a Aplicação com GitLab e GitHub
GitHub
Criando um novo usuário para o GitHub Runner
- Gere uma senha: 'pwgen -s 15 1'
- Crie um novo usuário: 'useradd -m github-runner'
- Defina uma senha para ele: 'passwd github-runner'
- Adicione o novo usuário aos grupos: 'usermod -aG docker github-runner' e 'usermod -aG sudo github-runner'.
- Altere o shell para o usuário GitHub Runner: 'chsh -s /bin/bash github-runner'
- Mude para o novo usuário: 'sudo su - gitlab-runner'.
Configurando o GitHub Runner
- Crie um GitHub Runner: vá para as configurações do seu repositório, clique em 'Ações' e selecione 'Runners', em seguida clique em 'Novo runner auto-hospedado'.
- Siga as instruções no bloco 'Download' e o primeiro comando no bloco 'Configurar'.
- Adicione o Runner ao autostart do sistema: 'sudo ./svc.sh install'. Você precisará inserir a senha gerada anteriormente.
- Inicie o Runner: 'sudo ./svc.sh start'.
- Vá para a seção 'Ações', clique em 'Runners' e verifique se o 'Runner' está em execução.
- Volte para o usuário 'root'.
- Crie um diretório de trabalho: 'mkdir -p /var/apps/frontend'
- Defina permissões para o usuário 'github-runner': 'chown -R github-runner:docker /var/apps/frontend'.
Configurando variáveis de ambiente no GitHub
- Crie as variáveis `DOMAIN`, `MTLS_USER_CERT` e `MTLS_USER_KEY` no seu repositório do GitHub ('Configurações' -> 'Segredos e Variáveis').
- Gere um certificado no OneEntry, adicione o certificado e a chave às variáveis. Na variável `DOMAIN`, especifique o endereço do seu projeto sem https.
- Baixe o arquivo docker-compose.yml e dois arquivos compactados .github e .docker.
- Coloque docker-compose.yml, .github.zip e .docker.zip na pasta raiz do seu projeto e extraia os arquivos (você pode excluir os arquivos compactados após a extração).
- Execute o comando de push no seu projeto.
- Verifique o processo na aba 'Ações'.
- Verifique a acessibilidade da aplicação no navegador.
GitLab
Registrando o GitLab Runner
- Especifique as tags 'docker, frontend'.
- Vá para 'Configurações -> CI/CD -> Runners' e clique no botão 'Novo runner de projeto'.
- Vá para o diretório criado: `cd /var/apps/gitlab-runner`.
- Execute o comando para iniciar o processo de registro: `docker compose run runner register`.
- Insira a URL do GitLab, por exemplo, https://gitlab.com/.
- Obtenha o token de registro do GitLab (na seção 'Runners' do projeto) e cole-o no terminal.
- Especifique o executor como 'docker'.
- Especifique a imagem padrão como docker:20.10.16.
Configurando variáveis de ambiente no GitLab
- Crie as variáveis `DOMAIN`, `MTLS_USER_CERT` e `MTLS_USER_KEY` no seu repositório do GitLab ('Configurações' -> 'CI/CD' -> 'Variáveis').
- Gere um certificado no OneEntry, adicione o certificado e a chave às variáveis e especifique o endereço do seu projeto sem https na variável `DOMAIN`.
- Baixe os arquivos docker-compose.yml, .gitlab-ci.yml e o arquivo .docker, coloque os arquivos na raiz do seu projeto e descompacte os arquivos (você pode excluir os arquivos compactados após a descompactação).
Preparando a configuração do GitLab Runner (executor Docker)
- Crie os diretórios necessários: `mkdir -p /var/apps/gitlab-runner/volumes/etc/gitlab-runner`
- Execute o comando: `cat \ /var/apps/gitlab-runner/docker-compose.yamlversion: '3' services: runner: image: 'gitlab/gitlab-runner:v16.2.0' restart: always container_name: 'gitlab-runner' privileged: true volumes: - './volumes/etc/gitlab-runner:/etc/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock' EOT`
Configuração do GitLab Runner
- Edite o arquivo de configuração: `nano volumes/etc/gitlab-runner/config.toml`.
- Defina o parâmetro `priviledged` como `true` para habilitar Docker-in-Docker.
- Altere o valor de `volumes` para `['/var/run/docker.sock:/var/run/docker.sock', '/cache']` para que o Docker funcione corretamente.
- Adicione `user = 'gitlab-runner'` no início do arquivo para executar o Runner como esse usuário.
- Salve as alterações e saia do editor.
- Reinicie o Runner: 'systemctl restart gitlab-runner'.
Ativando e verificando o GitLab Runner
- Execute o comando `docker compose up -d` para iniciar o Runner.
- Vá para o GitLab e verifique se o Runner está ativo e em execução (você deve ver seu status na seção 'Runners' do projeto).
Configurando um Runner adicional no host (executor shell)
- Siga as Instruções para instalar um Runner adicional que roda diretamente no host (não no Docker).
- Defina tags para o Runner: 'shell, frontend'.
Permissões do Runner
- Adicione um novo usuário ao grupo: 'usermod -aG docker gitlab-runner'
- Se precisar alterar o proprietário e os grupos de um arquivo ou diretório: 'chown -R gitlab-runner:docker /var/apps/frontend'
Configuração Final e Testes
- Certifique-se de que todos os Runners estão devidamente configurados e prontos para uso.
- Execute o comando de push no seu projeto.
- Verifique o progresso em 'Build' -> 'Pipelines'.
- Verifique a disponibilidade da aplicação no navegador.
Conclusão
Siga estes passos para uma configuração e implantação bem-sucedidas da sua aplicação com o OneEntry. Boa sorte com o desenvolvimento!