Signer - Setup em Azure App Services
Para instalar uma instância on premises do Signer em um Azure App Service, siga os passos abaixo. Para outras plataformas, clique aqui.
Preparação
Antes de começar, obtenha o pacote de binários:
As instruções a seguir assumem que você já tem os seguintes resources criados na sua conta do Azure:
- Um SQL Server (a criação do SQL database é coberta por este artigo)
- Um App Service Plan (a criação do App Service é coberta por este artigo)
- Uma zona de DNS referente ao domínio do site
Durante a instalação, serão criados alguns resources:
- Um banco de dados (SQL database)
- Uma storage account
- Um App Service
Sugerimos criar um resource group para agrupar os recursos criados. Entretanto, essa é uma medida com propósito meramente de organização. O que realmente é importante é que todos os recursos sejam criados na mesma região. Isso é fundamental para o funcionamento adequado do sistema.
Note
Os passos abaixo descrevem a criação mais básica de cada recurso. Dependendo da sua infraestrutura você pode querer tomar cuidados adicionais de segurança ou resiliência, como por exemplo restringir o acesso a uma rede privada.
Criação do banco de dados
Siga os procedimentos abaixo para criar um banco de dados para o sistema (você precisa ter um SQL Server previamente criado):
- Na opção SQL databases, clique em + Create
- Na primeira aba (Basics), preencha os dados conforme a sua infraestrutura (seguindo a região escolhida para o sistema)
- Clique na aba Additional settings
- Em Collation preencha
Latin1_General_100_CI_AI
- Clique em Review + create
- Clique em Create
Warning
A collation do banco de dados PRECISA SER Latin1_General_100_CI_AI
. Criar o banco de dados com uma collation diferente provavelmente fará com que a instalação falhe!
Uma vez concluida a criação do banco de dados, clique em Go to resource. Em seguida, obtenha a connection string:
- Clique em Connection strings
- Tome nota da connection string exibida na seção ADO.NET (SQL authentication)
Note
Substitua na connection string copiada o trecho {your_password}
pela senha do banco de dados
Criação de uma storage account
Precisamos de uma storage account para armazenar arquivos (o sistema armazena arquivos fora do banco de dados para mantê-lo organizado) e também os logs de sistema. Siga os passos abaixo para criar uma storage account (caso queira utilizar uma conta existente, pule essa parte):
- Em Storage accounts, clique em + Create
- Na primeira aba (Basics), preencha os dados conforme a sua infraestrutura (seguindo a região escolhida para o sistema)
- Em Performance, escolha Standard
- Em Redundancy, escolha a opção que preferir (sugerimos a opção Zone-redundant storage (ZRS) -- clique aqui para detalhes sobre as diferentes opções de replicação)
- Clique em Review
- Clique em Create
Uma vez concluída a criação da storage account, clique em Go to resource. Em seguida, obtenha uma connection string:
- Nas configurações da storage acount, clique em Access keys
- Na seção key1, tome nota do valor do campo Connection string
Criação do App Service
Siga os procedimentos abaixo para criar um App Service (você precisa ter um App Service Plan previamente criado):
- Em App Services, clique em + Add
- Na primeira aba (Basics), preencha os dados conforme a sua infraestrutura (seguindo a região escolhida para o sistema)
- Em Publish, escolha Code
- Em Runtime stack, escolha .NET 6.0 (LTS)
- Em Operating System, escolha o que preferir (o sistema é compatível com Windows e Linux)
- Clique em Review + create
- Clique em Create
Uma vez concluída a criação do App Service, clique em Go to resource. Em seguida, tome nota de seu domínio, por exemplo meu-app-service.azurewebsites.net
.
Configuração do domínio
Crie o apontamento de DNS para o domínio do site:
Note
Nas instruções abaixo, utilizaremos como exemplo a criação do apontamento para o domínio app.patorum.com
- Em DNS zones, clique na zona à qual o domínio pertence (ex:
patorum.com
) - Clique em + Record set
- Em Name, digite a porção mais à esquerda do domínio (ex:
app
) - Em Type, selecione CNAME
- Em Alias record set, selecione No
- Em Alias, preencha o domínio do App Service (ex:
meu-app-service.azurewebsites.net
) - Clique em OK
- Clique novamente em + Record set
- Em Name, digite
asuid.
seguido da porção mais à esquerda do domínio (ex:asuid.app
) - Em Type, selecione TXT
- Em Value, cole o valor do Custom Domain Verification ID anteriormente copiado do App Service
- Clique em OK
Note
Caso você não utilize o Azure como servidor de DNS das zonas, realize o procedimento equivalente no seu servidor de DNS
Após criar o apontamento, adicione o domínio ao App Service:
- De volta às configurações do App Service, clique em Custom domains
- Clique em + Add custom domain
- Selecione All other domain services
- Deixe selecionadas as opções App Service Managed Certificate e SNI SSL
- Em Domain, preencha o domínio (ex:
app.patorum.com
) - Clique em Validate
- Após a validação, clique em Add
Cópia dos binários
Agora iremos copiar os binários do site. Primeiramente, na seção Overview do App Service, pare o serviço clicando em Stop.
Em seguida, vá em Advanced Tools e clique em Go. Você será levado para o painel de controle Kudu do App Service.
- No menu superior, clique em Tools, em seguida em Zip Push Deploy
- Arraste e solte o pacote de binários (arquivo .zip) sobre a lista de arquivos e aguarde o progresso do deploy
Configuração do Signer
Execute o comando abaixo em um Powershell para gerar a chave criptográfica utilizada para cifrar valores sensíveis no banco de dados:
$k = New-Object byte[] 32;
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($k);
[Convert]::ToBase64String($k);
Tome nota do valor gerado.
No App Service, vá em Configuration e adicione as seguintes configurações:
ASPNETCORE_ENVIRONMENT
:Azure
General__EncryptionKey
: chave criptográfica gerada acimaGeneral__SiteUrl
: URL pública do site, no domínio configurado anteriormente, ex:https://assinador.patorum.com/
General__SiteName
: nome da sua instância do Amplia, ex: Assinador PatorumGeneral__SupportEmailAddress
: o endereço de e-mail de suporte (usado no rodapé dos e-mails enviados)General__Theme
(opcional): esquema de cores do site -- esquemas disponíveis:acr
: amazon + cornell-redalg
: azure-lime + greenclg
: cerulean-lime + greencam
: charcoal + amazoniteclc
: cobalt-lemon + currydcg
: dark-cerulean + greendgy
: dark-grey + yellowdir
: dark-indigo + redeva
: english-vermillion + arsenicgdc
: green + dark-coralidg
: independence-greenosg
: onyx + satin-goldqbm
: queen-blue + minttbg
: teal-blue + gold
General__PersonalAccountsEnabled
: por padrão, o sistema é "fechado", ou seja, exige que usuários sejam previamente cadastrados em uma organização para poderem utilizar o sistema. Para deixar o sistema "aberto" ou seja, permitir que usuários se registrem e utilizem livremente o sistema (sem aprovação de um administrador), inclua essa configuração com valortrue
General__EnableDocumentTypes
: por padrão, a seleção de tipo de documento não é exibida ao criar documentos. Para exibi-la, inclua essa configuração com valortrue
General__EnableElectronicSignature
: por padrão, assinaturas eletrônicas (sem certificado digital) estão desabilitadas. Para habilitá-las, inclua essa configuração com valortrue
Adicione, também, as configurações descritas nas seções a seguir.
PKI Suite
Configurações do PKI Suite:
PKiSuite__SdkLicense
: sua licença para PKI SDK, no formato Base64 (obrigatório)PKiSuite__WebLicense
: sua licença para o componente Web PKI no formato binário (Base64) (obrigatório)
Envio de email
Configurações de envio de email:
Email__Enabled
: por padrão, o envio de email está habilitado. Para desabilitar, defina esta configuração comofalse
e ignore o restante desta seção.Email__ServerHost
: hostname do servidor SMTPEmail__EnableSsl
: por padrão, a conversação SMTP é executada por SSL. Para desativar o SSL, defina essa configuração comofalse
Email__ServerPort
: Por padrão, a conversação SMTP é realizada pela porta 587. Defina esta configuração para usar uma porta diferenteEmail__Username
eEmail__Password
: se o servidor SMTP exigir autenticação, defina essas configuraçõesEmail__SenderAddress
: endereço de e-mail a ser usado como remetente (do campo)Email__SenderName
: nome a ser usado como o nome do remetente (opcional)
Integração com provedor de OpenID Connect
O Signer requer um provedor de Open ID Connect (OIDC), mais especificamente uma subscription do GrantID.
Você pode usar uma subscription em nosso serviço SaaS em grantid.com ou instalar sua instância própria do GrantID.
De posse dos parâmetros da sua subscription do GrantID, adicione as seguintes configurações:
Oidc__Authority
: a OIDC authority (ex:https://patorum.grantid.com
)Oidc__ApiEndpoint
: o endereço da API do GrantID (ex:https://api.grantid.com
)Oidc__ApiName
: o escopo de API que será exigido nos tokens de acessoOidc__ClientAppId
: o App-Id da aplicação frontendOidc__AppId
: o App-Id da aplicação backendOidc__AppSecret
: um segredo para autenticação da aplicação backendOidc__CpfClaim
: coloque o nome da claim de CPF da subscription caso não sejacpf
Oidc__CustomScopes
: coloque o nome do escopo de CPF da subscriptionOidc__RequireHttps
(opcional): atribua o valorfalse
caso esteja usando uma instância própria do GrantID sem HTTPS (não recomendado)
Tip
Se a subscription utilizar o CPF como chave, coloque em Oidc__CpfClaim
e Oidc__CustomScopes
o valor preferred_username
Blob Storage
Configuração da storage account:
BlobStorage__ConnectionString
: connection string da storage account criada anteriormenteBlobStorage__ContainerName
(opcional): nome do container a ser utilizado para armazenar arquivos. Caso omitido, um container denominado signer é utilizado.
Logging
Configuração de log:
Serilog__WriteTo__0__Args__connectionString
: connection string da storage account criada anteriormenteSerilog__WriteTo__0__Args__storageTableName
(opcional): nome da tabela a ser utilizada para armazenar os logs. Caso omitido, uma tabela denomiada SignerLog é utilizada.
Connection string
Na seção Connection strings (final da página de configurações), clique em + New connection string e preencha:
- Name:
DefaultConnection
- Value: valor da connection string obtido durante a criação do banco de dados
- Type: escolha SQLAzure
Salve as configurações feitas até o momento clicando em Save.
Iniciando o App Service
Por fim, em Overview do App Service, clique em Start. Em seguida, acesse a URL do site (o primeiro acesso pode demorar alguns instantes).
Clique em Login e registre-se. Você então será "promovido" a administrador (o primeiro usuário que se registra é automaticamente promovido), tendo acesso pleno ao sistema, e a instalação estará concluída.