Integracja Cloud Code Signing z CircleCI

Ten samouczek pokazuje, w jaki sposób eSigner jest zintegrowany z CircleCI w celu automatycznego podpisywania kodu.

eSigner to środowisko chmurowe SSL.com do podpisywania kodu. Klucze i certyfikaty podpisywania są bezpiecznie hostowane w chmurze przez SSL.com i można do nich uzyskać dostęp w celu podpisania z dowolnego urządzenia podłączonego do Internetu, dzięki czemu eSigner jest jedną z najlepszych platform do podpisywania kodu korporacyjnego. Zestaw narzędzi eSigner zawiera CodeSignTool, który jest narzędzie wiersza poleceń dla Podpisywanie kodu EV certyfikatów i jest idealny do tworzenia zautomatyzowanych procesów podpisywania na różnych platformach Continuous Integration/Continuous Delivery (CI/CD), w tym CircleCI. 

SSL.com's EV Podpisywanie kodu Certyfikaty pomagają chronić Twój kod przed nieautoryzowanym manipulowaniem i naruszeniem bezpieczeństwa z najwyższym poziomem walidacji i są dostępne za jedyne $ 249 rocznie. Można również używaj swojego certyfikatu EV Code Signing na dużą skalę w chmurze za pomocą eSigner.

ZAMÓW TERAZ

Zmienne środowiskowe

  • USERNAME: Nazwa użytkownika konta SSL.com. (Wymagany)
  • HASŁO: Hasło do konta SSL.com (wymagane)
  • CREDENTIAL_ID: Identyfikator poświadczeń do podpisywania certyfikatu. Jeśli credential_id zostanie pominięty, a użytkownik ma tylko jeden certyfikat podpisywania kodu eSigner, CodeSignTool domyślnie to zrobi. Jeśli użytkownik ma więcej niż jeden certyfikat podpisywania kodu, ten parametr jest obowiązkowy. (Wymagany)
  • TOTP_SECRET: Klucz tajny TOTP protokołu OAuth. Możesz uzyskać dostęp do szczegółowych informacji na temat https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Wymagany)
  • ŚRODOWISKO_NAME : 'TEST' lub 'PROD' Środowisko. (Wymagany)

Wejścia

  • ścieżka_pliku_wejściowego: Ścieżka obiektu kodu do podpisania. (Wymagany)
  • ścieżka_katalogu_wyjściowego: Katalog, w którym zostaną zapisane obiekty z podpisanym kodem. Jeśli ścieżka_wyjściowa zostanie pominięta, plik określony w -ścieżka_pliku zostanie zastąpiony podpisanym plikiem.

Przygotuj elementy przepływu pracy (Podpisywanie biblioteki DLL kodu .NET)

  1. Utwórz folder .circleci

W obszarze roboczym podpisywania kodu utwórz folder .circleci. Pod nim utwórz plik config.yml.

  1. Ustaw wersję CI
Wersja: 2.1
 
  1.  Wywołaj zadania za pomocą przepływów pracy. Przepływy pracy organizują zestaw zadań do uruchomienia. Zadania dla tego potoku są skonfigurowane poniżej

Zobacz: https://circleci.com/docs/2.0/configuration-reference/#workflows

przepływy pracy:
 
  1. Wpisz nazwę przepływu pracy.
  kropka:
 
  1. Wewnątrz przepływu pracy definiujesz zadania, które chcesz uruchomić.
 zadania: - buduj - znak: wymaga: - buduj
 

