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

В этой статье показано, как выполнять автоматическую подпись кода в Travis CI, интегрировав eSigner CodeSignTool в конвейер. 

eSigner — это наша платформа для удаленной подписи кода, которая обеспечивает тот же уровень безопасности, что и USB-токены и сетевые HSMS, но более эффективна и интуитивно понятна.  Частью набора инструментов eSigner является CodeSignTool: безопасная утилита командной строки, которая идеально подходит для подписи корпоративного кода в различных средах CI/CD, включая Travis.
SSL.com's EV Подписание кода сертификаты помогают защитить ваш код от несанкционированного вмешательства и компрометации благодаря высочайшему уровню проверки и доступны всего за $ 249 в год. Вы также можете используйте свой сертификат подписи кода EV в масштабе в облаке с помощью eSigner.

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

Переменные среды

  • 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 (обязательно)
  • ИМЯ_ОКРУЖАЮЩЕЙ СРЕДЫ : Среда 'TEST' или 'PROD'. (Необходимый)

входные

  • путь_входного_файла: Путь к подписываемому объекту кода. (Необходимый)
  • выходной_каталог_путь: Каталог, в который будут записаны подписанные объекты кода. Если output_path опущен, файл, указанный в -file_path, будет перезаписан подписанным файлом.

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

Создать проект

Под проект создайте файл для Трэвиса

Определение компонентов рабочего процесса

  1. Поместите архитектуру ЦП для запуска задания.

арка: amd64

  1. Язык по умолчанию для запуска тестов

язык: джава

  1. Укажите операционную систему для запуска задания

ОС: линукс

  1. Напишите дистрибутив Ubuntu, который будет использоваться

расстояние: бионический

  1. Определяйте переменные среды глобально. Свойство уровня задания переопределяет глобальные переменные.
  • Обратите внимание, что TERM=dumb требуется только для экземпляров проекта Gradle.
  • В разделе ENVIRONMENT_NAME поместите «TEST» для тестовой подписи и «PROD» для динамической подписи.

среда:

  Глобальный:

    – PROJECT_NAME="HelloWorld"

    – PROJECT_VERSION = ”0.0.1″

    - ТЕРМИН = тупой

    – ИМЯ_ОКРУЖАЮЩЕЙ СРЕДЫ = «ТЕСТ»

  1. Укажите порядок этапов. Все работы на одном этапе должны быть завершены до выполнения следующего этапа.

этапы:

  - строить

  - знак

Обрисовать этап сборки  

вакансии:

  следующие:

        – этап: сборка

  1. Название работы

      имя: build-maven

  1. Дистрибутив Ubuntu для использования

      расстояние: бионический

  1. Используйте команду docker для подписи  

      услуги:

        - докер

  1. Используйте dotnet-cli для сборки проекта

      язык: джава

  1. Java-версия для сборки проекта

      JDK:

      - ораклейдк17

  1. Кэш каталога m2 для ускорения

      Кэш:

        каталоги:

        – $ ДОМ/.м2

  1. Напишите сценарий «До» для запуска перед сборкой проекта.

      до_скрипта:

        # Создаем каталоги для артефактов

        – mkdir -p ${TRAVIS_BUILD_DIR}/артефакты

        – mkdir -p ${TRAVIS_BUILD_DIR}/пакеты

        # Установить параметры сборки Maven

        – экспорт MAVEN_CLI_OPTS=”–пакетный режим –ошибки –сбой в конце –показать версию –DinstallAtEnd=true –DdeployAtEnd=true”

  1. Напишите скрипт для сборки проекта.
  • В этом примере рабочего процесса подписания было создано несколько типов проектов. Вот почему файлы разных типов проектов хранились путем создания подпапок. Подпапка с именем «java» была создана для проектов Java. На демонстрационном снимке экрана выше не было необходимости создавать подпапку с именем «java», поэтому она не была включена в сценарий.

      сценарий:

        # Собрать проект Maven с параметрами Maven

        – mvn $MAVEN_CLI_OPTS чистая установка -f java/pom.xml

         # Копируем созданные артефакты в каталог артефактов

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

     

  1. Объясните, как указать список файлов и каталогов, которые должны быть присоединены к заданию в случае его успешного выполнения.

      рабочие области:

        Создайте:

          имя: maven-jar-артефакты

          пути:

            # Сохраните артефакт, чтобы использовать задание подписи

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

Очертите этап знака

 – этап: знак

  1. Напишите название работы

      имя: знак-jar-файл

  1. Поместите дистрибутив Ubuntu для использования

      расстояние: бионический

  1. Используйте команду Docker для подписи  

      услуги:

        - докер

     

  1. Определите переменные среды для конкретных заданий.
  • На скриншоте выше команда sign была определена непосредственно в скрипте sign, а не в переменных среды. Бдр методы могут корректно подписываться с помощью TravisCI.

      среда:

        КОМАНДА = «знак»

  1. Используйте dotnet-cli для сборки проекта

      язык: джава

  1. Java-версия для сборки проекта

      JDK:

      - ораклейдк17

  1. Перед запуском скрипта перед сборкой проекта

      до_скрипта:

        # Создаем каталоги для артефактов

        – mkdir -p ${TRAVIS_BUILD_DIR}/артефакты

        – mkdir -p ${TRAVIS_BUILD_DIR}/пакеты

     

  1. Скрипт для сборки проекта

      сценарий:

        # Docker Pull CodeSigner Образ Docker

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

        # Подписать артефакт с помощью образа CodeSigner Docker

        – docker run -i –rm –dns 8.8.8.8 –сетевой хост –volume ${TRAVIS_BUILD_DIR}/packages:/codesign/examples

          – том ${TRAVIS_BUILD_DIR}/артефакты:/кодовый дизайн/выход

          -e ИМЯ ПОЛЬЗОВАТЕЛЯ=${ИМЯ ПОЛЬЗОВАТЕЛЯ} -e ПАРОЛЬ=${ПАРОЛЬ} -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/output

  1. Используется для указания списка файлов и каталогов, которые должны быть присоединены к заданию в случае его успешного выполнения.

      рабочие области:

        использование:

          - maven-jar-артефакты

        Создайте:

          имя: подписанный jar-файл

          пути:

            # Сохранить подписанный артефакт

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

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

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

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

Перейдите к Трэвису и нажмите кнопку Настройки кнопка

Добавьте значение для каждой переменной

Прокрутите вниз до Переменные среды и нажмите кнопку «Добавить», чтобы добавить значение для каждой переменной.

Создайте репозиторий на Github

Ищите push-команды на Github.

Напишите push-команды на терминале в вашем редакторе.

Дождитесь завершения задания сборки

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

Начать этап подписания кода

Нажмите подпись раздел для CodeSignTool чтобы начать процесс подписания

Подождите, пока ваша виртуальная машина завершит загрузку.

Подтвердите, успешно ли подписан код

Вы можете обратиться к SSL.com Репозиторий Github, который содержит исходные коды образа докера и описывает, как его использовать: https://github.com/SSLcom/ci-images

Пример конвейера Travis CI

Ознакомьтесь с образцом пайплайна Travis CI, который мы создали на github.com/SSLcom/codesigner-travisci-образец

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

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

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

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

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

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

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

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

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