Setup do Rest PKI Core em Docker
Para instalar uma instância on premises do Rest PKI Core em Docker, siga os passos abaixo. Para outros ambientes, clique aqui.
A imagem de Docker do Rest PKI Core encontra-se disponível no Docker Hub:
A imagem atualmente recomendada é a lacunasoftware/restpkicore:2.2.2
Tags móveis disponíveis:
- A tag
2.2
aponta para a última imagem 2.2.x - A tag
2
aponta para a última imagem 2.x - A tag
stable
aponta para a última imagem estável
Esta imagem requer:
- Um blob storage compartilhado entre todos os containers rodando a imagem -- veja Configuração de Blob Storage
- Connection string para um banco de dados SQL Server ou PostgreSQL criado previamente
- Licença de uso da biblioteca PKI SDK (em formato binário/Base64)
- Licença de uso do componente Web PKI (em formato binário/Base64)
Configuração
Esta imagem é configurada utilizando variáveis de ambiente. Obtenha o arquivo de configuração de exemplo para um guia de como preencher os parâmetros necessários.
Para preencher o parâmetro General__EncryptionKey
, gere uma chave de 256 bits para encriptar dados sensíveis armazenados no banco de dados:
docker run lacunasoftware/restpkicore:2.2 -- gen-enc-key
Para preencher o parâmetro General__RootPasswordHash
, escolha uma senha forte para acesso à interface de gerenciamento como root e calcule o hash dela:
docker run -i lacunasoftware/restpkicore:2.2 -- hash-root-pass
Portas
A imagem escuta na porta 80.
É recomendado configurar um proxy reverso ou balanceador de carga escutando nas portas padrão HTTP (80) e HTTPS (443), redirecionando o tráfego em
ambas portas para a porta 80 do Rest PKI Core. Ademais, seu proxy deve preencher os request headers
X-Forwarded-Proto,
X-Forwarded-For e, opcionalmente, X-Forwarded-Port
.
A configuração Bindings__UseReverseProxy=True
instrui o Rest PKI Core a confiar nas informações preenchidas nestes headers.
Exemplo
Em um ambiente de produção, tipicamente se utilizaria um orquestrador de Docker e um SGBD dedicado ou em nuvem (IaaS). Entretanto, para fins de teste, utilizando apenas o Docker é possível rodar uma instância do Rest PKI Core com um banco de dados PostgreSQL local.
Comece criando um volume para o banco de dados:
docker volume create restpkicore_sql
Inicie o SGBD com uma senha da sua preferência (substitua SOME_PASS
abaixo):
docker run --name restpkicore_sql -v restpkicore_sql:/var/lib/postgresql/data -p 5432:5432 -e "POSTGRES_PASSWORD=SOME_PASS" -d postgres
Verifique os logs do container para eventuais erros:
docker logs -f restpkicore_sql
Esse processo pode levar alguns minutos. Uma vez que o SGBD esteja executando, pressione CTRL+C para sair dos logs.
Crie um volume para utilizar como blob storage:
docker volume create restpkicore_data
Em seguida, baixe o arquivo de configuração de exemplo, salve-o com nome restpkicore.env e preencha-o.
Na configuração da connection string, use o valor abaixo substituindo HOST_IP
pelo endereço de IP da máquina host e SOME_PASS
pela senha escolhida para o banco de dados:
ConnectionStrings__DefaultConnection=Host=HOST_IP;Database=restpkicore;Username=postgres;Password=SOME_PASS
ConnectionStrings__DefaultConnection_ProviderName=Postgres
Na configuração de blob storage, deixe os parâmetros padrões, pois montaremos o volume criado em /var/app
:
BlobStorage__Type=FileSystem
BlobStorage__Path=/var/app
Por fim, execute um container com a imagem usando o arquivo de configuração, montando o volume restpkicore_data
em /var/app
e expondo a aplicação (que escuta
na porta 80) na porta 8080 da máquina host:
docker run --name restpkicore --env-file restpkicore.env -v restpkicore_data:/var/app -p 8080:80 -d lacunasoftware/restpkicore:2.2
Tip
Caso tenha privilégios suficientes, o Rest PKI Core tentará criar o banco de dados no servidor caso ele não exista (é isso que acontecerá nesse caso)
Verifique os logs do container para eventuais erros de configuração:
docker logs -f restpkicore
Se tudo estiver configurado corretamente, você deve ter uma instância do Rest PKI Core rodando em localhost:8080