เครื่องมือไคลเอ็นต์
sslTrus มีไคลเอนต์บรรทัดคำสั่งและไคลเอนต์เดสก์ท็อปสำหรับเชื่อมต่อกับบริการลงนามโค้ดระยะไกลและดำเนินการลงนามไฟล์ให้เสร็จสมบูรณ์
โดย SignTool CLI เหมาะสำหรับสถานการณ์บรรทัดคำสั่ง สคริปต์ และการทำงานอัตโนมัติ ผู้ใช้ macOS ยังสามารถติดตั้งและอัปเดต SignTool CLI หรือไคลเอนต์เดสก์ท็อปผ่าน Homebrew ได้อีกด้วย
SignTool CLI
SignTool CLI เป็นไคลเอนต์บรรทัดคำสั่งการลงนามโค้ดระยะไกลที่ให้บริการโดย sslTrus ชื่อไฟล์ปฏิบัติการหลังการติดตั้งคือ signtool
ความสามารถหลักมีดังนี้:
| ฟังก์ชัน | คำสั่ง | คำอธิบาย |
|---|---|---|
| การลงนามไฟล์ | signtool sign | ดำเนินการลงนามโค้ดระยะไกลบนไฟล์ในเครื่อง |
| โควตาการลงนาม | signtool quota | สอบถามโควตาการลงนามคงเหลือและทั้งหมดของใบรับรอง |
| อัปเดตไคลเอนต์ | signtool update | สอบถามและติดตั้งไคลเอนต์เวอร์ชันล่าสุดสำหรับแพลตฟอร์มปัจจุบัน |
| Windows KSP | signtool ksp | ติดตั้งและจัดการ Windows Key Storage Provider |
| Windows CSP | signtool csp | ติดตั้งและจัดการ Windows Cryptographic Service Provider |
KSP และ CSP เป็นวิธีการผสานรวมแบบ Windows Provider สำหรับวิธีใช้งานโดยละเอียดโปรดดู Windows Provider
ดาวน์โหลดไคลเอนต์
สามารถดาวน์โหลด SignTool CLI ได้จากหน้าเผยแพร่ไคลเอนต์ของ 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 |
| ใช้สคริปต์เรียกการลงนามแบบ batch | SignTool CLI |
| ตรวจสอบโควต้าการลงนามโค้ด | SignTool CLI |
| ติดตั้งและอัปเดต CLI บน macOS | Homebrew |
| ใช้เดสก์ท็อปไคลเอนต์บน macOS | Homebrew |
| ซอฟต์แวร์ Windows เช่น Microsoft SignTool เรียกใช้คีย์ส่วนตัวระยะไกลโดยตรง | KSP |
| ซอฟต์แวร์ CryptoAPI แบบดั้งเดิม | CSP |
| การลงนามอัตโนมัติใน GitHub Actions | GitHub Actions |
| พัฒนาไคลเอนต์การลงนามด้วยตนเอง | API การลงนามโค้ดระยะไกล |
หากแอปพลิเคชันของคุณรองรับ Windows KSP, CSP หรือ Provider มาตรฐานอื่น ๆ อยู่แล้ว โดยทั่วไปควรเลือกใช้วิธีผสานรวมมาตรฐานที่เกี่ยวข้องก่อนเป็นอันดับแรก หากต้องการควบคุมขั้นตอนการลงนามโดยตรง ก็สามารถใช้ SignTool CLI หรือ API การลงนามโค้ดระยะไกลได้