Интеграция облачной подписи кода с GitHub Actions

В этой статье руководства показано, как eSigner интегрируется с GitHub Actions для автоматической подписи кода в настройке непрерывной интеграции/непрерывной доставки (CI/CD).

eSigner — это наша облачная платформа для подписи, которой разработчики программного обеспечения по всему миру доверяют выполнение подписи корпоративного кода без использования USB-токенов или другого специализированного оборудования.  Одним из компонентов eSigner является CodeSignTool: утилита командной строки, ориентированная на конфиденциальность, которая очень эффективна для разработчиков, которые хотят автоматизировать подписывание кода.  В следующих разделах показано, как подписать код Java (Maven) в GitHub Actions с помощью eSigner CodeSignTool.

SSL.com's EV Подписание кода сертификаты помогают защитить ваш код от несанкционированного вмешательства и компрометации благодаря высочайшему уровню проверки и доступны всего за $ 249 в год. Вы также можете используйте свой сертификат подписи кода EV в масштабе в облаке с помощью eSigner.

ЗАКАЗАТЬ СЕЙЧАС

Применение

- имя: Подпишите артефакт с помощью CodeSignTool

  применений: sslcom/actions-codesigner@develop

  с:

  •      Команды CodeSignTool:

     – get_credential_ids: вывод списка идентификаторов учетных данных eSigner, связанных с пользователем.

     – credential_info: Вывод информации о ключе и сертификате, относящейся к идентификатору учетных данных.

     – sign: Объект кода подписи и отметки времени.

     – batch_sign: Подписать и поставить отметку времени для нескольких объектов кода с помощью одного OTP.

     – hash: предварительно вычислить хэш(и) для последующего использования с командой batch_hash_sign.

     – batch_sign_hash: Подписать хэш(и), предварительно вычисленный с помощью хеш-команды.

        команда: подпись

 

  • Имя пользователя учетной записи SSL.com.

         username: ${{secrets.ES_USERNAME}}

  •  пароль от учетной записи SSL.com.

         password: ${{secrets.ES_PASSWORD}}

  • Идентификатор учетных данных для подписания сертификата.

         credential_id: ${{secrets.CREDENTIAL_ID}}

         totp_secret: ${{secrets.ES_TOTP_SECRET}}

  • Путь к подписываемому объекту кода.

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

  • Каталог, в который будут записаны подписанные объекты кода.

          output_path: ${GITHUB_WORKSPACE}/artifacts

 

входные

  • username: имя пользователя учетной записи SSL.com. (Необходимый)
  • password: пароль учетной записи SSL.com (обязательно)
  • credential_id: Идентификатор учетных данных для сертификата подписи. Если credential_id опущен и у пользователя есть только один сертификат подписи кода eSigner, CodeSignTool будет использовать его по умолчанию. Если у пользователя есть более одного сертификата подписи кода, этот параметр является обязательным. (Необходимый)
  • totp_secret: Секрет OAuth TOTP. Вы можете получить доступ к подробной информации о https://www.ssl.com/how-to/automate-esigner-ev-code-signing (обязательно)
  • Путь файла: Путь к подписываемому объекту кода. (Необходимый)
  • OUTPUT_PATH: Каталог, в который будут записаны подписанные объекты кода. Если output_path опущен, файл, указанный в -file_path, будет перезаписан подписанным файлом.

Код Java (Maven) Пример рабочего процесса подписания JAR

Подготовьте компоненты рабочего процесса

  1. Создайте папку Github в вашем редакторе. Включите рабочие процессы в папку и создайте файл yml в папке.
    1. Назовите свой проект и тип задействованного рабочего процесса.
    Название: Сборка и подпись Maven
     
    1. Активировать этот рабочий процесс по нажатию
    на: нажать
     
    1. Создайте переменную среды
    • Переменные среды используются, чтобы сделать образцы более читабельными. На приведенном выше снимке экрана примера рабочего процесса PROJECT_NAME, PROJECT_VERSION и MAVEN_VERSION могут быть опущены. Подписание может продолжаться даже с этими упущениями.
    env: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 MAVEN_VERSION: 3.8.5 JAVA_VERSION: 17
     
    1. Определите задания в вашем редакторе
    задания: построить-и-подписать-банку:
     
    1. Запустить задание на Ubuntu Runner
        запуски: ubuntu-последняя
     
    1. Создайте имя. Когда рабочий процесс запускается, это имя регистрируется.
      имя: CodeSigner на Java с Maven
     

