Ana içeriğe geç

İstemci Araçları

sslTrus, uzak kod imzalama hizmetine bağlanmak ve dosya imzalamak için komut satırı istemcisi ve masaüstü istemcisi sunar.

Bunlardan SignTool CLI komut satırı, betik ve otomasyon senaryoları için uygundur; macOS kullanıcıları ayrıca Homebrew aracılığıyla SignTool CLI veya masaüstü istemcisini yükleyip güncelleyebilir.

SignTool CLI

SignTool CLI, sslTrus tarafından sağlanan uzak kod imzalama komut satırı istemcisidir; kurulumdan sonra yürütülebilir dosya adı signtool şeklindedir.

Başlıca şu yetenekleri sunar:

İşlevKomutAçıklama
Dosya imzalamasigntool signYerel dosyalarda uzak kod imzalama gerçekleştirir
İmza kotasısigntool quotaSertifikanın kalan ve toplam imza kotasını sorgular
İstemci güncellemesigntool updateGeçerli platform için en son istemciyi sorgular ve yükler
Windows KSPsigntool kspWindows Key Storage Provider'ı yükler ve yönetir
Windows CSPsigntool cspWindows Cryptographic Service Provider'ı yükler ve yönetir

KSP ve CSP, Windows Provider entegrasyon yöntemleridir; kullanım yöntemleri için lütfen Windows Provider bölümüne bakın.

İstemciyi indirme

SignTool CLI, sslTrus istemci yayın sayfasından indirilebilir:

sslTrus istemci yayın sayfası

Yayın sayfası, her platform için en yeni istemci kurulum paketlerini sağlar. Otomasyon senaryolarında, sürüm dizini latest.json aracılığıyla güncel en son sürüm bilgisi sorgulanabilir.

macOS kullanıcıları ayrıca doğrudan Homebrew üzerinden de kurabilir; aşağıdaki macOS Homebrew bölümüne bakın.

İstemci Bilgilerini Görüntüleme

Kurulum tamamlandıktan sonra şunu çalıştırabilirsiniz:

signtool --help

Komut yardımını görüntüleyin.

Geçerli istemci sürümünü görüntüleyin:

signtool --version

Sürüm bilgileri; istemci sürümü, derleme revizyonu, çalışma platformu ve derleme zamanı gibi bilgileri içerir.

Erişim Kimlik Bilgileri

Uzaktan kod imzalama hizmetini kullanmadan önce şunları hazırlamanız gerekir:

  • Access Key
  • Access Secret
  • Sertifika Numarası (Cert Code)

Access Key ve Access Secret, uzaktan kod imzalama hizmetine erişmek için kullanılır; sertifika numarası ise imzayı fiilen gerçekleştirecek kod imzalama sertifikasını belirtmek için kullanılır.

SignTool CLI, kimlik bilgilerini komut parametreleriyle sağlayabileceği gibi ortam değişkenleri aracılığıyla da okuyabilir:

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

Access Secret'i öncelikle ortam değişkenleri, CI/CD Secret veya diğer güvenli kimlik bilgisi yönetimi yöntemleriyle sağlamanız önerilir.

Access Secret'i şunları yapmayın:

  • Git deposuna commit etmeyin.
  • Herkese açık komut dosyalarına yazmayın.
  • Derleme günlüklerine çıktı olarak vermeyin.
  • Güvenilmeyen üçüncü taraf sistemlere göndermeyin.

Uzak Hizmet Adresi

Varsayılan olarak SignTool CLI, sslTrus üretim hizmet adresini kullanır; ek yapılandırma gerekmez.

NICSRS (www.nicsrs.com) ortamı kullanılıyorsa, komuta --address nicsrs eklenmesi gerekir:

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

signtool quota ve signtool update aynı zamanda --address nicsrs destekler.

Dosya İmzalama

signtool sign kullanarak yerel dosyalar üzerinde doğrudan uzaktan kod imzalama gerçekleştirebilirsiniz.

En temel imzalama komutu:

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

如果已经设置:

ACCESS_KEY
ACCESS_SECRET

SignTool CLI, ilgili erişim kimlik bilgilerini otomatik olarak okur.

Varsayılan olarak imzalama için SHA-2 kullanılır.

Çıktı Dosyasını Belirleme

Varsayılan olarak, istemci orijinal dosyanın üzerine doğrudan yazmaz.

İmzalanmış çıktı dosyasını --out ile belirtebilirsiniz:

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

Orijinal Dosyanın Üzerine Yazma

Orijinal dosyayı doğrudan değiştirmeniz gerekiyorsa şunu kullanabilirsiniz:

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

--override etkinleştirildiğinde, imza sonucu doğrudan girdi dosyasına geri yazılır.

Otomatik derleme ortamında kullanırken, sonraki adımların orijinal dosyayı mı yoksa imzalı dosyayı mı gerektirdiğini doğrulamanız gerekir.

Program açıklamasını belirtme

Program açıklaması ve URL, Authenticode imzasına yazılabilir:

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

SHA-1 ve SHA-2

Varsayılan olarak SHA-2 etkindir:

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

Yalnızca SHA-1 kullanın:

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

SHA-1 ve SHA-2'yi aynı anda etkinleştirin:

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

SHA-1 esas olarak eski sistemlerle uyumluluk için kullanılır; yeni projelerde genellikle SHA-2 tercih edilmelidir.

Zaman Damgası

Kod imzalamada genellikle güvenilir bir zaman damgası eklenmesi önerilir.

