# 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.\
&#x20;Consulte a [documentação oficial](https://www.docker.com/) para mais informações sobre o Docker e seu funcionamento.

\*\*\*A ferramenta oficial utilizada para execução do motor de assinaturas é o Docker. Qualquer outra ferramenta ou método de execução, que não seja o Docker, não será suportado pela equipe técnica da Soluti.

\*\*\****A responsabilidade pela máquina onde estão instalados o componente de assinaturas, Docker e Docker-Compose é inteiramente da instituição. Isso inclui a gestão, manutenção, configuração e suporte técnico do ambiente onde esses serviços estão em execução.***

***A Soluti fornece o suporte necessário para a utilização do componente de assinaturas, mas qualquer questão relacionada à infraestrutura da máquina em si, como permissões, disponibilidade, atualizações e conectividade, deve ser gerenciada diretamente pela equipe de TI da instituição.***

O mínimo necessário para execução:

* **Linux**\
  &#x20;Docker para [Centos stream](https://docs.docker.com/v17.12/install/linux/docker-ce/centos/#install-docker-ce)\
  &#x20;Docker para [Debian](https://docs.docker.com/engine/install/debian/)\
  &#x20;Docker para [Ubuntu](https://docs.docker.com/engine/install/ubuntu/)

Será necessário acesso à internet para instalação de ferramentas.

#### 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**\
&#x20;É necessário a instalação do [Docker-compose](https://docs.docker.com/compose/install/#install-compose).

**Rede e conectividade**\
&#x20;Para o funcionamento do BirdID Pro é necessário acesso aos endpoints do provedor de assinaturas nas URLs:

