Integração do Cloud Code Signing com ações do GitHub

Este artigo de guia demonstra como o eSigner é integrado ao GitHub Actions para assinatura de código automatizada em uma configuração de integração contínua/entrega contínua (CI/CD).

O eSigner é nossa plataforma de assinatura baseada em nuvem que é confiável por desenvolvedores de software em todo o mundo para realizar assinatura de código empresarial sem a necessidade de tokens USB ou outro hardware especializado.  Um dos componentes do eSigner é o CodeSignTool: um utilitário de linha de comando orientado à privacidade que é altamente eficaz para desenvolvedores que desejam automatizar a assinatura de código.  As seções a seguir demonstram como você pode assinar um código Java (Maven) no GitHub Actions usando eSigner CodeSignTool.

SSL.com's EV Assinatura de código certificados ajudam a proteger seu código contra adulteração e comprometimento não autorizados com o mais alto nível de validação e estão disponíveis por apenas $ 249 por ano. Você também pode use seu certificado de assinatura de código EV em escala na nuvem usando eSigner.

PEÇA AGORA

Uso

- nome: Artefato de sinal com CodeSignTool

  usa: sslcom/actions-codedesigner@develop

  com:

  •      Comandos do CodeSignTool:

     - get_credential_ids: saída da lista de IDs de credenciais de eSigner associados a um usuário.

     - credential_info: Chave de saída e informações de certificado relacionadas a um ID de credencial.

     - sign: Objeto de código de assinatura e carimbo de data / hora.

     - batch_sign: Assine e registre a data e hora de vários objetos de código com uma OTP.

     - hash: Pré-computar hash(es) para uso posterior com o comando batch_hash_sign.

     - batch_sign_hash: Assina o(s) hash(es) pré-calculado(s) com o comando hash.

        comando: assinar

 

  • Nome de usuário da conta SSL.com.

         username: ${{secrets.ES_USERNAME}}

  •  Senha da conta SSL.com.

         password: ${{secrets.ES_PASSWORD}}

  • ID da credencial para assinar o certificado.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • Caminho do objeto de código a ser assinado.

          file_path: ${GITHUB_WORKSPACE}/test/src/build/HelloWorld.jar

  • Diretório onde o(s) objeto(s) de código assinado(s) será(ão) gravado(s).

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

entradas

  • nome de usuário: nome de usuário da conta SSL.com. (Requeridos)
  • senha: Senha da conta SSL.com (obrigatório)
  • credencial_id: ID da credencial para assinatura do certificado. Se credential_id for omitido e o usuário tiver apenas um certificado de assinatura de código eSigner, o CodeSignTool usará como padrão. Se o usuário tiver mais de um certificado de assinatura de código, esse parâmetro é obrigatório. (Requeridos)
  • totp_secret: OAuth TOTP Secret. Você pode acessar informações detalhadas sobre https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Obrigatório)
  • caminho de arquivo: Caminho do objeto de código a ser assinado. (Requeridos)
  • caminho de saída: Diretório onde o(s) objeto(s) de código assinado(s) será(ão) escrito(s). Se output_path for omitido, o arquivo especificado em -file_path será substituído pelo arquivo assinado.

Fluxo de trabalho de exemplo de assinatura JAR de código Java (Maven)

Preparar os componentes do fluxo de trabalho

  1. Crie uma pasta do Github no seu editor. Inclua fluxos de trabalho com a pasta e crie um arquivo yml na pasta.
    1. Nomeie seu projeto e o tipo de fluxo de trabalho envolvido
    Nome: Maven Build and Sign
     
    1. Acione este fluxo de trabalho em um push
    em: empurrar
     
    1. Crie uma variável de ambiente
    • As variáveis ​​de ambiente são usadas para tornar as amostras mais legíveis. Na captura de tela acima do fluxo de trabalho de exemplo, PROJECT_NAME, PROJECT_VERSION e MAVEN_VERSION foram opcionalmente omitidos. A assinatura ainda pode prosseguir mesmo com essas omissões.
    env: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. Defina os trabalhos em seu editor
    jobs: build-and-sign-jar:
     
    1. Executar trabalho no Ubuntu Runner
        executado: ubuntu-latest
     
    1. Crie um nome. Quando o fluxo de trabalho é executado, esse é o nome registrado.
      nome: CodeSigner em Java com Maven
     

