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 o 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
eMTLS_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 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
eMTLS_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 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.yaml version: '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
privileged
comotrue
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!