Skip to main content

เครื่องมือไคลเอนต์

sslTrus มีไคลเอนต์แบบ command-line และเดสก์ท็อปสำหรับเชื่อมต่อกับบริการลงนามโค้ดระยะไกลและดำเนินการลงนามไฟล์ให้เสร็จสมบูรณ์

โดยที่ SignTool CLI เหมาะสำหรับสถานการณ์ command-line, สคริปต์ และระบบอัตโนมัติ ผู้ใช้ macOS ยังสามารถติดตั้งและอัปเดต SignTool CLI หรือไคลเอนต์เดสก์ท็อปผ่าน Homebrew ได้อีกด้วย

SignTool CLI​

SignTool CLI คือไคลเอนต์ command-line สำหรับการลงนามโค้ดระยะไกลที่ให้บริการโดย sslTrus ชื่อไฟล์ปฏิบัติการหลังการติดตั้งคือ signtool

ความสามารถหลักมีดังนี้:

ฟังก์ชันคำสั่งคำอธิบาย
การลงนามไฟล์signtool signดำเนินการลงนามโค้ดระยะไกลกับไฟล์ในเครื่อง
โควตาการลงนามsigntool quotaสอบถามโควตาการลงนามคงเหลือและทั้งหมดของใบรับรอง
อัปเดตไคลเอนต์signtool updateสอบถามและติดตั้งไคลเอนต์เวอร์ชันล่าสุดสำหรับแพลตฟอร์มปัจจุบัน
Windows KSPsigntool kspติดตั้งและจัดการ Windows Key Storage Provider
Windows CSPsigntool cspติดตั้งและจัดการ Windows Cryptographic Service Provider

KSP และ CSP เป็นวิธีการผสานรวม Windows Provider ดูรายละเอียดการใช้งานได้ที่ Windows Provider

ดาวน์โหลดไคลเอนต์​

สามารถดาวน์โหลด SignTool CLI ได้จากหน้าเผยแพร่ไคลเอนต์ของ sslTrus:

หน้าเผยแพร่ไคลเอนต์ sslTrus

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

ผู้ใช้ macOS ยังสามารถติดตั้งผ่าน Homebrew ได้โดยตรง ดูรายละเอียดด้านล่าง macOS Homebrew

ดูข้อมูลไคลเอนต์​

หลังติดตั้งเสร็จ สามารถรันคำสั่ง:

signtool --help

ดูคำสั่งช่วยเหลือ

ดูเวอร์ชันปัจจุบันของไคลเอ็นต์:

signtool --version

เวอร์ชันข้อมูลประกอบด้วยเวอร์ชันไคลเอ็นต์ รีวิชันบิลด์ แพลตฟอร์มที่รัน และเวลาบิลด์ เป็นต้น

ข้อมูลรับรองการเข้าถึง​

ก่อนใช้บริการลงนามโค้ดระยะไกล ต้องเตรียม:

  • Access Key
  • Access Secret
  • หมายเลขใบรับรอง (Cert Code)

โดย Access Key และ Access Secret ใช้สำหรับเข้าถึงบริการลงนามโค้ดระยะไกล ส่วนหมายเลขใบรับรองใช้ระบุใบรับรองการลงนามโค้ดที่ใช้ลงนามจริง

SignTool CLI สามารถระบุข้อมูลรับรองผ่านพารามิเตอร์คำสั่ง หรืออ่านผ่านตัวแปรสภาพแวดล้อมได้:

export ACCESS_KEY="your-access-key"
export ACCESS_SECRET="your-access-secret"

ขอแนะนำให้ให้ Access Secret ผ่านตัวแปรสภาพแวดล้อม, CI/CD Secret หรือวิธีการจัดการข้อมูลลับที่ปลอดภัยอื่น ๆ เป็นลำดับแรก

อย่านำ Access Secret ไป:

  • Commit ไปยัง Git repository
  • เขียนลงในสคริปต์สาธารณะ
  • แสดงในบันทึกการ build
  • ส่งไปยังระบบของบุคคลที่สามที่ไม่น่าเชื่อถือ

