Integração do Cloud Code Signing com o Travis CI

Este artigo mostra como você pode executar a assinatura de código automatizada no Travis CI integrando o eSigner CodeSignTool ao seu pipeline. 

eSigner é nossa plataforma de assinatura remota de código que oferece o mesmo nível de segurança que tokens USB e HSMS em rede, mas de maneira mais eficiente e intuitiva.  Parte do kit de ferramentas eSigner é o CodeSignTool: um utilitário de linha de comando seguro que é ideal para executar assinatura de código corporativo em vários ambientes de CI/CD, incluindo Travis.
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

variáveis ​​ambientais

  • NOME DE USUÁRIO: nome de usuário da conta SSL.com. (Requeridos)
  • SENHA: Senha da conta SSL.com (obrigatório)
  • CREDENTIAL_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)
  • AMBIENTE_NAME : Ambiente 'TEST' ou 'PROD'. (Requeridos)

entradas

  • caminho_do_arquivo_de_entrada: Caminho do objeto de código a ser assinado. (Requeridos)
  • saída_dir_caminho: 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)

Criar um projeto

Sob o projeto, crie um arquivo para Travis

Defina os componentes do fluxo de trabalho

  1. Coloque a arquitetura de CPU para executar o trabalho

arco: amd64

  1. Idioma padrão para executar testes em

idioma: java

  1. Especifique o sistema operacional para executar o trabalho

SO: linux

  1. Escreva a distribuição Ubuntu que será usada

dist: biônico

  1. Defina variáveis ​​de ambiente globalmente. A propriedade de nível de trabalho substitui as variáveis ​​globais.
  • Observe que TERM=dumb é necessário apenas para instâncias de projeto Gradle.
  • Em ENVIRONMENT_NAME, coloque "TEST" para assinatura de teste e "PROD" para assinatura ao vivo.

ambiente:

  global:

    – PROJECT_NAME=”Olá Mundo”

    – PROJETO_VERSÃO=”0.0.1″

    – TERMO=burro

    – ENVIRONMENT_NAME="TESTE"

  1. Especifique a ordem das etapas. Todos os trabalhos em um estágio devem ser concluídos antes que o próximo estágio seja executado.

estágios:

  - construir

  - sinal

Descreva o estágio de construção  

empregos:

  incluem:

        - fase: construir

  1. O nome do trabalho

      nome: build-maven

  1. A distribuição Ubuntu a ser usada

      dist: biônico

  1. Use o comando docker para assinar  

      Serviços:

        – janela de encaixe

  1. Use dotnet-cli para construir o projeto

      idioma: java

  1. Versão Java para construir o projeto

      jdk:

      – oraclejdk17

  1. Diretório de cache m2 para acelerar

      cache:

        diretórios:

        – $CASA/.m2

  1. Escreva o script Before para ser executado antes de construir o projeto

      script_antes:

        # Cria diretórios para artefatos

        – mkdir -p ${TRAVIS_BUILD_DIR}/artefatos

        – mkdir -p ${TRAVIS_BUILD_DIR}/pacotes

        # Defina as opções de compilação do Maven

        – exportar MAVEN_CLI_OPTS=”–modo em lote –errors –fail-at-end –show-version -DinstallAtEnd=true -DdeployAtEnd=true”

  1. Escreva o script para construir o projeto.
  • Neste fluxo de trabalho de exemplo de assinatura, 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.

      script:

        # Construa o projeto Maven com as opções do Maven

        – mvn $MAVEN_CLI_OPTS instalação limpa -f java/pom.xml

         # Copie os artefatos construídos para o diretório de artefatos

        – cp java/target/${PROJECT_NAME}-${PROJECT_VERSION}.jar ${TRAVIS_BUILD_DIR}/packages/${PROJECT_NAME}.jar

     

  1. Descreva como especificar uma lista de arquivos e diretórios que devem ser anexados ao trabalho se for bem-sucedido.

      espaços de trabalho:

        crio:

          nome: maven-jar-artefatos

          caminhos:

            # Salva o artefato para usar o trabalho de assinatura

            – ${TRAVIS_BUILD_DIR}/pacotes/${PROJECT_NAME}.jar

Delineie o estágio de sinalização

 – palco: sinal

  1. Escreva o nome do trabalho

      nome: sign-jar-file

  1. Coloque a distribuição do Ubuntu para usar

      dist: biônico

  1. Use o comando Docker para assinar  

      Serviços:

        – janela de encaixe

     

  1. Defina variáveis ​​de ambiente para trabalhos específicos.
  • Na captura de tela acima, o comando sign foi definido diretamente no script sign e não nas variáveis ​​de ambiente. Both métodos podem assinar corretamente com o TravisCI.

      ambiente:

        COMANDO=”sinal”

  1. Use dotnet-cli para construir o projeto

      idioma: java

  1. Versão Java para construir o projeto

      jdk:

      – oraclejdk17

  1. Antes do script ser executado antes de construir o projeto

      script_antes:

        # Cria diretórios para artefatos

        – mkdir -p ${TRAVIS_BUILD_DIR}/artefatos

        – mkdir -p ${TRAVIS_BUILD_DIR}/pacotes

     

  1. Script para construir o projeto

      script:

        # Docker Pull CodeSigner Imagem Docker

        – docker pull ghcr.io/sslcom/codesigner:latest

        # Assine o artefato com a imagem do CodeSigner Docker

        – docker run -i –rm –dns 8.8.8.8 –host de rede –volume ${TRAVIS_BUILD_DIR}/packages:/codesign/examples

          –volume ${TRAVIS_BUILD_DIR}/artefatos:/codesign/output

          -e NOME DE USUÁRIO=${NOME DE USUÁRIO} -e SENHA=${SENHA} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET}

          -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest ${COMMAND}

          -input_file_path=/codesign/examples/${PROJECT_NAME}.jar -output_dir_path=/codesign/saída

  1. Usado para especificar uma lista de arquivos e diretórios que devem ser anexados ao trabalho se for bem-sucedido.

      espaços de trabalho:

        usar:

          – maven-jar-artefatos

        crio:

          nome: arquivo jar assinado

          caminhos:

            # Salvar artefato assinado

            –${TRAVIS_BUILD_DIR}/artifacts/${PROJECT_NAME}.jar

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

Definir as variáveis ​​de ambiente

Vá para Travis e clique no botão Configurações botão

Adicione o valor para cada variável

Desloque-se até o variáveis ​​ambientais seção e clique no botão Adicionar para adicionar o valor para cada variável

Criar um repositório do Github

Procure os comandos push no Github

Escreva os comandos push em um terminal em seu editor

Aguarde a conclusão do trabalho de compilação

No Travis, o trabalho de construção deve iniciar automaticamente depois que você enviar o código.

Inicie o estágio de assinatura de código

Clique na assinar seção para Ferramenta CodeSign para iniciar o processo de assinatura

Aguarde até que sua máquina virtual termine de inicializar

Confirme se a assinatura do código foi bem-sucedida

Você pode consultar o SSL.com Repositório Github que contém os códigos-fonte da imagem do docker e descreve como usá-lo: https://github.com/SSLcom/ci-images

Exemplo de pipeline Travis CI

Confira o exemplo de pipeline Travis CI que criamos em github.com/SSLcom/codesigner-travisci-sample

Outros guias de integração de assinatura remota de serviço 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.

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.