en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

Integração do Cloud Code Signing com GitLab CI

Este é um tutorial sobre como fazer assinatura de código automatizada no GitLab CI usando eSigner CodeSignTool. 

CodeSignTool é um utilitário de linha de comando seguro que faz parte do eSigner: nosso ambiente de assinatura de código em nuvem que beneficia editores e desenvolvedores de software com sua capacidade de conduzir a assinatura de código empresarial com segurança e eficiência de maneira não complicada.  O fluxo de trabalho de exemplo abaixo mostra um código .NET DLL sendo assinado no GitLab CI com eSigner.

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

  • input_file_path: Caminho do objeto de código a ser assinado. (Requeridos)
  • output_dir_path: 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 de DLL de código .NET

Criar um arquivo yml

Agrupe os trabalhos em etapas. Todos os trabalhos em um estágio devem ser concluídos antes que o próximo estágio seja executado.

etapas: - construir - assinar
 

Defina variáveis ​​de ambiente globalmente. A propriedade de nível de trabalho substitui as variáveis ​​globais.

  • 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 DOTNET_VERSION foram opcionalmente omitidos. A assinatura ainda pode prosseguir com essas omissões.  
  • Em ENVIRONMENT_NAME, coloque "TEST" para assinatura de teste e "PROD" para assinatura ao vivo.
variáveis: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
 

Definir o Estágio de construção

Abaixo está a definição do seu trabalho para construir o artefato dll

build-dotnet:

 

  1. Defina em qual estágio o trabalho será executado.
  fase: construir

 

  1. Coloque o nome completo da imagem que deve ser utilizada. Ele deve conter a parte do Registro, se necessário.
 imagem: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Defina os scripts que devem ser executados *antes* do trabalho. Pode ser definido globalmente ou por trabalho.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. Defina os scripts do Shell executados pelo Executor. Construir artefato de DLL
script: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll

 

  1. Especifique uma lista de arquivos e diretórios que devem ser anexados ao trabalho se for bem-sucedido.
  • A 'expire_in' permite que o arquivo seja excluído após um determinado período de tempo. Seu uso é opcional. É por isso que a captura de tela do fluxo de trabalho de exemplo acima não mostra essa propriedade.
artefatos: caminhos: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 minutos
 

Defina o estágio de sinalização

Abaixo está a definição do seu trabalho para assinar o artefato dll

Sign-dotnet-artefacts:

 

  1. Defina em qual estágio o trabalho será executado.
  estágio: sinal

 

  1. Coloque o nome completo da imagem que deve ser utilizada. Ele deve conter a parte do Registro, se necessário.
 imagem: janela de encaixe:19.03.0

 

  1. Defina serviços. Isso é semelhante à propriedade `image`, mas vinculará os serviços especificados ao contêiner `image`.
serviços: - janela de encaixe:19.03.0-dind

 

  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. Boutros métodos podem assinar corretamente com o TravisCI.
  variáveis: COMANDO: "sinal"

 

  1. Defina os scripts que devem ser executados *antes* do trabalho. Pode ser definido globalmente ou por trabalho.
  before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages

 

  1. Coloque scripts Shell executados pelo Runner. Assine o artefato .NET dll com CodeSignTool Docker Image
script: - docker pull ghcr.io/sslcom/codesigner:latest - docker run -i --rm --dns 8.8.8.8 --network host --volume ${CI_PROJECT_DIR}/packages:/codesign/examples --volume $ {CI_PROJECT_DIR}/artifacts:/codesign/output -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -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}.dll -output_dir_path=/codesign/output

 

  1. Escreva o script que pode ser usado para especificar uma lista de arquivos e diretórios que devem ser anexados ao trabalho se for bem-sucedido.
artefatos: caminhos: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 dias

 

  1. Especifique uma lista de nomes de tarefas de estágios anteriores dos quais os artefatos devem ser carregados.
dependências: - build-dotnet
 

Iniciar o estágio de construção

Crie um repositório

Consulte as instruções da linha de comando no Gitlab, conforme mostrado na captura de tela abaixo

Empurre sua pasta

Faça isso clicando terminal no menu, seguido de Novo Terminal.

Digite o script push no seu Terminal para enviar o projeto 

Clique no botão Construir

Depois de acionar o pipeline, prossiga para construir

Verifique se a compilação foi bem-sucedida  

Inicie o Estágio de Sinalização

Prossiga para assinar o artefato

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

Agora você pode baixar o arquivo assinado

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 CI do Gitlab

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

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

Para obter informações sobre uma assinatura eSigner e certificados de assinatura de código, incluindo soluções personalizadas e de alto volume, entre em contato com  Ou preencha o formulário abaixo.  

Inscreva-se no boletim informativo de SSL.com

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