การผสานรวมการเซ็นชื่อรหัสบนคลาวด์กับ Jenkins CI

นี่คือคำแนะนำเกี่ยวกับวิธีการเซ็นโค้ดอัตโนมัติบนเจนกินส์ด้วยการใช้ eSigner CodeSignTool CodeSignTool เป็นยูทิลิตีบรรทัดคำสั่งที่เหมาะสำหรับการลงนามปริมาณมาก และรวมเข้ากับแพลตฟอร์ม CI/CD ต่างๆ ได้อย่างราบรื่น เป็นส่วนหนึ่งของ eSigner: บริการเซ็นชื่อจากระยะไกลซึ่งนำเสนอวิธีการเซ็นรหัสองค์กรที่มีประสิทธิภาพ ปลอดภัย และเป็นมิตรกับผู้ใช้

SSL.com ของ EV การลงรหัส ใบรับรอง ช่วยปกป้องรหัสของคุณจากการปลอมแปลงโดยไม่ได้รับอนุญาตและการประนีประนอมด้วยการตรวจสอบระดับสูงสุด และพร้อมใช้งานในราคาเพียง $ 249 al año.

ซื้อใบรับรองการลงนามรหัส SSL.COM ของคุณ

สร้างไฟล์ Jenkins และกำหนดไปป์ไลน์ในโปรแกรมแก้ไขโค้ดของคุณ