SignTool CLI varsayılan olarak imza için zaman damgası hizmetini otomatik yapılandırır; zaman damgası sunucusu parametre ile de belirtilebilir:

  • --timestamp-rfc3161: SHA-2 imzalarında kullanılan RFC 3161 zaman damgası sunucusu.
  • --timestamp: SHA-1 imzalarında kullanılan Authenticode zaman damgası sunucusu.

RFC 3161 zaman damgası sunucusunu belirtme:

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

Belirtilen Authenticode zaman damgası sunucusu:

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

İlgili zaman damgasını kapatmanız gerekiyorsa parametre değerini boş bırakabilirsiniz:

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

Zaman damgası protokolü, sunucu adresi ve seçim önerileri hakkında bilgi için Referans Materyalleri bölümüne bakın.

İmza kotasını sorgulama

Kullanım:

signtool quota

Geçerli erişim belirtecinin görebildiği kod imzalama sertifikası kotasını sorgulayabilirsiniz.

Çıktı içeriği şunları kapsar:

  • Sertifika numarası.
  • Sertifika bilgileri.
  • Kalan imzalama sayısı.
  • Toplam imzalama sayısı.

JSON biçiminde çıktı gerekiyorsa:

signtool quota --json

Kısaltma da kullanılabilir:

signtool quota -j

Spesifik imza sayısı hesaplama yöntemi; CLI, KSP, Jarsigner veya derleme aracının çağrılma biçimine göre farklılık gösterebilir. Ayrıntılı kurallar için lütfen İmza Sayısı Hesaplama Açıklaması bölümüne bakın.

İstemciyi Güncelleme

SignTool CLI, mevcut platform için en son sürümün sorgulanmasını ve yüklenmesini destekler:

signtool update

Güncelleme sırasında indirilen dosyanın boyutu ve SHA-256 değeri doğrulanarak istemci dosyasının bütünlüğü kontrol edilir.

SignTool CLI Homebrew aracılığıyla yüklendiyse, iki güncelleme yöntemini aynı anda karıştırmak yerine sürümü Homebrew üzerinden yönetmeye devam etmeniz önerilir.

macOS Homebrew

macOS kullanıcıları, sslTrus resmi Homebrew Tap'ı aracılığıyla SignTool CLI'yı veya masaüstü istemcisini yükleyebilir.

Homebrew Tap'ı Yükleme

Çalıştırın:

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

Kurulum tamamlandıktan sonra ilgili istemciyi yükleyebilirsiniz.

SignTool CLI'yı Yükleme

Çalıştırın:

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

Kurulum tamamlandıktan sonra şunu çalıştırabilirsiniz:

signtool --version

İstemcinin düzgün kurulup kurulmadığını doğrulayın.

Homebrew içindeki yazılım paketi adı:

code-sign-cli

Gerçekte yüklenen komut satırı programının adı:

signtool

Masaüstü İstemcisini Kurma

sslTrus kod imzalama masaüstü istemcisini kurun:

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

İlgili Homebrew Cask adı:

code-sign-gui

İstemciyi Güncelleme

İstemci Homebrew ile kurulduysa, yükseltmek için Homebrew kullanılması önerilir.

Önce Homebrew paket bilgilerini güncelleyin:

brew update

SignTool CLI'yi yükseltin:

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

Masaüstü istemcisini yükseltin:

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

Böylece yerel kurulum sürümü, Homebrew paket meta verileriyle tutarlı kalır.

Windows Provider

Senaryonuz doğrudan SignTool CLI çağırmak değil de; Microsoft SignTool, Visual Studio, MSBuild, Advanced Installer veya diğer Windows yazılımlarının uzak kod imzalama özel anahtarını doğrudan kullanmasını istiyorsanız Windows Provider kullanmalısınız.

sslTrus şunları sağlar:

  • KSP (Key Storage Provider) : Windows CNG için.
  • CSP (Cryptographic Service Provider) : Geleneksel Windows CryptoAPI için.

Windows Provider bölümüne bakın.

CI/CD Otomatik İmzalama

Sürekli entegrasyon veya otomatik derleme sürecinde imzalama yapmanız gerekiyorsa SignTool CLI'yi elle kurup çağırmanız şart değildir.

Örneğin GitHub Actions, doğrudan sslTrus Code Sign Action kullanabilir:

- 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 ve Windows Runner'ları destekler ve derleme sürecinde belirtilen dosyalar için doğrudan uzak kod imzalama gerçekleştirebilir.

Tam yapılandırma için CI/CD ve Derleme Araçları bölümüne bakın.

Nasıl Seçilir

Gerçek kullanım şeklinize göre uygun istemciyi veya entegrasyon yöntemini seçebilirsiniz:

SenaryoÖnerilen Yöntem
Terminalde dosyaları manuel imzalamaSignTool CLI
Komut dosyalarıyla toplu imzalama çağırmaSignTool CLI
Kod imzalama kullanım limitini sorgulamaSignTool CLI
macOS'ta CLI kurulumu ve güncellemeHomebrew
macOS'ta masaüstü istemcisi kullanmaHomebrew
Microsoft SignTool gibi Windows yazılımlarının uzak özel anahtarı doğrudan çağırmasıKSP
Geleneksel CryptoAPI yazılımlarıCSP
GitHub Actions ile otomatik imzalamaGitHub Actions
Kendi imzalama istemcinizi geliştirmeUzak Kod İmzalama API'si

Uygulamanız zaten Windows KSP, CSP veya diğer standart Provider'ları destekliyorsa, genellikle ilgili standart entegrasyon yöntemine öncelik verilmelidir; imzalama sürecini doğrudan kontrol etmeniz gerekiyorsa SignTool CLI veya Uzak Kod İmzalama API'sini kullanabilirsiniz.