Este guia o ajudará a assinar seu código Java com um OV / IV or EV certificado de assinatura de código de SSL.com. Estas instruções presumem que o Java Development Kit (JDK) está instalado em seu computador e que o keytool
e jarsigner
comandos estão incluídos em seu PATH. As instruções de assinatura do código Yubikey assumem que seu certificado está instalado no slot 9a de um YubiKey FIPS token, uma vez que são enviados por SSL.com.
Se você ainda não tem um certificado de assinatura de código e não tem certeza de qual tipo precisa, leia este FAQ.
Assinatura de código OV/IV (somente para certificados OV/IV emitidos antes de 1º de junho de 2023)
Configuração
Método 1: gerar CSR e arquivo PFX no navegador
O método mais simples para começar rapidamente com a assinatura de código Java é gerar um CSR e arquivo PFX ao recuperar seu certificado de SSL.com e instalá-lo em um novo keystore Java.
.jar
arquivos diretamente com um arquivo PFX não convertido, adicionando o -storetype pkcs12
bandeira para o jarsigner
comando.- Siga as etapas mostradas em Pedido e recuperação de certificados de assinatura de código para solicitar seu certificado e baixar um arquivo PFX com seu certificado e chave privada.
- Importe o PFX para um novo armazenamento de chaves com a mesma senha usando o comando abaixo. (Substituir
MY-CERTIFICATE.p12
eMY-KEYSTORE.jks
com o nome real do seu arquivo PFX e o nome do arquivo que deseja fornecer ao armazenamento de chaves. Observe também que odestalias
é arbitrário e você pode usar outro valor de alias, se desejar.)keytool -importkeystore -srckeystore MY-PFX.p12 -srcstoretype pkcs12 -srcalias 1 -destkeystore MY-KEYSTORE.jks -deststoretype JKS -destalias codesigning
Nota: O valor para-srcalias
para o arquivo PFX baixado de SSL.com normalmente deve ser1
, mas você pode confirmar isso executando o comandokeytool -list -v -storetype pkcs12 -keystore MY-PFX.P12
e verificando o valor mostrado paraAlias name
. - Será solicitada uma senha para o armazenamento de chaves de destino e, em seguida, a senha do armazenamento de chaves de origem (a senha que você inseriu ao criar o PFX). Você também pode ver uma mensagem de aviso começando com
Warning: The JKS keystore uses a proprietary format
. Você pode ignorar esta mensagem com segurança.
Método 2: Gerar Par de Chaves e CSR com Java
Se você preferir gerar seu par de chaves e CSR com Java, siga as etapas nesta seção. O processo é o mesmo usado para criar um CSR para um SSL /TLS certificado em Java.
Criar keystore e par de chaves
- Primeiro, vamos criar um keystore e um par de chaves pública / privada. Java usa arquivos com a extensão
.jks
(Java KeyStore) para armazenar certificados e chaves criptográficas. Insira o seguinte comando para gerar um keystore e um par de chaves RSA de 3072 bits. (SubstituirMY-KEYSTORE.jks
com o nome que você gostaria que o arquivo tivesse.)keytool -genkeypair -alias codesigning -keyalg RSA -keysize 3072 -keystore MY-KEYSTORE.jks
- Você verá uma série de prompts. Primeiro, crie e verifique uma senha para o armazenamento de chaves e, em seguida, insira e verifique as informações solicitadas. (Substitua os valores mostrados em maiúsculas por suas próprias informações.)
Digite a senha do keystore: Digite novamente a nova senha: Qual é seu nome e sobrenome? [Desconhecido]: NOME SOBRENOME Qual é o nome da sua organização? [Desconhecido]: EMPRESA Qual é o nome da sua Cidade ou Localidade? [Desconhecido]: CIDADE Qual é o nome do seu Estado ou Província? [Desconhecido]: ESTADO Qual é o código de país de duas letras para esta unidade? [Desconhecido]: EUA CN=FIRSTNAME SOBRENOME, OU=DEPARTMENT, O=COMPANY, L=CITY, ST=STATE, C=US está correto? [não]: sim
- O arquivo keystore foi gerado e você está pronto para criar um CSR.
Gerar CSR
- Digite o seguinte comando para gerar um CSR do keystore que acabamos de criar. (Substituir
MY-KEYSTORE.jks
com o valor que você usou ao criar o keystore eMY-CSR.csr
com o nome que você deseja usar para o CSR.)keytool -certreq -alias codesigning -arquivo MEU-CSR.csr -keystore MINHA-KEYSTORE.jks
- Insira a senha que você criou ao gerar o armazenamento de chaves.
Digite a senha do keystore:
- O ESB ( CSR foi criado. Se você estiver pronto para pedir seu certificado de SSL.com, abra o arquivo em um editor de texto para copiar e colar no CSR campo ao fazer o pedido. O conteúdo do arquivo será semelhante ao exemplo mostrado abaixo:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIC5TCCAc0CAQAwcDELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVNUQVRFMQ0wCwYD VQQHEwRDSVRZMRAwDgYDVQQKEwdDT01QQU5ZMRMwEQYDVQQLEwpERVBBUlRNRU5U MRswGQYDVQQDExJGSVJTVE5BTUUgTEFTVE5BTUUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCrRyk8VLs1THls+vfz0YtMJ3qYYl4c5c499d1YSbfQHa6L kIYhKTxvgdtbD+ePDigKB40CpeuMp5Yu8R6g2YIVBpGMrejAZYAmrzs6tfjpelh0 ocSDwYr7H8qQ9jq6MfZTu6J7EjS5RMODB6MVq1usKg3H866xbi6lqAtcktEF+zlM 4FW9Tm3H/DW2G7EnTjlMPzgaXNIU7lLar7YAWPJgv83NV8lQNCDW4lFlZLWBU95r YkJ4gfWUFUyPc+AiGbsyDdrVjPvF5yaebnFDrwheFaWeTTigSfLY688G7bpA8VvE lKioCl8nlJlc9HOBNKKdhs4qEtF0BwSE8tOgbkWPAgMBAAGgMDAuBgkqhkiG9w0B CQ4xITAfMB0GA1UdDgQWBBTmVpJp824krUaJKrQNhsSbVjJA1jANBgkqhkiG9w0B AQsFAAOCAQEALlux89RkXyHN4PQqQHbShSeTTWLURII+F+OSK9N1RS5l8V7AMcRM wvOkPP7JBRCKiaFGTW+5vcLQNnWRqQZMe0I4E0jzhL2gGsdChPIJy9Jwgn3Rzxmw 8V0lBY1SHQ9LKgSK0jIer3PQhXHDJlE2g2Dx8nJ4WJk7l2OTF9Kkly9hg8MOQdeg VIcs3HLsVI9Cwd6UHRT6ruKL3+bRgEcb6qj+qcrKHkzN7KXbOEznd10nAm87wENS mTb012ZFMlpUDvPNAHQgoGJ6slA+pIoH1fvrkosjql7R/H7Q+onm37Qa6d9L2ZqM MhgNpNWVwI0UBU4Xy4p9oUCJnvHhQ7U+3w== -----END NEW CERTIFICATE REQUEST-----
Solicitar e recuperar certificado
- Siga as etapas mostradas em Pedido e recuperação de certificados de assinatura de código até a etapa 24. Em vez de clicar imediatamente no Gerar certificado botão, marque a caixa rotulada eu tenho o meu CSR.
- Cole o seu CSR no campo do formulário e clique no Gerar certificado botão.
- Clique na Baixar botão e salve o
.crt
arquivo no mesmo lugar em que gerou seu armazenamento de chaves.
Importar certificado para armazenamento de chaves
- Use o seguinte comando para importar o certificado em seu arquivo de armazenamento de chaves Java. (Substitua MY-CERTIFICATE.crt e MY-KEYSTORE.jks pelos nomes de arquivo reais.)
keytool -importcert -file MY-CERTIFICATE.crt -keystore MY-KEYSTORE.jks -trustcacerts -alias codesigning
- Digite a senha do keystore quando solicitado.
Digite a senha do keystore:
- Seu certificado está instalado no armazenamento de chaves e você está pronto para começar a assinar arquivos.
A resposta do certificado foi instalada no armazenamento de chaves
Assinar arquivos com Jarsigner
- Use o seguinte comando para adicionar uma assinatura digital com data e hora a um
.jar
Arquivo. (Substituir/PATH/TO/MY-KEYSTORE.jks
eMY-JAR.jar
com os nomes de arquivo reais que você está usando. Se você usou um alias diferente ao configurar seu armazenamento de chaves, substitua-o porcodesigning
no comando.)jarsigner -tsa http://ts.ssl.com -keystore MY-KEYSTORE.jks MY-JAR.jar codesign
Nota: Também é possível assinar o seu.jar
arquivos diretamente com um arquivo PFX não convertido, adicionando o-storetype pkcs12
bandeira para ojarsigner
comando.
Nota: Por padrão, SSL.com oferece suporte a registros de data e hora de chaves ECDSA.
Se você encontrar este erro:The timestamp certificate does not meet a minimum public key length requirement
, você deve entrar em contato com o fornecedor do software para permitir registros de data e hora das chaves ECDSA.
Se não houver como seu fornecedor de software permitir o uso do endpoint normal, você poderá usar esse endpoint legadohttp://ts.ssl.com/legacy
para obter um registro de data e hora de uma unidade de registro de data e hora RSA. - Digite a senha do keystore no prompt.
Digite a frase de acesso para armazenamento de chaves:
- O arquivo agora está assinado. Você pode verificar a assinatura com o seguinte comando:
jarsigner -verify -verbose MY-JAR.jar
- Se o seu arquivo foi assinado com sucesso, a saída do comando deve incluir esta linha:
s = assinatura foi verificada
Assinatura de código IV, OV e EV com YubiKey
Configuração
Instale o driver PKCS # 11 e crie o arquivo eToken.cfg
Windows
- Instale o OpenSC seguindo as instruções no OpenSC's Iniciação Rápida do Windows.
- Localize o driver OpenSC PKCS # 11. O local de instalação padrão é
C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll
. - Crie um arquivo de configuração e salve-o em um local conveniente (como seu diretório inicial). O nome do arquivo é arbitrário, mas neste guia usaremos
yubikey-pkcs11-java.cfg
. O arquivo deve conter as seguintes informações:name = OpenSC-PKCS11 description = SunPKCS11 via OpenSC library = C: \ Arquivos de programas \ OpenSC Project \ OpenSC \ pkcs11 \ opensc-pkcs11.dll slotListIndex = 0
MacOS
- Instale OpenSC. Se você usar Homebrew como gerenciador de pacotes, você pode instalar o OpenSC com o seguinte comando:
brew instalar o opensc
- Localize o driver OpenSC PKCS # 11. Se você instalou usando o Homebrew, o arquivo deve estar disponível em
/usr/local/lib/opensc-pkcs11.so
. - Crie um arquivo de configuração e salve-o em um local conveniente (como seu diretório inicial). O nome do arquivo é arbitrário, mas neste guia usaremos
yubikey-pkcs11-java.cfg
. O arquivo deve conter as seguintes informações:name = OpenSC-PKCS11 description = SunPKCS11 via OpenSC library = /usr/local/lib/opensc-pkcs11.so slotListIndex = 0
Assinar arquivos com Jarsigner
- Use o seguinte comando para adicionar uma assinatura digital com data e hora a um
.jar
Arquivo. (SubstituirMY-JAR.jar
com o nome do arquivo real que você está usando.)jarsigner -tsa http://ts.ssl.com -providerClass sun.security.pkcs11.SunPKCS11 -providerArg yubikey-pkcs11-java.cfg -keystore NONE -storetype PKCS11 MY-JAR.jar "Certificado para autenticação PIV"
- Digite seu PIN YubiKey no prompt da frase secreta.
Digite a frase de acesso para armazenamento de chaves:
- O arquivo agora está assinado. Você pode verificar a assinatura com o seguinte comando:
jarsigner -verify -verbose MY-JAR.jar
- Se o seu arquivo foi assinado com sucesso, a saída do comando deve incluir esta linha:
s = assinatura foi verificada