Certificados de atributo
Um certificado de atributo não vincula um par de chaves ao titular: ele atesta uma característica do titular, como uma identidade profissional (PrivateID) ou uma Carteira de Identificação Estudantil (CIE).
Antes de começar
Certificados de atributo são emitidos por uma AC configurada para emiti-los, que não é a AC que emite certificados de chave pública: os
samples guardam o id dela em uma configuração separada, attributeCaId. Os operadores podem criar essa AC no dashboard.
TODO(docs): nenhum artigo explica como criar uma AC para certificados de atributo.
Fluxo
- Crie o pedido na AC de atributo, com
kindigual aAttributee os parâmetros do formato do certificado. - Emita o certificado sem CSR, já que um certificado de atributo não tem par de chaves próprio.
- Guarde o conteúdo do certificado.
| Formato | Endpoint do pedido | Parâmetros obrigatórios |
|---|---|---|
| Carteira de Identificação Estudantil (CIE) | POST /api/orders/cie | name, registrationNumber, degree, course e institution (name, city, state) |
| PrivateID | POST /api/orders/private-id | name, cpf, idNumber |
Um pedido CIE também recebe eea, cpf, birthDate, idNumber, idIssuer e idIssuerState.
Desde o Amplia 4.15.0, os operadores também podem criar pedidos CIE em um formulário do dashboard.
TODO(docs): o que significam os campos de CIE e PrivateID (por exemplo, eea).
Exemplo
O único sample é em PHP. Ele cria um pedido CIE e emite o certificado com um CSR null:
use Lacuna\Amplia\CreateOrderRequest;
use Lacuna\Amplia\CertificateKinds;
use Lacuna\Amplia\CieCertificateParameters;
use Lacuna\Amplia\CieInstitution;
$client = Util::getAmpliaClient();
$createOrderRequest = new CreateOrderRequest();
$createOrderRequest->caId = getConfig()['amplia']['attributeCaId'];
$createOrderRequest->validityEnd = Util::getDateYearsFromNow(2);
$createOrderRequest->kind = CertificateKinds::ATTRIBUTE;
$parameters = new CieCertificateParameters();
$parameters->name = $name;
$parameters->cpf = $cpf;
$parameters->eea = $eea;
$parameters->degree = $degree;
$parameters->course = $course;
$parameters->registrationNumber = $registrationNumber;
$institution = new CieInstitution();
$institution->name = $institutionName;
$institution->city = $institutionCity;
$institution->state = $institutionState;
$parameters->institution = $institution;
$createOrderRequest->parameters = $parameters;
$order = $client->createOrder($createOrderRequest);
$cert = $client->issueCertificate($order->getId(), null);
$fileId = StorageMock::store($cert->getContentRaw(), '.ac');
O cliente PHP envia o CSR null para POST /api/v2/certificates, como para qualquer outro certificado; nenhuma das bibliotecas cliente
tem um método próprio para certificados de atributo.
Um certificado de atributo não tem extensão de arquivo padrão: o sample o guarda como .ac.
Usar o certificado
O PKI SDK decodifica, valida e emite certificados de atributo X.509 em aplicações .NET. Certificados de atributo podem ser revogados como qualquer outro.