Zdefiniuj etap kompilacji

  1. Zdefiniuj zadanie do późniejszego wywołania w przepływie pracy.

 (Zobacz: https://circleci.com/docs/2.0/configuration-reference/#jobs)

praca: budowa:

 

  1. Utwórz zmienną środowiskową
  • Zmienne środowiskowe są używane, aby próbki były bardziej czytelne. Na powyższym zrzucie ekranu przykładowego przepływu pracy podpisywania PROJECT_NAME, PROJECT_VERSION i DOTNET_VERSION zostały opcjonalnie pominięte. Podpisywanie może nadal przebiegać nawet z tymi pominięciami.  
  środowisko: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 PRZESTRZEŃ ROBOCZA: /home/circleci/project

 

  1.  Zdefiniuj executor Dockera: (https://circleci.com/docs/2.0/executor-types/)

    # Możesz określić obraz z Dockerhub lub użyć jednego z naszych wygodnych obrazów z Centrum programistów CircleCI.

 okno dokowane: — obraz: mcr.microsoft.com/dotnet/sdk:3.1-bullseye

 

  1. Umieść katalog roboczy dla zadania
  katalog_roboczy: /home/circleci/projekt

 

  1. Dodaj kroki do pracy

    Zobacz: https://circleci.com/docs/2.0/configuration-reference/#steps

  kroki:

 

  1.  Sprawdź kod źródłowy, aby przepływ pracy miał do niego dostęp.
    - Sprawdź

 

  1. Utwórz katalog artefaktów, aby przechowywać podpisane i niepodpisane pliki artefaktów
    - uruchom: nazwa: Utwórz katalog artefaktów polecenie: | mkdir -p ${PRZESTRZEŃ ROBOCZA}/artefakty mkdir -p ${PRZESTRZEŃ ROBOCZA}/pakiety

 

  1.  Utwórz projekt lub rozwiązanie dotnet i wszystkie jego zależności.
      - run: name: Build Dotnet Project Command: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release

 

  1. Skopiuj artefakt do katalogu artefaktów
  • W tym pisemnym, przykładowym przepływie pracy podpisywania utworzono wiele typów projektów. Dlatego utrzymywano pliki różnych typów projektów, tworząc podfoldery. Dla projektów Dotnet utworzono podfolder o nazwie „dotnet”. Na powyższym zrzucie demonstracyjnym nie było potrzeby tworzenia podfolderu o nazwie „dotnet”, więc nie zostało to uwzględnione w skrypcie.
  - uruchom: nazwa: polecenie Kopiuj artefakty: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll

 

  1. Zachowaj artefakt w katalogu artefaktów w celu podpisania
  - persist_to_workspace: root: . ścieżki: - pakiety/*
 

Zdefiniuj etap podpisywania

  1. Zdefiniuj zadanie podpisywania
 znak:

 

  1. Utwórz zmienną środowiskową
  • Na powyższym zrzucie ekranu polecenie podpisu zostało zdefiniowane bezpośrednio w skrypcie podpisu, a nie pod zmiennymi środowiskowymi. Binne metody mogą poprawnie podpisywać się za pomocą CircleCI.
  • Zmienne środowiskowe są używane, aby próbki były bardziej czytelne. Na powyższym zrzucie ekranu przykładowego przepływu pracy niektóre zmienne opcjonalnie nie zostały uwzględnione. Podpisywanie może nadal przebiegać nawet z tymi pominięciami.  
    środowisko: ENVIRONMENT_NAME: PROD COMMAND: znak WORKSPACE: /home/circleci/project

 

  1.     Umieść katalog roboczy dla zadania na Circle-CI
 katalog_roboczy: /home/circleci/projekt

 

  1. Nazwa artefaktu do podpisania
  • Wartość 'artifact-name' jest opcją dla wielu projektów. Dodano parametr 'artifact-name', aby ta sama część podpisująca mogła być używana dla wszystkich typów projektów. Ponieważ przykład na zrzucie ekranu opiera się na pojedynczym projekcie, nie było potrzeby jego dołączania.
    parametry: nazwa-artefaktu: typ: ciąg domyślnie: ''

 

  1. Zdefiniuj executor dockera:

 Aby uzyskać dodatkowe informacje, zobacz: https://circleci.com/docs/2.0/executor-types/

       Możesz określić obraz z Dockerhub lub użyć jednego z naszych wygodnych obrazów z Centrum programistów CircleCI.

       Pamiętaj, aby zaktualizować poniższy tag obrazu platformy Docker do wersji openjdk aplikacji.

       Lista dostępnych obrazów CircleCI Docker Convenience dostępna jest tutaj: https://circleci.com/developer/images/image/cimg/openjdk

   Docker: - obraz: cimg/openjdk:17.0.3

 

  1. Dodaj kroki do pracy

      Aby uzyskać dodatkowe informacje, zobacz: https://circleci.com/docs/2.0/configuration-reference/#steps

    kroki:

 

  1. Utwórz katalog artefaktów, aby przechowywać podpisane i niepodpisane pliki artefaktów
  - uruchom: nazwa: Utwórz katalog artefaktów polecenie: | mkdir -p ${PRZESTRZEŃ ROBOCZA}/artefakty mkdir -p ${PRZESTRZEŃ ROBOCZA}/pakiety

 

  1. Dołącz do Workspace, aby uzyskać dostęp do pliku artefaktu
   - attach_workspace: w: /home/circleci/project

 

  1. Włącz Docker dla CodeSigner na Circle-CI
 - setup_remote_docker: nazwa: Konfiguracja zdalnego Dockera wersja: 19.03.13 docker_layer_caching: true

 

  1. Wyciągnij obraz dockera Codesigner z rejestru Github
        - uruchom: nazwa: polecenie Docker Pull Image: | docker pull ghcr.io/sslcom/codesigner: najnowsze docker pull alpine: 3.4

 

  1. Napisz krok, w którym artefakt zostanie podpisany za pomocą CodeSignTool.
 - uruchom: nazwa: Podpisz polecenie pliku artefaktów: | docker create -v /codesign/packages --name codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< parametry. nazwa-artefaktu >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -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/packages/<< parametry.nazwa-artefaktu >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parametry.nazwa-artefaktu >> ${ OBSZAR ROBOCZY}/artifacts/<< parametry.nazwa-artefaktu >>

 

  1. Napisz krok, aby artefakt został przesłany z przepływu pracy, umożliwiając udostępnianie danych między zadaniami i przechowywanie danych po zakończeniu przepływu pracy
    - store_artifacts: name: Upload Signed Files ścieżka: /home/circleci/project/artifacts/<< parametry.artifact-name >> destination: << parameters.artifact-name >>
 

Utwórz nowe repozytorium w wierszu poleceń

Skopiuj komponenty poleceń push z lokalizacji swojego projektu na swoim koncie GitHub

Uwzględnij wszystkie komponenty poleceń push w swoim edytorze

SSL.com's EV Podpisywanie kodu Certyfikaty pomagają chronić Twój kod przed nieautoryzowanym manipulowaniem i naruszeniem bezpieczeństwa z najwyższym poziomem walidacji i są dostępne za jedyne $ 249 rocznie. Można również używaj swojego certyfikatu EV Code Signing na dużą skalę w chmurze za pomocą eSigner.

ZAMÓW TERAZ

Skonfiguruj projekt w CircleCI, korzystając z repozytorium zintegrowanego z GitHub

Zdefiniuj wszystkie zmienne środowiskowe

Gdy projekt jest uruchomiony, kliknij przycisk Ustawienia projektu, a następnie Zmienne środowiskowe, aby zdefiniować zmienne

Umieść wartości dla każdej zmiennej

Kliknij Dodaj zmienną środowiskową przycisk, aby dodać nazwy i wartości wszystkich zmiennych wymaganych dla projektu.

Poczekaj, aż projekt zostanie zbudowany

Kliknij Utrwalanie w obszarze roboczym

Krótko poczekaj na pomyślne przesłanie archiwum obszaru roboczego.

Kliknij przycisk znak

Poczekaj na skonfigurowanie zdalnego Dockera

Może to zająć więcej niż minutę, w zależności od rozmiaru pliku

Poczekaj na podpisanie artefaktów

Kliknij Artefakty Zakładka

Jeśli klikniesz Artefakty, będziesz mógł zobaczyć plik, który pomyślnie podpisano kodem. Zostaniesz również powiadomiony przez CircleCI o pomyślnym podpisaniu kodu.

Możesz odwołać się do repozytorium SSL.com Github, które zawiera kody źródłowe obrazu dokera i opisuje, jak go używać: https://github.com/SSLcom/ci-images

Przykładowy rurociąg CircleCI

Sprawdź przykładowy potok CircleCI, na którym utworzyliśmy https://github.com/SSLcom/codesigner-circleci-sample

Inne przewodniki integracji zdalnego podpisywania CI/CD

Potrzebujesz niestandardowych rozwiązań? 

Dzięki naszej wiedzy eksperckiej i pięciogwiazdkowemu personelowi pomocy technicznej jesteśmy gotowi i chętni do współpracy z Tobą w zakresie niestandardowych rozwiązań lub rabatów na podpisywanie na dużą skalę na poziomie przedsiębiorstwa. Wypełnij poniższy formularz, a skontaktujemy się z Tobą.

Zapisz się do newslettera SSL.com

Nie przegap nowych artykułów i aktualizacji z SSL.com

Bądź na bieżąco i bezpiecznie

SSL.com jest światowym liderem w dziedzinie cyberbezpieczeństwa, PKI i certyfikaty cyfrowe. Zarejestruj się, aby otrzymywać najnowsze wiadomości branżowe, wskazówki i ogłoszenia o produktach od SSL.com.

Będziemy wdzięczni za Twoją opinię

Weź udział w naszej ankiecie i daj nam znać, co myślisz o swoim ostatnim zakupie.