การผสานรวมการเซ็นชื่อรหัสบนคลาวด์กับ 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 = ข้อมูลรับรอง ('es-ชื่อผู้ใช้') // ชื่อผู้ใช้บัญชี SSL.com PASSWORD = credentials('es-password') // รหัสผ่านบัญชี SSL.com CREDENTIAL_ID = ข้อมูลประจำตัว ('es-crendential-id') // รหัสประจำตัวสำหรับการลงนามใบรับรอง TOTP_SECRET = ข้อมูลรับรอง ('es-totp-secret') // OAuth TOTP Secret (https://www.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 = ข้อมูลประจำตัว ('es-ชื่อผู้ใช้') // ชื่อผู้ใช้บัญชี SSL.com PASSWORD = credentials('es-password') // รหัสผ่านบัญชี SSL.com CREDENTIAL_ID = ข้อมูลประจำตัว ('es-crendential-id') // รหัสประจำตัวสำหรับการลงนามใบรับรอง TOTP_SECRET = ข้อมูลรับรอง ('es-totp-secret') // OAuth TOTP Secret (https://www.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

อย่าพลาดบทความและการปรับปรุงใหม่จาก SSL.com

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

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

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

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