ไปป์ไลน์ { ตัวแทนตัวเลือกใด ๆ { buildDiscarder (logRotator (numToKeepStr: "5")) ปิดการใช้งาน ConcurrentBuilds () }

ตั้งค่าเครื่องมือ .NET ในตัวแก้ไขโค้ดโดยกำหนดค่า Jenkins

คลิก จัดการเจนกินส์ แท็บบนแดชบอร์ด Jenkins ของคุณ

เลื่อนลงมาที่หน้าและคลิก Global Tool Configuration

เลื่อนลงแล้วคลิก การติดตั้ง .NET SDK.

คัดลอกค่าสำหรับ .NET SDK แล้ววางลงในโปรแกรมแก้ไขโค้ดของคุณ


เครื่องมือ { dotnetsdk "DOTNET_CORE_3.1.24" }

ไปที่ plugins.jenkins.io และติดตั้ง .NET SDK plugin

ภายใต้ จัดการเจนกินส์ บนแดชบอร์ดของคุณ ตรวจสอบ จัดการปลั๊กอิน เพื่อยืนยันว่าได้ติดตั้งปลั๊กอิน .NET SDK แล้ว

หลังจากยืนยันว่าได้ติดตั้งปลั๊กอินแล้ว ให้กลับไปที่ .NET SDK INSTALLATIONS และตรวจสอบให้แน่ใจว่าได้ตั้งค่าเวอร์ชันและรายละเอียดการเปิดตัวของปลั๊กอิน .NET SDK ที่ถูกต้อง ดำเนินการต่อเพื่อคลิก ลด ปุ่ม

ตั้งค่าตัวแปรสภาพแวดล้อมในตัวแก้ไขโค้ดของคุณ

สภาพแวดล้อม { USERNAME = credentials('es-username') // ชื่อผู้ใช้บัญชี SSL.com PASSWORD = credentials('es-password') // รหัสผ่านบัญชี SSL.com CREDENTIAL_ID = credentials('es-crendential-id') // รหัสประจำตัวสำหรับการลงนามใบรับรอง TOTP_SECRET = credentials('es-totp-secret') // รหัสลับ TOTP ของ OAuth (https://ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // ชื่อสภาพแวดล้อม SSL.com สำหรับบัญชีสาธิตสามารถใช้ 'TEST' ได้ แต่ถ้าไม่ใช่บัญชีสาธิตจะใช้ 'PROD' }

คุณจะพบค่าสำหรับตัวแปรแต่ละตัวบนแดชบอร์ด Jenkins ของคุณภายใต้ ความปลอดภัย> จัดการ หนังสือรับรอง




กำหนดขั้นตอนสำหรับการสร้างไดเร็กทอรีสิ่งประดิษฐ์ การดึงอิมเมจนักเทียบท่า การสร้าง .NET และการเซ็นโค้ดของอาร์ติแฟกต์

        1) สร้างไดเรกทอรีสิ่งประดิษฐ์สำหรับไฟล์สิ่งประดิษฐ์ที่ลงชื่อและไม่ได้ลงนามในร้านค้า

 stage ('สร้างไดเรกทอรีสิ่งประดิษฐ์') { ขั้นตอน { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }

        2) ดึง Codesigner Docker Image จาก Github Registry

stage('Docker Pull Image') { ขั้นตอน { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }

        3) สร้างโปรเจ็กต์ dotnet หรือโซลูชันและการพึ่งพาทั้งหมด หลังจากสร้างไฟล์ dll หรือ exe แล้ว ให้คัดลอกไปยังโฟลเดอร์ 'packages' เพื่อลงนาม

เวที ('สร้าง Dotnet') { ขั้นตอน { 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) นี่คือขั้นตอนที่ไฟล์ DLL (สิ่งประดิษฐ์) ที่สร้างขึ้นจะถูกเซ็นชื่อด้วย CodeSignTool

stage('ลงชื่อและบันทึก Dotnet Core DLL Artifact') { ขั้นตอน { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- ปริมาณ ${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' } โพสต์ { เสมอ { archiveArtifacts สิ่งประดิษฐ์: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } } } } } } }

SSL.com ของ EV การลงรหัส ใบรับรอง ช่วยปกป้องรหัสของคุณจากการปลอมแปลงโดยไม่ได้รับอนุญาตและการประนีประนอมด้วยการตรวจสอบระดับสูงสุด และพร้อมใช้งานในราคาเพียง $ 249 al año.

ซื้อใบรับรองการลงนามรหัส SSL.COM ของคุณ


สร้าง Github repo

คัดลอกส่วนประกอบคำสั่ง push บน Github

เขียนคำสั่งที่เทอร์มินัลใหม่ในตัวแก้ไขโค้ดของคุณเพื่อส่งโค้ด

หลังจากกดรหัสแล้ว ไปที่บัญชี Github ของคุณและคัดลอกลิงก์ URL ของโครงการของคุณ

ไปที่บัญชี Jenkins ของคุณแล้วคลิก สร้างงาน ลิงค์

Choose ท่อส่งหลายสาขาตั้งชื่อโปรเจ็กต์ของคุณ แล้วคลิก OK ปุ่ม

ภายใต้ แหล่งที่มาของสาขาให้เลือก ไป และวางลิงก์ URL ของโปรเจ็กต์ Github ของคุณ

เลื่อนลงไปที่ สแกนทริกเกอร์ไปป์ไลน์หลายสาขา. ทำเครื่องหมายในช่องสำหรับ เป็นระยะถ้าไม่ได้เรียกใช้เป็นอย่างอื่น. คุณสามารถเลือก 2 นาที.

คลิก ลด ปุ่ม


กลับไปที่บัญชี Jenkins ของคุณ คลิกที่โครงการของคุณ และยืนยันว่าไปป์ไลน์ได้เริ่มต้นขึ้นแล้ว

คลิกที่โปรเจ็กต์ Jenkins ของคุณแล้วเลือก สแกนไปป์ไลน์หลายสาขาทันที บนแดชบอร์ด

คลิก เอาต์พุตคอนโซล

เลื่อนลงมาและตรวจสอบว่าการลงชื่อรหัสสำเร็จหรือไม่

สคริปต์ทั้งหมด

หมายเหตุ: ตรวจสอบให้แน่ใจว่าได้แก้ไขข้อผิดพลาดในการพิมพ์หรือตัวแบ่งบรรทัดที่ผิดพลาดในสคริปต์เพื่อให้กระบวนการลงนามทำงานได้อย่างราบรื่น

กำหนดไปป์ไลน์

ไปป์ไลน์ { ตัวแทนตัวเลือกใด ๆ { buildDiscarder (logRotator (numToKeepStr: "5")) ปิดการใช้งาน ConcurrentBuilds () }

ติดตั้งเครื่องมือสร้าง

เครื่องมือ { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

สร้างตัวแปรสภาพแวดล้อม

สภาพแวดล้อม { USERNAME = credentials('es-username') // ชื่อผู้ใช้บัญชี SSL.com PASSWORD = credentials('es-password') // รหัสผ่านบัญชี SSL.com CREDENTIAL_ID = credentials('es-crendential-id') // รหัสประจำตัวสำหรับการลงนามใบรับรอง TOTP_SECRET = credentials('es-totp-secret') // รหัสลับ TOTP ของ OAuth (https://ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // ชื่อสภาพแวดล้อม SSL.com สำหรับบัญชีสาธิตสามารถใช้ 'TEST' ได้ แต่ถ้าไม่ใช่บัญชีสาธิตจะใช้ 'PROD' }

สคริปต์สำหรับขั้นตอนการสร้างและลงนาม

ขั้นตอน { // 1) สร้างไดเรกทอรีสิ่งประดิษฐ์สำหรับจัดเก็บไฟล์สิ่งประดิษฐ์ที่ลงนามและไม่ได้ลงนาม / 2) ดึง Codesigner Docker Image จาก Github Registry stage('Docker Pull Image') { ขั้นตอน { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) สร้าง dotnet project หรือ solution และทั้งหมด การพึ่งพาอาศัยกัน // หลังจากสร้างไฟล์ dll หรือ exe แล้ว ให้คัดลอกไปยังโฟลเดอร์ 'packages' สำหรับขั้นตอนการลงนาม ('Build Dotnet') { ขั้นตอน { 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) นี่คือขั้นตอนที่ไฟล์ DLL (artifact) ที่สร้างขึ้นจะได้รับการเซ็นชื่อด้วย CodeSignTool stage('ลงชื่อและบันทึก Dotnet Core DLL Artifact') { ขั้นตอน { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- ปริมาณ ${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' } โพสต์ { เสมอ { archiveArtifacts สิ่งประดิษฐ์: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } } } } } } }
คุณสามารถอ้างถึง SSL.com ที่เก็บ Github ซึ่งมีซอร์สโค้ดของอิมเมจนักเทียบท่าและอธิบายวิธีใช้งาน: https://github.com/SSLcom/ci-images 

ตัวอย่างท่อส่งของเจนกินส์

ตรวจสอบตัวอย่างไปป์ไลน์ของ Jenkins ที่เราสร้างขึ้น github.com/SSLcom/codesigner-jenkins-sample

คู่มือการรวมการเซ็นชื่อระยะไกลอื่นๆ

ต้องการโซลูชันที่กำหนดเองหรือไม่ 

ด้วยความรู้จากผู้เชี่ยวชาญและเจ้าหน้าที่สนับสนุนระดับห้าดาว เราพร้อมและยินดีที่จะทำงานร่วมกับคุณเกี่ยวกับโซลูชันแบบกำหนดเองหรือส่วนลดการลงนามจำนวนมากในระดับองค์กร กรอกแบบฟอร์มด้านล่าง แล้วเราจะติดต่อกลับไป

รับทราบข้อมูลและปลอดภัย

SSL.com เป็นผู้นำระดับโลกในด้านความปลอดภัยทางไซเบอร์ PKI และใบรับรองดิจิทัล ลงทะเบียนเพื่อรับข่าวสารอุตสาหกรรม เคล็ดลับ และประกาศผลิตภัณฑ์ล่าสุดจาก SSL.com.

SSL.com

เราชอบความคิดเห็นของคุณ

ทำแบบสำรวจของเราและแจ้งให้เราทราบความคิดเห็นของคุณเกี่ยวกับการซื้อครั้งล่าสุดของคุณ

ภาพรวมความเป็นส่วนตัว
SSL.com

เว็บไซต์นี้ใช้คุกกี้เพื่อให้เราสามารถมอบประสบการณ์การใช้งานที่ดีที่สุดแก่คุณ ข้อมูลคุกกี้จะถูกเก็บไว้ในเบราว์เซอร์ของคุณและทำงานเช่นจดจำคุณเมื่อคุณกลับมาที่เว็บไซต์ของเราและช่วยให้ทีมของเราเข้าใจว่าส่วนใดของเว็บไซต์ที่คุณสนใจและมีประโยชน์ที่สุด

สำหรับข้อมูลเพิ่มเติมอ่านของเรา คุกกี้และคำชี้แจงสิทธิ์ส่วนบุคคล.

คุกกี้บุคคลที่สาม

เว็บไซต์นี้ใช้ Google Analytics & เครื่องนับสถิติ เพื่อรวบรวมข้อมูลที่ไม่ระบุตัวตนเช่นจำนวนผู้เยี่ยมชมเว็บไซต์และหน้าเว็บที่ได้รับความนิยมสูงสุด

การเปิดใช้งานคุกกี้เหล่านี้ช่วยให้เราสามารถปรับปรุงเว็บไซต์ของเรา

แสดงรายละเอียด