ที่อยู่บริการระยะไกล​

โดยค่าเริ่มต้น SignTool CLI จะใช้ที่อยู่บริการการผลิตของ sslTrus โดยไม่จำเป็นต้องกำหนดค่าเพิ่มเติม

หากใช้สภาพแวดล้อม NICSRS (www.nicsrs.com) จำเป็นต้องเพิ่ม --address nicsrs ในคำสั่ง:

signtool sign \
--address nicsrs \
--cert-code CERT_CODE \
--file app.exe

signtool quota และ signtool update ยังรองรับ --address nicsrs เช่นเดียวกัน

การลงนามไฟล์​

ใช้ signtool sign เพื่อทำการลงนามโค้ดระยะไกลกับไฟล์ในเครื่องได้โดยตรง

คำสั่งลงนามพื้นฐานที่สุด:

signtool sign \
--cert-code CERT_CODE \
--file app.exe

หากตั้งค่าไว้แล้ว:

ACCESS_KEY
ACCESS_SECRET

SignTool CLI จะอ่านข้อมูลรับรองการเข้าถึงที่เกี่ยวข้องโดยอัตโนมัติ

ใช้ SHA-2 ในการลงนามตามค่าเริ่มต้น

ระบุไฟล์เอาต์พุต​

ตามค่าเริ่มต้น ไคลเอนต์จะไม่เขียนทับไฟล์ต้นฉบับโดยตรง

สามารถระบุไฟล์เอาต์พุตหลังการลงนามผ่าน --out:

signtool sign \
--cert-code CERT_CODE \
--file app-unsigned.exe \
--out app-signed.exe

เขียนทับไฟล์เดิม​

หากต้องการแก้ไขไฟล์เดิมโดยตรง สามารถใช้ได้ดังนี้:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--override=true

เมื่อเปิดใช้งาน --override ผลลัพธ์การเซ็นชื่อจะถูกเขียนกลับลงในไฟล์อินพุตโดยตรง

เมื่อใช้ในสภาพแวดล้อมการสร้างแบบอัตโนมัติ ควรตรวจสอบว่าขั้นตอนถัดไปต้องการไฟล์ต้นฉบับหรือไฟล์ที่ผ่านการเซ็นชื่อแล้ว

การระบุคำอธิบายโปรแกรม​

สามารถเขียนคำอธิบายโปรแกรมและ URL ลงในลายเซ็น Authenticode ได้:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--desc "Example Application" \
--url "https://example.com"

SHA-1 และ SHA-2​

เปิดใช้งาน SHA-2 เป็นค่าเริ่มต้น:

signtool sign \
--cert-code CERT_CODE \
--file app.exe

ใช้เฉพาะ SHA-1:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=false

เปิดใช้งานทั้ง SHA-1 และ SHA-2 พร้อมกัน:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=true

SHA-1 ส่วนใหญ่ใช้เพื่อรองรับระบบเก่า โปรเจกต์ใหม่โดยทั่วไปควรเลือกใช้ SHA-2 เป็นอันดับแรก

การประทับเวลา​

การลงนามโค้ดโดยทั่วไปแนะนำให้เพิ่มการประทับเวลาที่เชื่อถือได้พร้อมกัน

SignTool CLI จะกำหนดค่าบริการประทับเวลาให้กับการลงนามโดยอัตโนมัติตามค่าเริ่มต้น และยังสามารถระบุเซิร์ฟเวอร์ประทับเวลาผ่านพารามิเตอร์ได้ด้วย:

  • --timestamp-rfc3161: เซิร์ฟเวอร์ประทับเวลา RFC 3161 ที่ใช้สำหรับการลงนาม SHA-2
  • --timestamp: เซิร์ฟเวอร์ประทับเวลา Authenticode ที่ใช้สำหรับการลงนาม SHA-1

