Skip to main content

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

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

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

SignTool CLI

SignTool CLI เป็นไคลเอนต์บรรทัดคำสั่งการลงนามโค้ดระยะไกลที่ให้บริการโดย 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

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

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

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

  • 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 ไป:

  • คอมมิตเข้า 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:

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

ติดตั้ง 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

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

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

หากจำเป็นต้องลงนามระหว่างกระบวนการบูรณาการต่อเนื่องหรือการบิลด์อัตโนมัติ ไม่จำเป็นต้องติดตั้งและเรียกใช้ 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

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

วิธีเลือก

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

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

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