Descreva as etapas para verificar o código-fonte, configurar o ambiente Java e Maven e criar o Artifact Directory.

  1) Confira o código-fonte para que o fluxo de trabalho possa acessá-lo.

   passos: - usa: actions/checkout@v2
 

  2) Configure o ambiente Java e Maven para o fluxo de trabalho usar.

    - nome: Instale o Maven e o Java usa: s4u/setup-maven-action@v1.3.1 com: java-version: '${{env.JAVA_VERSION}}' maven-version: '${{env.MAVEN_VERSION}}'

 

      3) Crie um diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados

 - nome: Criar shell de diretório: bash run: | mkdir ${GITHUB_WORKSPACE}/artifacts mkdir ${GITHUB_WORKSPACE}/packages

 

      4) Construa um projeto ou solução maven e todas as suas dependências.

      Após a criação do arquivo jar, copie para a pasta 'packages' para assinatura

  • Neste fluxo de trabalho de exemplo de assinatura por escrito, vários tipos de projeto foram criados. É por isso que arquivos de diferentes tipos de projeto foram mantidos criando subpastas. Uma subpasta chamada 'java' foi criada para projetos Java. Na captura de tela de demonstração acima, não havia necessidade de criar uma subpasta chamada 'java', então isso não foi incluído no script.
 - name: shell de construção do projeto Java: bash run: | mvn clean install -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. jarra
 

Descreva as etapas para os trabalhos de Assinar e carregar

  1. O trabalho Assinar é a etapa em que os arquivos JAR (artefato) criados serão assinados com o CodeSignTool.
 - name: Assinar Artefato usa: sslcom/actions-codesigner@develop com:

           Objeto de código de assinatura e carimbo de data/hora.

comando: sinal

           Nome de usuário da conta SSL.com.

nome de usuário: ${{secrets.ES_USERNAME}}

           Senha da conta SSL.com.

senha: ${{secrets.ES_PASSWORD}}

           ID da credencial para assinar o certificado.

id_da_credencial: ${{secrets.CREDENTIAL_ID}}

           Segredo OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret: ${{secrets.ES_TOTP_SECRET}}

           Caminho do objeto de código a ser assinado. (DLL, JAR, EXE, arquivos MSI vb…)

  caminho_do_arquivo: ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           Diretório onde o(s) objeto(s) de código assinado(s) será(ão) gravado(s).

caminho_de_saída: ${GITHUB_WORKSPACE}/artefatos

 

  1. O trabalho de upload é a etapa em que os artefatos de seu fluxo de trabalho serão carregados, permitindo que você compartilhe dados entre trabalhos e armazene dados assim que um fluxo de trabalho for concluído
 - name: Carregar arquivos assinados usa: actions/upload-artifact@v2 com: name: ${{env.PROJECT_NAME}}.jar path: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Obtenha um uploader de artefato de compilação do Github Marketplace

Revise seu script de codificação

Em geral, o script de codificação para os trabalhos de buld, sign e upload deve se parecer com a imagem abaixo. Certifique-se de corrigir quaisquer erros, como ortografia incorreta ou quebras de linha incorretas no script, para que o processo de assinatura seja executado sem problemas.

SSL.com's EV Assinatura de código certificados ajudam a proteger seu código contra adulteração e comprometimento não autorizados com o mais alto nível de validação e estão disponíveis por apenas $ 249 por ano. Você também pode use seu certificado de assinatura de código EV em escala na nuvem usando eSigner.

PEÇA AGORA

Defina suas variáveis ​​de ambiente

Vá para o local do seu projeto na sua conta do Github. Clique no Opções aba. Clique no Novo segredo do repositório botão para colocar os valores para cada variável de ambiente necessária para assinar seu código.

Crie um novo repositório na linha de comando

Vá para o local do seu projeto no Github e copie cada componente do comando push.

Empurre o projeto

Inclua cada linha de comando push em seu editor de código. Após a conclusão, o código será enviado automaticamente no Github.

Aguarde até que o artefato seja assinado com eSigner CodeSignTool

Carregar o arquivo assinado

Clique no arquivo assinado para carregá-lo.

Observação: certifique-se de corrigir erros tipográficos ou quebras de linha incorretas no script para que o processo de assinatura seja executado sem problemas.

Exemplo de pipeline de ações do Github


Confira o exemplo de pipeline do Github Actions que criamos em github.com/SSLcom/codesigner-github-sample  

Outros guias de integração de assinatura remota de CI/CD

Precisa de soluções personalizadas? 

Com nosso conhecimento especializado e equipe de suporte cinco estrelas, estamos prontos e dispostos a trabalhar com você em soluções personalizadas ou descontos em assinaturas de alto volume de nível empresarial. Preencha o formulário abaixo e entraremos em contato.

Inscreva-se no boletim informativo de SSL.com

Não perca novos artigos e atualizações de SSL.com

Mantenha-se informado e seguro

SSL.com é líder global em segurança cibernética, PKI e certificados digitais. Inscreva-se para receber as últimas notícias do setor, dicas e anúncios de produtos da SSL.com.

Adoraríamos receber seu feedback

Responda à nossa pesquisa e deixe-nos saber sua opinião sobre sua compra recente.