Опишите шаги по проверке исходного кода, настройке среды Java и Maven и созданию каталога артефактов.

  1) Проверьте исходный код, чтобы рабочий процесс мог получить к нему доступ.

   шаги: - использует: action/checkout@v2
 

  2) Настройте среду Java и Maven для использования в рабочем процессе.

    - имя: Установить Maven и использовать Java: s4u/setup-maven-action@v1.3.1 с: java-версия: '${{env.JAVA_VERSION}}' maven-версия: '${{env.MAVEN_VERSION}}'

 

      3) Создайте каталог артефактов для хранения подписанных и неподписанных файлов артефактов.

 - имя: Создать оболочку каталога: bash запустить: | mkdir ${GITHUB_WORKSPACE}/артефакты mkdir ${GITHUB_WORKSPACE}/packages

 

      4) Создайте проект или решение maven и все его зависимости.

      После создания jar-файла скопируйте его в папку «packages» для подписи.

  • В этом письменном примере рабочего процесса подписания было создано несколько типов проектов. Вот почему файлы разных типов проектов хранились путем создания подпапок. Подпапка с именем «java» была создана для проектов Java. На демонстрационном снимке экрана выше не было необходимости создавать подпапку с именем «java», поэтому она не была включена в сценарий.
 - имя: Построить оболочку Java-проекта: bash run: | mvn чистая установка -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. банка
 

Описание шагов для заданий «Подписать» и «Загрузить»

  1. Задание подписи — это шаг, на котором созданные файлы JAR (артефакт) будут подписаны с помощью CodeSignTool.
 - имя: Sign Artifact использует: sslcom/actions-codesigner@develop с:

           Объект кода знака и метки времени.

команда: знак

           Имя пользователя учетной записи SSL.com.

имя пользователя: ${{secrets.ES_USERNAME}}

           пароль от учетной записи SSL.com.

пароль: ${{secrets.ES_PASSWORD}}

           Идентификатор учетных данных для подписания сертификата.

credential_id: ${{secrets.CREDENTIAL_ID}}

           Секрет OAuth TOTP (https://www.ssl.com/how-to/automate-esigner-ev-code-signing)

totp_secret: ${{secrets.ES_TOTP_SECRET}}

           Путь к подписываемому объекту кода. (DLL, JAR, EXE, файлы MSI vb…)

  путь_файла: ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}.jar

           Каталог, в который будут записаны подписанные объекты кода.

output_path: ${GITHUB_WORKSPACE}/артефакты

 

  1. Задание загрузки — это шаг, на котором будут загружены артефакты из вашего рабочего процесса, что позволит вам обмениваться данными между заданиями и сохранять данные после завершения рабочего процесса.
 - имя: Загрузить подписанные файлы использует: action/upload-artifact@v2 с: именем: ${{env.PROJECT_NAME}}.jar путь: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Получите загрузчик артефактов сборки из Github Marketplace.

Просмотрите свой сценарий кодирования

В целом сценарий кодирования для заданий сборки, подписи и загрузки должен выглядеть так, как показано на рисунке ниже. Обязательно исправьте все ошибки, такие как неправильное написание или ошибочные разрывы строк в сценарии, чтобы процесс подписания прошел гладко.

SSL.com's EV Подписание кода сертификаты помогают защитить ваш код от несанкционированного вмешательства и компрометации благодаря высочайшему уровню проверки и доступны всего за $ 249 в год. Вы также можете используйте свой сертификат подписи кода EV в масштабе в облаке с помощью eSigner.

ЗАКАЗАТЬ СЕЙЧАС

Определите свои переменные среды

Перейдите к местоположению вашего проекта в вашей учетной записи Github. Нажмите на Действия Вкладка. Нажмите Новый секрет репозитория кнопку, чтобы поместить значения для каждой переменной среды, необходимой для подписи кода.

Создайте новый репозиторий в командной строке

Перейдите к местоположению вашего проекта на Github и скопируйте каждый компонент команды push.

Подтолкнуть проект

Включите каждую командную строку push в свой редактор кода. По завершении код будет автоматически загружен на Github.

Подождите, пока артефакт будет подписан с помощью eSigner CodeSignTool.

Загрузите подписанный файл

Нажмите на подписанный файл, чтобы загрузить его.

Примечание. Обязательно исправьте опечатки или неверные переносы строк в скрипте, чтобы процесс подписания прошел гладко.

Пример конвейера действий Github


Ознакомьтесь с образцом конвейера Github Actions, который мы создали на github.com/SSLcom/codesigner-github-образец  

Другие руководства по интеграции удаленной подписи CI/CD

Нужны индивидуальные решения? 

Благодаря нашим экспертным знаниям и пятизвездочному персоналу службы поддержки мы готовы работать с вами над индивидуальными решениями или над скидками на подписание крупных объемов на уровне предприятия. Заполните форму ниже, и мы свяжемся с вами.

Подпишитесь на рассылку новостей SSL.com

Не пропустите новые статьи и обновления с SSL.com

Будьте в курсе и будьте в безопасности

SSL.com является мировым лидером в области кибербезопасности, PKI и цифровые сертификаты. Подпишитесь, чтобы получать последние новости отрасли, советы и анонсы продуктов от SSL.com.

Мы будем рады вашим отзывам

Пройдите наш опрос и поделитесь с нами своими мыслями о своей недавней покупке.