Instalação e configuração
Pré-requisitos
Para a configuração do endpoint, utilizamos como base o Docker CE, um gerenciador de containers que permite simplificar a configuração e gestão da solução. Consulte a documentação oficial para mais informações sobre o Docker e seu funcionamento.
Segue abaixo as especificações:
Linux Docker para Debian
Versões:
Debian 8+ x86_64
Docker versão 18+
Acesso à internet para instalação de aplicativos.
Acesso por parte das aplicações integradas à aplicação.
Requisitos de máquina conforme consumo
Até 5.000 assinaturas por dia:
2 Gb de memória RAM
1 núcleo de processamento
25 Gb de armazenamento
A partir de 5.000 assinaturas por dia:
4 Gb de memória RAM
2 núcleo de processamento
25 Gb de armazenamento
A partir de 10.000 assinaturas por dia:
8 Gb de memória RAM
2 núcleo de processamento
50 Gb de armazenamento
A partir de 50.000 assinaturas por dia:
10 Gb de memória RAM
5 núcleo de processamento
500 Gb de armazenamento
A partir de 100.000 assinaturas por dia:
20 Gb de memória RAM
10 núcleo de processamento
1 Tb de armazenamento
Atenção É necessário a instalação do Docker-compose.
Rede e conectividade Para o funcionamento do CESS é necessário acesso aos endpoints do provedor de assinaturas nas URLs:
https://apicloudid.vaultid.com.br (produção)
https://api.birdid.com.br (produção)
https://apicloudid.hom.vaultid.com.br (homologação)
https://apihom.birdid.com.br (homologação)
https://harbor.lab.vaultid.com.br (endpoint do harbor para baixar imagem do cess)
https://cess.lab.vaultid.com.br (homologação)
https://billing.vaultid.com.br (endpoint do Wings para fazer o download da licença do CESS - ambiente de produção)
Também é necessário acesso aos repositórios de LCR's (lista de certificados revogados) referentes aos certificados utilizados. Os repositórios variam de acordo com a Autoridade Certificadora responsável pela emissão do certificado.
Para clientes emitindo pela AC Soluti, os endpoints são:
Para a utilização de carimbo no tempo é necessário liberar o endpoint do TSA. Esse endpoint varia de acordo com a solução escolhida.
A comunicação entre o CESS e os endpoints citados não pode ser realizada com inspeção SSL/TLS(proxy) ou algum tipo de homem do meio que intercepte e interfira na abertura de sessão.
A solução não inicia acessos à rede interna. O tráfego de saída pode ser limitado aos clientes que consomem os serviços e aos endpoints citados.
Configurações
Para iniciar o download da imagem e execução do software utilizando o docker-compose, faça o download do arquivo yaml de exemplo, ou um clone do repositório de demonstração.
Os seguintes parâmetros podem ser definidos dentro do arquivo cess-compose.yaml.
clientIdMd - Caso o cliente esteja utilizando o cess para autenticação (/oauth), deverá configurar o clientIdMd e clientSecretMd e sua aplicação precisará passá-los na requisição.
clientSecretMd - Caso o cliente esteja utilizando o cess para autenticação (/oauth), deverá configurar o clientIdMd e clientSecretMd e sua aplicação precisará passá-los na requisição.
redisHost - Caso o cliente opte por utilizar seu cluster previamente instalado, basta configurar o redis host (opcional, default=redis);
redisPort - Caso o cliente opte por utilizar seu cluster previamente instalado, basta configurar o redis port (opcional, default=6379);
ttlCacheGeneric - Tempo (segundos) de vida do cache (opcional, default=3600);
lifetime - Tempo (segundos) que os arquivos (tcn) irão ficar armazenado no CESS (opcional, default=86400);
sleep - Intervalo (segundos) que o garbage collector irá executar para limpar os arquivos (opcional);
limit - Quantidade máxima de arquivos que serão apagados a cada iteração do garbage (opcional);
cessUrl - Define a URL utilizada para conexão ao Cess.
level - Level de log do CESS (opcional, default=INFO) {DEBUG/INFO/NOTICE/WARNING/ERROR/CRITICAL/ALERT/EMERGENCY};
urlsMultiCloud - Urls da multi-nuvem. [url => [id => 'id', adapterid => 'id', client_id => 'id client', client_secret => 'client secret]] (obrigatório);
redisCluster - Caso queira utilizar redis cluster, deverá setar true (opcional);
seedsCluster Caso habilite redisCluster=true, deverá configurar esta variável com os nós. ["ip1:port1", "ip2:port2"... , "ipn:portn"] (obrigatório apenas se redisCluster=true);
sendMonitoring Caso não queira que seja coletado informações do container, deverá setar a variável como false (opcional);
APACHE_SSL
Defina para true se deseja que o Apache do container forneça o serviço com TLS ativo.
Espera-se que o certificado digital e a respectiva chave sejam fornecidos através de um ponto de montagem no container. Descomente a sessão 'volumes' e configure os arquivos conforme orientação.
Arquivo path_crt
Espera-se um arquivo com a parte pública do certificado digital concatenado com as cadeias intermediárias da Autoridade Certificado emissora. Todos os certificados devem estar no formato PEM (codificado em base64).
Arquivo path_key
Espera-se um arquivo contendo apenas a chave privada correspondente ao certificado digital utilizado. A chave privada não pode ter senha e deve estar no formato PEM (codificada em base64).
PORTA_EXTERNA - Define a porta pela qual o serviço do CESS será exposto.
Exemplo:
Considerando o cenário:
SSL ativo;
Os certificados estão salvos na pasta /opt/certs/cert.pem e /opt/certs/cert.key;
A porta que o container deve expor é a 443;
Teremos a seguinte configuração:
Atenção (ambiente de homologação):
Caso esteja utilizando ambiente de homologação, é necessário configurar a cadeia de confiança do mesmo. Para isso basta descomentar a linhas 33 - volumes: e 34- ./hom-truststore:/var/www/data/trust do arquivo cess-compose.yaml. Para mais detalhes, acesse https://github.com/VaultID/docker-cess.
Executando
Atenção: Antes de continuar é necessário solicitar o acesso ao repositório de imagens do CESS diretamente à equipe de integração da VaultID.
Após concluir e validar a instalação do docker e do docker-compose, salve e configure o arquivo cess-compose.yaml no servidor de escolhido. Pela linha de comando, navegue até a pasta de destino do arquivo e execute:
1 - Docker login.
De posse do usuário e senha fornecidos, execute:
2 - Iniciando a aplicação.
3 - Verificando o estado da aplicação:
4 - Testando a aplicação:
Após a confirmação de execução da aplicação é possível validar o estado da mesma acessando a URL configurada em cessUrl ou, diretamente no servidor com a combinação IP_SERVIDOR:PORTA_EXTERNA.
LOG
É importante acompanhar o log do container para detectar algum erro de configuração ou falha no serviço. Também é possível aumentar o nível de detalhes para debugar eventuais problemas (veja a variável level na Configuração).
Configuração do cluster (Redis) - Docker
Nesta etapa já pressupõe que o cliente tenha 3 máquinas distintas com o docker instalado.
Será instalado 2 redis (master e slave) em cada máquina.
Como exemplo utilizaremos 3 máquinas com os respectivos IPs: 192.168.0.16, 192.168.0.19 e 192.168.0.20:
Roda os seguintes comandos nos respectivos IPs
IP [192.168.0.16]
$ docker run -d --name redis-7000 -p 7000:7000 --network host redis:alpine redis-server --port 7000 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
$ docker run -d --name redis-7001 -p 7001:7001 --network host redis:alpine redis-server --port 7001 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
IP [192.168.0.19]
$ docker run -d --name redis-7002 -p 7002:7002 --network host redis:alpine redis-server --port 7002 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
$ docker run -d --name redis-7003 -p 7003:7003 --network host redis:alpine redis-server --port 7003 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
IP [192.168.0.20]
$ docker run -d --name redis-7004 -p 7004:7004 --network host redis:alpine redis-server --port 7004 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
$ docker run -d --name redis-7005 -p 7005:7005 --network host redis:alpine redis-server --port 7005 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
E por fim execute o seguinte comando na máquina 1 (192.168.0.16): $ redis-cli --cluster create 192.168.0.16:7000 192.168.0.16:7001 192.168.0.19:7002 192.168.0.19:7003 192.168.0.20:7004 192.168.0.20:7005 --cluster-replicas 1
Este comando irá criar um master e um slave para cada máquina
Para testar o cluster, acesse o primeiro redis:
$ redis-cli -c -h 192.168.0.16 -p 7000 $ set chave valor
Acesse algum outro redis:
$ redis-cli -c -p 192.168.0.20 -p 7005 $ get chave
É necessário retornar "valor"
Last updated