Integração do Cloud Code Signing com Jenkins CI

Este é um guia sobre como fazer assinatura de código automatizada no Jenkins com o uso do eSigner CodeSignTool.

CodeSignTool é um utilitário de linha de comando adequado para assinaturas de alto volume e integra-se perfeitamente a várias plataformas de CI/CD. Ele faz parte do eSigner: nosso serviço de assinatura remota que oferece uma abordagem eficiente, segura e fácil de usar para assinatura de código empresarial.

SSL.com's EV Assinatura de código Certificados ajudam a proteger seu código contra adulteração não autorizada e comprometimento com o mais alto nível de validação e estão disponíveis por apenas $ 249 por ano.

COMPRE SEU CERTIFICADO DE ASSINATURA DE CÓDIGO EV SSL.COM

Crie um arquivo Jenkins e defina o pipeline em seu editor de código

pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Defina a ferramenta .NET em seu editor de código configurando Jenkins

Clique na Gerenciar Jenkins guia no painel do Jenkins.

Role a página e clique em Global Tool Configuration.

Role para baixo e clique Instalações do SDK do .NET.

Copie o valor para .NET SDK e cole-o em seu editor de código.

ferramentas { dotnetsdk "DOTNET_CORE_3.1.24" }

Acesse plugins.jenkins.io e instale o plugin .NET SDK

Debaixo Gerenciar Jenkins no seu Painel, verifique Gerenciar Plugins para confirmar se o plugin .NET SDK foi instalado.

Depois de confirmar que o plug-in foi instalado, volte para INSTALAÇÕES DO .NET SDK e certifique-se de que a versão correta e os detalhes de lançamento do plug-in do .NET SDK estejam definidos. Prossiga para clicar no Salvar botão.

Defina as variáveis ​​de ambiente em seu editor de código

ambiente { USERNAME = credenciais('es-username') // nome de usuário da conta SSL.com. PASSWORD = credenciais('es-password') // Senha da conta SSL.com. CREDENTIAL_ID = credenciais('es-credential-id') // ID da credencial para assinatura do certificado. TOTP_SECRET = credenciais('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome do Ambiente. Para Conta Demo pode ser 'TEST' caso contrário será 'PROD' }

Você encontrará os valores para cada variável em seu painel Jenkins em Segurança> Gerencie Credenciais.

 

Defina os estágios para criar o diretório de artefatos, extrair a imagem do docker, construir o .NET e assinar o código do artefato

 

        1) Crie o diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados.
 stage('Criar diretório de artefatos') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Puxe a imagem do Docker do Codesigner do Github Registry.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Construa um projeto ou solução dotnet e todas as suas dependências. Após a criação do arquivo dll ou exe, copie para a pasta 'packages' para assinatura.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) Esta é a etapa onde os arquivos DLL (artefato) criados serão assinados com o CodeSignTool.
stage('Assine e salve Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefatos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

SSL.com's EV Assinatura de código Certificados ajudam a proteger seu código contra adulteração não autorizada e comprometimento com o mais alto nível de validação e estão disponíveis por apenas $ 249 por ano.

COMPRE SEU CERTIFICADO DE ASSINATURA DE CÓDIGO EV SSL.COM

Criar um repositório do Github

Copie cada um dos componentes do comando push no Github.

Escreva os comandos em um novo terminal em seu editor de código para enviar o código.

Depois de enviar o código, acesse sua conta do Github e copie o link da URL do seu projeto.

Vá para sua conta Jenkins e clique no botão Crie um emprego link.

Escolha Pipeline Multiramal, defina o nome do seu projeto e clique no botão OK botão.

Debaixo Fontes de filiais, selecione Git e cole o link da URL do seu projeto Github.

Role para baixo até Analisar gatilhos de pipeline de várias ramificações. Marque a caixa para Periodicamente, se não for executado de outra forma. Você pode selecionar 2 minutos.

Clique na Salvar botão.

Volte para sua conta Jenkins, clique no seu projeto e confirme se o pipeline foi iniciado

Clique no seu projeto Jenkins e selecione Digitalizar pipeline multiramal agora no painel.

Clique Saída do console

Role para baixo e verifique se a assinatura do código foi bem-sucedida

Script completo

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.

Defina o pipeline

pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Instalar ferramentas de compilação

ferramentas { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

Crie uma variável de ambiente

ambiente { USERNAME = credenciais('es-username') // nome de usuário da conta SSL.com. PASSWORD = credenciais('es-password') // Senha da conta SSL.com. CREDENTIAL_ID = credenciais('es-credential-id') // ID da credencial para assinatura do certificado. TOTP_SECRET = credenciais('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome do Ambiente. Para Conta Demo pode ser 'TEST' caso contrário será 'PROD' }

Script para as etapas de construção e assinatura

stage { // 1) Criar diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados stage('Criar diretório de artefatos') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Puxe a imagem do Docker do Codesigner do Github Registry stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Crie um projeto ou solução dotnet e todos suas dependências. // Depois de criado o arquivo dll ou exe, copie para a pasta 'packages' para assinatura stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/ Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) Esta é a etapa onde os arquivos DLL (artefato) criados serão assinados com CodeSignTool. stage('Assine e salve Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefatos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
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 

Amostra de Pipeline Jenkins

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

Outros guias de integração de assinatura remota

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.