---
title: "Emitir um arquivo PKCS #12"
description: "Como fazer o Amplia gerar o par de chaves e devolver o certificado em um arquivo PKCS #12 (.pfx) protegido por senha, ou a chave e o certificado em vários formatos."
canonical: "https://docs.lacunasoftware.com/articles/amplia/integration/pkcs12"
locale: "pt-BR"
product: "Amplia"
last_updated: "2026-10-12"
---

# Emitir um arquivo PKCS #12

Quando o seu sistema não tem uma chave própria para enviar, o [Amplia](https://docs.lacunasoftware.com/articles/amplia) pode gerar o par de chaves, emitir o certificado e
devolver os dois em um arquivo PKCS #12 (.pfx) protegido por senha. Essa API existe desde o Amplia 4.1.0. 

## Fluxo

1. [Crie o pedido](https://docs.lacunasoftware.com/articles/amplia/integration/orders).
1. Chame `POST /api/certificates/pkcs12` com o id do pedido, a senha do arquivo e o tamanho da chave.
1. Guarde o arquivo a partir do `pfxContent` da resposta (em Base64); o `model` da resposta descreve o certificado emitido.

O único sample é em Node.js. Ele pede uma chave de 2048 bits, com a senha que o usuário digitou: 

```js
let order = await client.createOrder(request);
let cert = await client.issuePkcs12Certificate(order.getId(), req.body.senha, 2048);
let certId = cert.getModel().id;
StorageMock.storeSync(cert.getPfxContent(), certId, '.pfx');
```

| Campo | Significado |
|---|---|
| `orderId` | Id do pedido a atender. |
| `password` | Senha que protege o arquivo PKCS #12. |
| `keySize` | Tamanho do par de chaves, em bits; o sample usa 2048. |

* Só o cliente Node.js tem essa chamada. O `getPfxContent()` dele devolve o `pfxContent` como a API o envia, em Base64, e `getModel()`
  devolve o JSON do certificado sem alterações. 
* TODO(docs): que tamanhos de chave são aceitos e se o Amplia guarda uma cópia da chave privada depois de devolver o arquivo.
* A chave privada chega ao seu servidor dentro do arquivo: proteja o arquivo e a senha como protegeria a própria chave.

## Chave e certificado em outros formatos

Desde o Amplia 4.7.0, `POST /api/certificates/software` recebe a mesma requisição e devolve a chave e o certificado em vários formatos:
`pkcs12Der`, `certificateDer` e `certificatePem`, `publicKeyDer` e `publicKeyPem`, `privateKeyPkcs8Der` e `privateKeyPkcs8Pem`,
`privateKeyPkcs1Der` e `privateKeyPkcs1Pem`, além do `model` do certificado. 
O `issueSoftwareCertificate(orderId, password, keySize)` do cliente Node.js chama esse endpoint, com uma chave de 2048 bits por padrão. 

## Veja também

* [Criar pedidos de certificado](https://docs.lacunasoftware.com/articles/amplia/integration/orders)
* [Emitir a partir de um CSR](https://docs.lacunasoftware.com/articles/amplia/integration/issue-from-csr), para manter a chave onde ela foi gerada
* [Erros](https://docs.lacunasoftware.com/articles/amplia/integration/errors)

**Demonstrações e exemplos**

- Issue a PKCS #12 certificate using Amplia: [Node.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/nodejs/expressmvc/routes/issue-pkcs12-cert-server-amplia.js)
