Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pivit — Gerencie certificados x509 em YubiKeys habilitadas para PIV, gere chaves e solicitações de certificado, e assine ou verifique commits e arquivos git. | Kitploit
Ferramentas/GitHubGitHub/cashapp/pivit
CriptografiaSegurança de HardwareAutenticação
GitHubcashapp/pivit

pivit

Gerencie certificados x509 em YubiKeys habilitadas para PIV, gere chaves e solicitações de certificado, e assine ou verifique commits e arquivos git.

Ver Repositório
100921há 3 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

codecov

Pivit

O Pivit é uma ferramenta de linha de comando para gerenciar certificados x509 armazenados em smart cards com suporte ao applet PIV (Yubikey), e usar esses certificados para assinar e verificar dados.

Ele é totalmente compatível com a forma como a linha de comando do git chama programas externos para assinar e verificar commits e tags.

Instalação

Brew

brew install pivit

Instalação via Go

go install github.com/cashapp/pivit/cmd/pivit@latest

Uso

Para configurar o git para usar o pivit para assinar e verificar assinaturas, execute os seguintes comandos:

git config --(local|global) gpg.format x509
git config --(local|global) gpg.x509.program pivit

Redefinir e inicializar o PIV do Yubikey

pivit --reset

Redefine o applet PIV do Yubikey e cria um novo PIN para acessá-lo.

Gerar um certificado

pivit --generate [--p256] [--self-sign | --no-csr] [--assume-yes] [--pin-policy] [--touch-policy]

Gera um novo par de chaves no slot de autenticação de cartão do Yubikey.
Este comando também irá gerar e armazenar um certificado x509 para a chave gerada, assinado pela Yubico.

Se a opção --p256 for fornecida, o par de chaves é gerado usando a curva elíptica P-256. Caso contrário, a curva P-384 é usada.

Adicione a opção --self-sign para gerar um certificado autoassinado; o certificado é assinado com a chave recém-gerada.
Você será solicitado a confirmar se realmente deseja um certificado autoassinado, depois será solicitado o PIN e, em seguida, será solicitado a tocar no seu Yubikey.
A saída conterá 3 blocos CERTIFICATE em vez de um CERTIFICATE_REQUEST no final (exemplo de saída abaixo).
Esta opção é útil principalmente para fins de teste. A opção --assume-yes pode ser usada em combinação com a opção --self-sign para desativar a confirmação s/n.

Adicione a opção --no-csr para evitar que a solicitação de assinatura de certificado seja impressa. Nesse caso, você não será solicitado a tocar no seu Yubikey.
Esta opção é útil se você não precisar que a chave gerada faça parte de uma PKI existente.
Você ainda pode verificar o certificado da chave usando o certificado da Yubico aqui.

A opção --pin-policy controla quando solicitar um PIN ao acessar a chave gerada.
Defina como um dos valores never, once ou always (o padrão é never).

A opção --touch-policy controla quando solicitar o toque físico no hardware ao acessar a chave gerada.
Defina como um dos valores never, cached ou always (o padrão é always).

A saída do comando terá a seguinte aparência:

Printing Yubikey device attestation certificate:
----- BEGIN CERTIFICATE -----
...
----- END CERTIFICATE -----
Printing generated key certificate:
----- BEGIN CERTIFICATE -----
...
----- END CERTIFICATE -----
Printing certificate signing request:
----- BEGIN CERTIFICATE REQUEST -----
...
----- END CERTIFICATE REQUEST-----

O CERTIFICATE REQUEST no final é assinado pela nova chave privada gerada, e pode ser usado para emitir um certificado assinado por uma CA.

Se você optar por emitir e usar seu próprio certificado, é importante também verificar que:

  • O certificado de atestação do dispositivo é assinado pela Yubico.
  • O certificado da chave é assinado pelo certificado de atestação do dispositivo.
  • A chave pública na solicitação de assinatura de certificado é a mesma que a chave pública no certificado da chave.

Parâmetros da Solicitação de Certificado

O Pivit permite definir diferentes atributos no CSR por meio de variáveis de ambiente.

As seguintes opções de certificado serão definidas da seguinte forma:

  • Subject.CommonName será definido com o valor da variável de ambiente PIVIT_EMAIL.
  • Subject.Organization será definido com o valor da variável de ambiente PIVIT_ORG.
  • Subject.OrganizationalUnit será definido com o valor da variável de ambiente PIVIT_ORG_UNIT.

Além disso, os seguintes Nomes Alternativos do Sujeito (SANs) serão incluídos na solicitação de certificado:

  • Endereços de e-mail incluirão PIVIT_EMAIL
  • URIs incluirão todas as URLs especificadas na variável de ambiente PIVIT_CERT_URIS (as URIs são separadas por um espaço)

