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
os comandos estão incluídos em seu PATH. As instruções de assinatura do código EV assumem que o 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
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 -file MY-CSR.csr -keystore MY-KEYSTORE.jks
- Insira a senha que você criou ao gerar o armazenamento de chaves.
Digite a senha do keystore:
- O 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 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