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

Тази статия с ръководство демонстрира как eSigner е интегриран с GitHub Actions за автоматизирано подписване на код в настройка за непрекъсната интеграция/непрекъснато доставяне (CI/CD).

eSigner е нашата базирана в облака платформа за подписване, на която разработчиците на софтуер от цял ​​свят се доверяват за извършване на корпоративно подписване на код без необходимост от USB токени или друг специализиран хардуер.  Един от компонентите на eSigner е CodeSignTool: управлявана от поверителност помощна програма за команден ред, която е много ефективна за разработчици, които искат да автоматизират подписването на код.  Следните раздели демонстрират как можете да подпишете Java код (Maven) на GitHub Actions с помощта на eSigner CodeSignTool.

SSL.com 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

 

Входове

  • потребителско име: потребителско име на SSL.com акаунт. (задължително)
  • парола: парола за акаунт в SSL.com (задължително)
  • credential_id: Идентификационен номер за подписване на сертификат. Ако credential_id е пропуснат и потребителят има само един сертификат за подписване на код на eSigner, CodeSignTool ще го използва по подразбиране. Ако потребителят има повече от един сертификат за подписване на код, този параметър е задължителен. (задължително)
  • totp_secret: OAuth TOTP Secret. Можете да получите достъп до подробна информация за https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Задължително)
  • файлова пътека: Път на кодов обект, който трябва да бъде подписан. (задължително)
  • изходен_път: Директория, където ще бъдат записани обекти с подписан код. Ако output_path е пропуснат, файлът, указан в -file_path, ще бъде презаписан с подписания файл.

Java Code (Maven) Примерен работен процес за подписване на JAR

Подгответе компонентите на работния процес

  1. Създайте папка Github във вашия редактор. Включете работни потоци с папката и създайте yml файл под папката.
    1. Наименувайте вашия проект и вида на работния процес, който е включен
    Име: Maven Build and Sign
     
    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. Определете работните места във вашия редактор
    работни места: build-and-sign-jar:
     
    1. Изпълнете задание на Ubuntu Runner
        работи на: ubuntu-latest
     
    1. Създайте име. Когато работният поток се изпълнява, това е името, което се регистрира.
      име: CodeSigner на Java с Maven
     

Очертайте стъпките за проверка на изходния код, настройка на средата на Java и Maven и създаване на директория на артефактите.

  1) Проверете изходния код, така че работният процес да има достъп до него.

   стъпки: - използва: actions/checkout@v2
 

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

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

 

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

 - име: Създаване на обвивка на директория: bash run: | mkdir ${GITHUB_WORKSPACE}/артефакти mkdir ${GITHUB_WORKSPACE}/пакети

 

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

      След като jar файлът е създаден, копирайте в папката 'packages' за подписване

  • В този примерен работен поток за писмено подписване бяха създадени множество типове проекти. Ето защо файловете от различни типове проекти се съхраняват чрез създаване на подпапки. Създадена е подпапка с име „java“ за Java проекти. В демонстрационния скрийншот по-горе не беше необходимо да се създава подпапка с име „java“, така че това не беше включено в скрипта.
 - име: Build Java Project shell: bash run: | mvn чиста инсталация -f java/pom.xml cp java/target/${{env.PROJECT_NAME}}-${{env.PROJECT_VERSION}}.jar ${GITHUB_WORKSPACE}/packages/${{env.PROJECT_NAME}}. буркан
 

Очертайте стъпките за заданията за подписване и качване

  1. Заданието Sign е стъпката, при която създадените 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 Secret (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

           Директория, където ще бъдат записани обекти с подписан код.

изходен_път: ${GITHUB_WORKSPACE}/артефакти

 

  1. Заданието за качване е стъпката, при която артефактите от вашия работен процес ще бъдат качени, което ви позволява да споделяте данни между задания и да съхранявате данни, след като работният поток приключи
 - име: Качване на подписани файлове използва: actions/upload-artifact@v2 с: име: ${{env.PROJECT_NAME}}.jar път: ./artifacts/${{env.PROJECT_NAME}}.jar
 

Вземете програма за качване на артефакти на компилация от Github Marketplace

Прегледайте скрипта си за кодиране

Като цяло скриптът за кодиране за заданията за изграждане, подписване и качване трябва да изглежда като изображението по-долу. Уверете се, че сте коригирали всички грешки, като грешен правопис или грешни прекъсвания на редове в скрипта, така че процесът на подписване да протича гладко.

SSL.com EV Подписване на код сертификатите помагат за защитата на вашия код от неоторизирано подправяне и компрометиране с най-високо ниво на валидиране и са достъпни само за малко $ 249 годишно. Можете също така да използвайте вашия EV сертификат за подписване на код в мащаб в облака с помощта на eSigner.

ПОРЪЧАЙ СЕГА

Дефинирайте вашите променливи на средата

Отидете до местоположението на вашия проект във вашия Github акаунт. Щракнете върху Действия раздел. Кликнете върху Нова тайна на хранилището бутон, за да поставите стойностите за всяка променлива на средата, необходима за подписване на вашия код.

Създайте ново хранилище в командния ред

Продължете до местоположението на вашия проект в Github и копирайте всеки компонент на командата push.

Прокарайте проекта

Включете всеки команден ред за натискане във вашия редактор на код. След завършване кодът автоматично ще бъде изпратен в Github.

Изчакайте артефактът да бъде подписан с eSigner CodeSignTool

Качете подписания файл

Кликнете върху подписания файл, за да го качите.

Забележка: Уверете се, че сте коригирали печатни грешки или грешни прекъсвания на редове в скрипта, така че процесът на подписване да протича гладко.

Примерен канал за действия на Github


Вижте примерния тръбопровод за Github Actions, върху който сме създали github.com/SSLcom/codesigner-github-sample  

Други ръководства за интегриране на CI/CD отдалечено подписване

Нуждаете се от персонализирани решения? 

С нашите експертни познания и петзвезден екип за поддръжка, ние сме готови и желаем да работим с вас по персонализирани решения или отстъпки за подписване на голям обем на ниво предприятие. Попълнете формата по-долу и ние ще се свържем с вас.

Абонирайте се за бюлетина на SSL.com

Не пропускайте нови статии и актуализации от SSL.com

Бъдете информирани и защитени

SSL.com е глобален лидер в киберсигурността, PKI и цифрови сертификати. Регистрирайте се, за да получавате най-новите новини от индустрията, съвети и съобщения за продукти от SSL.com.

Ще се радваме на вашите отзиви

Попълнете нашата анкета и ни кажете какво мислите за скорошната си покупка.