การระบุเซิร์ฟเวอร์ประทับเวลา RFC 3161:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161=http://timestamp.acs.microsoft.com

ระบุเซิร์ฟเวอร์ Authenticode Timestamp:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp=http://timestamp.sectigo.com

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

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161= \
--timestamp=

เกี่ยวกับโปรโตคอลการประทับเวลา ที่อยู่เซิร์ฟเวอร์ และคำแนะนำในการเลือก โปรดดู เอกสารอ้างอิง

ตรวจสอบโควตาการลงนาม​

ใช้:

signtool quota

สามารถตรวจสอบโควต้าของใบรับรองการลงนามโค้ดที่มองเห็นได้ด้วยข้อมูลรับรองการเข้าถึงปัจจุบัน

เนื้อหาที่ส่งออกประกอบด้วย:

  • หมายเลขใบรับรอง
  • ข้อมูลใบรับรอง
  • จำนวนครั้งการลงนามคงเหลือ
  • จำนวนครั้งการลงนามทั้งหมด

หากต้องการผลลัพธ์ในรูปแบบ JSON:

signtool quota --json

นอกจากนี้ยังสามารถใช้รูปแบบย่อได้:

signtool quota -j

จำนวนครั้งในการลงนามที่แน่นอนอาจแตกต่างกันไปตามวิธีการเรียกใช้ CLI, KSP, Jarsigner หรือเครื่องมือ build โปรดดูรายละเอียดเพิ่มเติมได้ที่ คำอธิบายการคำนวณจำนวนครั้งในการลงนาม

อัปเดตไคลเอนต์​

SignTool CLI รองรับการตรวจสอบและติดตั้งเวอร์ชันล่าสุดสำหรับแพลตฟอร์มปัจจุบัน:

signtool update

ในระหว่างการอัปเดตจะมีการตรวจสอบขนาดไฟล์ที่ดาวน์โหลดและ SHA-256 เพื่อยืนยันความสมบูรณ์ของไฟล์ไคลเอนต์

หากติดตั้ง SignTool CLI ผ่าน Homebrew แนะนำให้จัดการเวอร์ชันผ่าน Homebrew ต่อไป แทนที่จะใช้วิธีอัปเดตทั้งสองแบบผสมกัน

macOS Homebrew​

ผู้ใช้ macOS สามารถติดตั้ง SignTool CLI หรือเดสก์ท็อปไคลเอนต์ผ่าน Homebrew Tap อย่างเป็นทางการของ sslTrus

仓库สาธารณะ:ssltrus-official/homebrew-tap

ติดตั้ง Homebrew Tap​

ดำเนินการ:

brew tap ssltrus-official/tap
brew trust ssltrus-official/tap

เมื่อเสร็จสิ้นแล้วก็สามารถติดตั้งไคลเอนต์ที่เกี่ยวข้องได้

ติดตั้ง SignTool CLI​

ดำเนินการ:

brew install ssltrus-official/tap/code-sign-cli

เมื่อติดตั้งเสร็จสิ้นแล้ว สามารถดำเนินการ:

signtool --version

ยืนยันว่าไคลเอนต์ได้รับการติดตั้งอย่างถูกต้อง

ชื่อแพ็กเกจใน Homebrew คือ:

code-sign-cli

ชื่อโปรแกรมบรรทัดคำสั่งที่ติดตั้งจริงคือ:

signtool

ติดตั้งเดสก์ท็อปไคลเอ็นต์​

ติดตั้ง sslTrus เดสก์ท็อปไคลเอ็นต์สำหรับการลงนามโค้ด:

brew install --cask ssltrus-official/tap/code-sign-gui

ชื่อ Homebrew Cask ที่เกี่ยวข้องคือ:

code-sign-gui

อัปเดตไคลเอ็นต์​

หากติดตั้งไคลเอ็นต์ผ่าน Homebrew แนะนำให้อัปเกรดผ่าน Homebrew

