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