Suporte a slots PIV

O módulo PIV suporta vários slots onde chaves e certificados podem ser armazenados.
Slots disponíveis - 9a, 9c, 9d e 9e.

  • 9e é o slot de "Autenticação de Cartão".
    Este é o único slot que não exige PIN para acessar a chave privada ao assinar com ele, resultando em menos atrito no uso.
  • 9a é o slot de "Autenticação". Usado para ações como login no sistema.
  • 9c é o slot de "Assinatura Digital". Usado para assinatura de documentos, ou assinatura de arquivos e executáveis.
  • 9d é o slot de "Gerenciamento de Chaves". Usado para coisas como criptografar e-mails ou arquivos com o objetivo de confidencialidade.

Para mais informações

O pivit permite escolher um slot usando a opção -w.
Para cada comando, se nenhum slot for especificado, 9e é usado por padrão.
Por exemplo:

  • Geração de certificado

    pivit --generate [-w slot]
    
  • Assinatura

    pivit -s -u userid [-w slot]
    
  • Impressão de um certificado

    pivit --print [-w slot]
    

Especificando um Yubikey pelo número de série

Por padrão, o pivit espera que um único Yubikey esteja conectado. Se um sistema tiver vários leitores de cartão ou Yubikeys, ou simplesmente para garantir que o pivit esteja falando com o Yubikey pretendido, especifique o número de série por meio da variável de ambiente PIVIT_YK_SERIAL.

Exemplo:

PIVIT_YK_SERIAL=13078292 pivit --print

Isso pode ser usado com qualquer comando.

Importar certificado para o Yubikey

pivit --import [--first-pem] [file]

Importa um certificado de file.
Espera-se que o nome de arquivo fornecido contenha um certificado x509 serializado codificado como um bloco PEM.

Esta ação solicita o PIN do Yubikey.

Adicione --first-pem para importar o primeiro bloco PEM de file, ignorando o restante. Isso é útil se você estiver usando uma CA que fornece seus certificados emitidos como uma cadeia ou pacote, com o certificado da entidade final primeiro (esta é a convenção).

Imprimir informações do certificado

pivit --print

Imprime o certificado armazenado no slot de autenticação de cartão do Yubikey, juntamente com sua impressão digital.
Por exemplo:

> pivit --print
bad126c47dc90e90e0c7ec90ec682b1717e52757
-----BEGIN CERTIFICATE-----
MIICczCCAVugAwIBAgIRANATKTxzlHOJgMdV30XRz5kwDQYJKoZIhvcNAQELBQAw
ITEfMB0GA1UEAwwWWXViaWNvIFBJViBBdHRlc3RhdGlvbjAgFw0xNjAzMTQwMDAw
MDBaGA8yMDUyMDQxNzAwMDAwMFowJTEjMCEGA1UEAwwaWXViaUtleSBQSVYgQXR0
ZXN0YXRpb24gOWUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT1l76Mvo6dJ4CwX2QQ
HImYRWbxLqt1kCVsn0PUn20DYtSKLuq8kCnMAn+kdneqjtaaBmWuPJH+g7LMyI18
QDQp2w+qSOf9ZWrOupMAGM8EpWXNTSNKoE50JhKXFbudBByjTjBMMBEGCisGAQQB
gsQKAwMEAwUBAjAUBgorBgEEAYLECgMHBAYCBACDq1IwEAYKKwYBBAGCxAoDCAQC
AQIwDwYKKwYBBAGCxAoDCQQBBDANBgkqhkiG9w0BAQsFAAOCAQEAGSmu0PUMDfEb
PkmkJ/rKYvpOKhbmpryjXuZ7ENJ3jGq3foyLSN+aBbd3M1im2ejC6/upthcp1N5M
Mg2SN6MBRS4crtt43DVHepBPt2W07vW8h4uFosJX29HdhK0dP+RnBGDdWYo0nq7y
7q1Y1c0BI7oGnaORL0DzSDtdxAJAphjspWsWNCIP2DTWQPhLTg4DqmYd/ahygVsZ
IE64QvJDQC72Dfyad6tIajmtPncqPt857H0hEJv2X58iOoJA/wAeuId4or859cJU
GTDbN7Ke4LWXRbs7StJTgefmNgWmKjm1Q2qs80WGShyQ6OrxALejd8jivtcTwsDz
WvzdmHCOmg==
-----END CERTIFICATE-----

A impressão digital do certificado é calculada executando uma soma de verificação SHA1 nos bytes brutos do certificado e codificando a soma de verificação como uma string hexadecimal.

Baixar ferramenta