* [https://apicloudid.vaultid.com.br](https://apicloudid.vaultid.com.br/) (produção)
* [https://api.birdid.com.br](https://api.birdid.com.br/) (produção)
* [https://apicloudid.hom.vaultid.com.br](https://apicloudid.hom.vaultid.com.br/) (homologação)
* [https://apihom.birdid.com.br](https://apihom.birdid.com.br/) (homologação)
* <https://harbor.lab.vaultid.com.br> (endpoint do harbor para baixar imagem do BirdID Pro)&#x20;
* [https://cess.lab.vaultid.com.br](https://cess.lab.vaultid.com.br/) (homologação)
* [https://billing.vaultid.com.br](http://billing.vaultid.com.br:443) (endpoint do Wings para fazer o download da licença do BirdID Pro - ambiente de produção) &#x20;
* [https://certifierauthhub.vaultid.com.br](https://certifierauthhub.hom.vaultid.com.br) (Endpoint que permite o consumo para autenticação em outras certificadoras - ambiente de produção)

É necessário a liberação das URL's para download dos arquivos das 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:

* <http://ccd.acsoluti.com.br>
* <http://ccd2.acsoluti.com.br>&#x20;

Para a utilização de carimbo do tempo, é necessário liberar o endpoint da [ACT](https://docs.vaultid.com.br/act/).

**A comunicação entre o BirdID Pro 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.**

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](https://github.com/VaultID/docker-cess/blob/HUB-de-integra%C3%A7%C3%A3o/docker-compose.yaml), ou um [clone do repositório de demonstração](https://github.com/VaultID/docker-cess/tree/HUB-de-integra%C3%A7%C3%A3o).

Os seguintes parâmetros devem ser definidos dentro do arquivo docker-compose.yaml.

* **clientIdMd -** Caso o cliente esteja utilizando o BirdID Pro 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 BirdID Pro (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 BirdID Pro.
* **level** - Level de log do BirdID Pro (opcional, default=INFO) {DEBUG/INFO/NOTICE/WARNING/ERROR/CRITICAL/ALERT/EMERGENCY};
* **urlsMultiCloud** - {"[https://apihom.birdid.com.br":{"id":"SOLUTI","client\\\_id":"SEU\\\_CLIENT\\\_ID","client\\\_secret":"SEU\\\_CLIENT\\\_SECRET"},"https://apicloudid.hom.vaultid.com.br":{"id":"VAULTID","client\\\_id":"SEU\\\_CLIENT\\\_ID","client\\\_secret":"SEU\\\_CLIENT\\\_SECRET"\\}}](https://docs.vaultid.com.br/workspace/cess/hubdeintegracao/https:/apihom.birdid.com.br":{"id":"SOLUTI","client\\_id":"SEU\\_CLIENT\\_ID","client\\_secret":"SEU\\_CLIENT\\_SECRET"},"https:/apicloudid.hom.vaultid.com.br":{"id":"VAULTID","client\\_id":"SEU\\_CLIENT\\_ID","client\\_secret":"SEU\\_CLIENT\\_SECRET"\\}})'
* **signatureAdapter -** MultiAdapter (Permite assinaturas com multiplos adpters)
* **adapters -** \["CertifierAuthHubAdapter","MultiCloudAdapter"]' (Lista de adapters utilizados para as assinaturas digitais)
* **certifierAuthHubUrl -** <https://certifierauthhub.hom.vaultid.com.br> (Url que permite o consumo para autenticação em outras certificadoras)
* **billingApi -** <https://billing.hom.vaultid.com.br> (Url de autorização do serviço do Hub de integração)
* **mockedUsername** - client\_Id (Client\_id para consumo do serviço de autorização do Hub de integração)
* **mockedPassword** - clientSecret (Client\_secret para consumo do serviço de autorização do Hub de integração)
* **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);

Teremos a seguinte configuração:

<figure><img src="/files/14gCtpetfYTflF7RGxeh" alt=""><figcaption></figcaption></figure>

* **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 BirdID Pro 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:

```
    ...
      # Se necessário, edite apenas as variávies abaixo: #
      - "ceasUrl=https://ceas.vaultid.com.br"
      - "APACHE_SSL=true"
    ports:
      # Definir a PORTA_EXTERNA pela qual o container será exposto na rede.
      - 443:8080
    volumes:
      - /opt/certs/cert.pem:/etc/apache2/cert/cert.pem
      - /opt/certs/cert.key:/etc/apache2/cert/cert.key
    ... 
```

### 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 **42** *- volumes:* e **44***-  ./hom-truststore:/var/www/data/trust* do arquivo docke&#x72;**-compose.yaml.** Para mais detalhes, acesse [**https://github.com/VaultID/docker-cess**](https://github.com/VaultID/docker-cess)

### Atenção **(ambiente de Produção)**:

Caso esteja utilizando ambiente de produção, é necessário configurar o diretório do arquivo de licença. Para isso basta descomentar as linhas **42** *- volumes:* e **48***-  ./license:/var/www/data/license* do arquivo docke&#x72;**-compose.yaml.** Para mais detalhes, acesse [**https://github.com/VaultID/docker-cess**](https://github.com/VaultID/docker-cess)**.**

No ambiente de produção, o diretório `license` deve possuir permissões completas de leitura e escrita para garantir o funcionamento adequado.

<figure><img src="/files/dS0UgVfgWFliPc0f8EPl" alt=""><figcaption></figcaption></figure>

### Executando

* **Atenção:** Antes de continuar é necessário solicitar o acesso ao repositório de imagens do BirdID Pro diretamente à equipe de integração da Soluti. Esta solicitação deverá ser realizada através do seu gestor de contas na Soluti.

Após concluir e validar a instalação do docker e do docker-compose, salve e configure o arquivo docker-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:

```
docker login harbor.lab.vaultid.com.br
```

&#x20;[![](https://github.com/VaultID/docker-cess/raw/master/images/login.png)](https://github.com/VaultID/docker-cess/blob/master/images/login.png)

2 - Iniciando a aplicação.

```
docker-compose -f docker-compose.yaml up -d
```

&#x20;[![](https://github.com/VaultID/docker-cess/raw/master/images/dockerup.png)](https://github.com/VaultID/docker-cess/blob/master/images/dockerup.png)

3 - Verificando o estado da aplicação:

```
docker ps 
```

&#x20;[![](https://github.com/VaultID/docker-cess/raw/master/images/dockerps2.png)](https://github.com/VaultID/docker-cess/blob/master/images/dockerps2.png)

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 **ceasUrl** ou, diretamente no servidor com a combinação **IP\_SERVIDOR:PORTA\_EXTERNA**.

&#x20;[![](https://github.com/VaultID/docker-cess/raw/master/images/teste.png)](https://github.com/VaultID/docker-cess/blob/master/images/teste.png)

### 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](/workspace/cess/instalacao-e-configuracao.md#configuracoes)).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.vaultid.com.br/workspace/cess/hubdeintegracao/instalacao-e-configuracao.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