ขั้นแรกให้อัปเดตข้อมูลแพ็กเกจของ Homebrew:

brew update

อัปเกรด SignTool CLI:

brew upgrade ssltrus-official/tap/code-sign-cli

อัปเกรดไคลเอนต์เดสก์ท็อป:

brew upgrade --cask ssltrus-official/tap/code-sign-gui

เพื่อให้การติดตั้งเวอร์ชันภายในเครื่องสอดคล้องกับข้อมูลเมตาของแพ็กเกจ Homebrew

Windows Provider​

หากสถานการณ์ของคุณไม่ใช่การเรียกใช้ SignTool CLI โดยตรง แต่ต้องการให้ Microsoft SignTool, Visual Studio, MSBuild, Advanced Installer หรือซอฟต์แวร์ Windows อื่น ๆ ใช้คีย์ส่วนตัวสำหรับการลงนามโค้ดระยะไกลโดยตรง ควรใช้ Windows Provider

sslTrus มีให้บริการ:

  • KSP (Key Storage Provider): สำหรับ Windows CNG
  • CSP (Cryptographic Service Provider): สำหรับ Windows CryptoAPI แบบดั้งเดิม

โปรดดู Windows Provider

การลงนามอัตโนมัติด้วย CI/CD​

หากจำเป็นต้องลงนามระหว่างกระบวนการ Continuous Integration หรือการ build อัตโนมัติ ไม่จำเป็นต้องติดตั้งและเรียกใช้ SignTool CLI ด้วยตนเองเสมอไป

ตัวอย่างเช่น GitHub Actions สามารถใช้ sslTrus Code Sign Action ได้โดยตรง:

- name: Sign files
uses: ssltrus-official/code-sign-action@v1
with:
access-key: ${{ secrets.SSLTRUS_ACCESS_KEY }}
access-secret: ${{ secrets.SSLTRUS_ACCESS_SECRET }}
cert-code: ${{ secrets.SSLTRUS_CERT_CODE }}
files: build/app.exe

GitHub Action รองรับ Linux, macOS และ Windows Runner และสามารถทำการลงนามโค้ดระยะไกลกับไฟล์ที่ระบุได้โดยตรงในขั้นตอนการ build

ที่เก็บสาธารณะ: ssltrus-official/code-sign-action

สำหรับการกำหนดค่าแบบสมบูรณ์ โปรดดู CI/CD และเครื่องมือ build

วิธีเลือก​

คุณสามารถเลือกไคลเอ็นต์หรือวิธีการผสานรวมที่เหมาะสมตามลักษณะการใช้งานจริง:

สถานการณ์วิธีที่แนะนำ
ลงนามไฟล์ด้วยตนเองในเทอร์มินัลSignTool CLI
เรียกใช้การลงนามแบบ batch ผ่านสคริปต์SignTool CLI
ตรวจสอบโควตาการลงนามโค้ดSignTool CLI
ติดตั้งและอัปเดต CLI บน macOSHomebrew
ใช้ไคลเอ็นต์เดสก์ท็อปบน macOSHomebrew
ซอฟต์แวร์ Windows เช่น Microsoft SignTool เรียกใช้คีย์ส่วนตัวระยะไกลโดยตรงKSP
ซอฟต์แวร์ CryptoAPI แบบดั้งเดิมCSP
การลงนามอัตโนมัติด้วย GitHub ActionsGitHub Actions
พัฒนาไคลเอ็นต์การลงนามด้วยตนเองAPI การลงนามโค้ดระยะไกล

หากแอปพลิเคชันของคุณรองรับ Windows KSP, CSP หรือ Provider มาตรฐานอื่น ๆ อยู่แล้ว โดยทั่วไปควรเลือกใช้วิธีการผสานรวมมาตรฐานที่สอดคล้องกันก่อน หากต้องการควบคุมกระบวนการลงนามโดยตรง ก็สามารถใช้ SignTool CLI หรือ API การลงนามโค้ดระยะไกลได้