---
title: "Primeiros passos"
description: "Primeiros passos com o Web PKI: pré-requisitos (certificado digital no Windows) e como incluir o arquivo lacuna-web-pki.js e codificar as primeiras linhas."
canonical: "https://docs.lacunasoftware.com/articles/web-pki/get-started"
locale: "pt-BR"
product: "Web PKI"
last_updated: "2026-10-12"
---

# Primeiros passos

## Pré-requisitos

Antes de começar, você precisará de um certificado digital válido registrado no repositório de certificados do Windows (o registro é feito automaticamente quando você utiliza um certificado digital no Windows). Para verificar se você tem um certificado digital registrado no Windows, siga os passos abaixo:

1. **Iniciar** > **Executar...** > **certmgr.msc**
1. Deve haver pelo menos um certificado na pasta Pessoal. Dê um duplo-clique no certificado.
1. Aparecerá uma janela com informações sobre o certificado. Deve haver a mensagem "Tem uma chave particular correspondente a este certificado."

Pronto, você já pode começar.

## Codificando as primeiras linhas

Primeiro, inclua na sua página o arquivo [lacuna-web-pki.js](https://cdn.lacunasoftware.com/libs/web-pki/lacuna-web-pki-2.18.0.min.js) mais recente:

```html
<script type="text/javascript" src="https://cdn.lacunasoftware.com/libs/web-pki/lacuna-web-pki-2.18.0.min.js"
  integrity="sha256-utM/CTsggW5QWTZgkLcAwVGkMBhYKTz3n0992V4r2y4="
  crossorigin="anonymous"></script>
```

Ou instale através do [Pacote NPM web-pki](https://www.npmjs.com/package/web-pki):

```sh
$ npm install web-pki --save
```

> **Observação**
>
> Não é necessário incluir nenhum arquivo CSS pois o componente não interfere na interface da página.

Em seguida, instancie a classe `LacunaWebPKI`:

```javascript
var pki = new LacunaWebPKI();
```

Chame então o método `init()` passando um callback que será chamado quando o componente estiver pronto para ser usado:

```javascript
pki.init(onWebPkiReady);

function onWebPkiReady() {
    // ...
}
```

Uma vez que o seu callback tenha sido chamado, você pode chamar as funções para operar com certificados digitais. Para obter os certificados disponíveis, utilize o método `listCertificates()`:

```javascript
pki.listCertificates().success(function (certs) {
    for (var i = 0; i < certs.length; i++) {
        var cert = certs[i];
        var thumbprint = cert.thumbprint;
        var subjectName = cert.subjectName;
        var issuerName = cert.issuerName;
    }
});
```

> **Observação**
>
> Se você não estiver familharizado com chamadas assíncronas, veja a seção [Chamadas assícronas](https://docs.lacunasoftware.com/articles/web-pki/async).

> **Dica**
>
> Para saber as propriedades disponíveis para cada certificado, veja o artigo [Propriedades dos certificados](https://docs.lacunasoftware.com/articles/web-pki/cert-properties)

Para ler o *encoding* de um certificado, chame o método `readCertificate()`:

```javascript
// Você precisará do thumbprint do certificado (conforme informado pelo método listCertificates)
var selectedCertThumbprint = '...';
pki.readCertificate({ thumbprint: selectedCertThumbprint }).success(function (certEncoding) {
    // certEncoding contém o encoding do certificado (em Base64)
});
```

Para assinar bytes utilize o método signData(), que recebe 3 entradas:

* O *thumbprint* do certificado
* Os bytes a serem assinados (em Base64)
* O algoritmo de digest a ser utilizado durante a operação de assinatura

```javascript
pki.signData({
    thumbprint: '...',     // conforme informado pelo método listCertificates
    data: '...',           // bytes em Base64 (tipicamente dado pelo servidor)
    digestAlgorithm: '...' // por exemplo 'SHA-256' (tipicamente dado pelo servidor)
}).success(function (signature) {
    // signature contém o resultado da assinatura (em Base64)
});
```

Caso o seu SDK rodando no servidor lhe informe o hash dos bytes a serem assinados, ao invés dos bytes em si, chame o método `signHash()`:

```javascript
pki.signHash({
    thumbprint: '...',     // conforme informado pelo método listCertificates
    hash: '...',           // hash em Base64 (tipicamente dado pelo servidor)
    digestAlgorithm: '...' // por exemplo 'SHA-256' (tipicamente dado pelo servidor)
}).success(function (signature) {
    // signature contém o resultado da assinatura (em Base64)
});
```

## Exemplo online

[Embedded content](https://jsfiddle.net/LacunaSoftware/6zkwejb9/embedded/)

Para executar o exemplo, clique na aba **Result**. Se essa for a primeira vez que você utiliza o Web PKI, você será redirecionado para a página de instalação e voltará ao exemplo automaticamente após a instalação.

> **Observação**
>
> O exemplo acima só funcionará na sua aplicação web se a mesma estiver no **localhost**. Isso significa que você pode testar o Web PKI à vontade sem pagar nada, desde que a
> sua aplicação web esteja rodando no localhost (ou seja, em desenvolvimento). Para que o código funcione fora do localhost (em produção), você precisará de uma licença de uso.
> Para mais informações, acesse o artigo [Licenciamento](https://docs.lacunasoftware.com/articles/web-pki/licensing).

> **Dica**
>
> O exemplo acima prioriza a simplicidade do código. Veja os [exemplos completos](https://docs.lacunasoftware.com/articles/web-pki/full-samples) para códigos mais próximos da realidade.

## Próximos passos

Agora que vimos as funções básicas do Web PKI ...

* Veja os [browser suportados](https://docs.lacunasoftware.com/articles/web-pki/browser-support)
* Veja como funciona o [licenciamento](https://docs.lacunasoftware.com/articles/web-pki/licensing)
* Veja [como customizar o comportamento quando o componente não estiver instalado](https://docs.lacunasoftware.com/articles/web-pki/customizing-not-installed)
* Se a sua aplicação utiliza AngularJS ou Angular2+, leia a seção [Callbacks e Angular](https://docs.lacunasoftware.com/articles/web-pki/angularjs)
* Veja os [exemplos completos](https://docs.lacunasoftware.com/articles/web-pki/full-samples)
* Veja o [Guia da API](https://docs.lacunasoftware.com/articles/web-pki/api-reference)

**Demonstrações e exemplos**

- Demonstração: [Your certificates in the browser](https://try.lacunasoftware.com/pt/web-pki/certificates-in-the-browser)
- Demonstração: [Sign a file with your certificate](https://try.lacunasoftware.com/pt/pki-suite/sign-a-file)
- List the user's certificates with Web PKI: [.NET](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/dotnet/mvc/PkiSuiteAspNetMvcSample/Controllers/ListCertJQueryController.cs) · [Java](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/java/springmvc/src/main/java/com/lacunasoftware/pkisuite/controller/ListCertJQueryController.java) · [Node.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/nodejs/expressmvc/routes/list-cert-jquery.js) · [Python](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/list_cert_jquery.py) · [Ruby](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/ruby/rails/app/controllers/list_cert_jquery_controller.rb)
- Read a certificate's details with Web PKI: [.NET](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/dotnet/mvc/PkiSuiteAspNetMvcSample/Controllers/ReadCertJQueryController.cs) · [Java](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/java/springmvc/src/main/java/com/lacunasoftware/pkisuite/controller/ReadCertJQueryController.java) · [Node.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/nodejs/expressmvc/routes/read-cert-jquery.js) · [Python](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/read_cert_jquery.py) · [Ruby](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/ruby/rails/app/controllers/read_cert_jquery_controller.rb)
- Sign a local PDF in the browser with Web PKI: [.NET](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/dotnet/mvc/PkiSuiteAspNetMvcSample/Controllers/PadesSignatureWebController.cs)
- Sign a local file with CAdES in the browser using Web PKI: [.NET](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/dotnet/mvc/PkiSuiteAspNetMvcSample/Controllers/CadesSignatureWebController.cs)
