sgcSign Server
sgcSign motorunu bir REST API'nin, bir Bootstrap web yönetici konsolunun ve CI/CD hatları için bir komut satırı istemcisinin arkasına saran, kendi sunucunuzda barındırılan uzaktan kod imzalama hizmeti.
sgcSign motorunu bir REST API'nin, bir Bootstrap web yönetici konsolunun ve CI/CD hatları için bir komut satırı istemcisinin arkasına saran, kendi sunucunuzda barındırılan uzaktan kod imzalama hizmeti.
Windows veya Linux çalıştıran tek bir ana bilgisayar; derleme aracılarından, geliştiricilerden ve CI hatlarından imzalama isteklerini kabul eder — tam denetim, onaylar ve metrikler yerleşik olarak.
İmzalama, doğrulama, sağlık, metrikler ve onay iş akışları için TLS korumalı /api/v1 uç noktaları. Derleme aracıları ve SDK'ler için kararlı, makine dostu sözleşme.
Kullanıcılar, API anahtarları, sağlayıcılar, projeler, denetim, onaylar, webhook'lar ve metrikler için Bootstrap tabanlı /admin kullanıcı arayüzü. Operatörlerin JSON düzenlemesi asla gerekmez.
Inno Setup sihirbazı veya zip bırakma. Hizmet kendisini bir Windows hizmeti olarak kaydeder, TLS'yi kendisi sonlandırır ve sağlamlaştırılmış bir ana bilgisayarda gözetimsiz çalışır.
Her proje; sağlayıcıların, API anahtarlarının, denetim görünürlüğünün ve onay kuyruklarının bir alt kümesini yalıtır. Birden fazla ekip, birbirlerinin imzalama materyalini görmeden tek bir sunucuyu paylaşır.
Aynı API anahtarı istek yapar, bir yönetici veya proje yöneticisi onaylar veya reddeder ve ancak o zaman baytlar imzalanır. SHA-256 karması ve dosya boyutu isteğe kilitlenir.
Her eylem — imzalama, doğrulama, oturum açma, onay, webhook tetikleme — karma zincirli bir denetim günlüğüne eklenir. Kurcalama algılanabilir; SIEM toplama basittir.
İmzalama / doğrulama / onay sayaçları, imzalama gecikme histogramları, sağlayıcı kullanılabilirlik göstergeleri. Yönetilecek ek veritabanı olmadan doğrudan Prometheus 0.0.4 metin sunumu.
X-Sgcsign-Signature: sha256=… ile teslim edilen 21 yaşam döngüsü olayı. Üç denemeli yeniden deneme kuyruğu; SIEM, sohbet ve bilet sistemlerini senkronize tutar.
Kitaplıkla gelen aynı motor, REST API aracılığıyla sunulur. Her ülke profili, her imza düzeyi.
VeriFactu, FatturaPA, Facturae, KSeF, e-Factura, Peppol, myDATA ve AB iş sözleşmeleri için XML imzaları. POST /api/v1/sign/xades.
Orijinal içeriği koruyan artımlı güncellemelerle PAdES-Basic PDF imzaları. Görünür veya görünmez imzalar. POST /api/v1/sign/pades.
Rastgele ikili veriler için CMS / PKCS#7 ayrık veya ekli imzalar. Zaman damgası + uzun vadeli doğrulama. POST /api/v1/sign/cades.
Kaydedilen bir satışı sunucunun tuttuğu bir anahtarla oluşturup imzalar, isteğe bağlı olarak vergi idaresine gönderir ve yanıtı döndürür. Bir zincirdeki tüm kasalar tek bir vergi mükellefi sertifikasını paylaşır. POST /api/v1/sign/eet.
İmzalama hizmeti, yapılandırdığınız herhangi bir sertifika kaynağıyla konuşur: Windows deposu, PFX, PKCS#11 donanım belirteci, Azure Trusted Signing, AWS KMS, Google KMS.
.exe, .dll, .msi, .cab, .cat, .ocx, .sys imzalayın. Yalnızca karma modu, düşük bant genişlikli çalıştırıcıların birkaç düzine baytı 8 KB'lık bir PKCS#7 blob'uyla değiştirmesine olanak tanır. Çekirdek modu sürücülerine signtool /ph gibi sayfa karmaları eklemek için --page-hashes (API'de page_hashes) kullanın.
Windows istemcilerinin güven istemleri olmadan yüklemesi için ClickOnce manifestlerini (.application / .manifest) imzalayın. POST /api/v1/sign/clickonce.
NuGet istemcisinin yayıncı kimliğini doğrulaması için .nupkg paketlerini imzalayın. Yazar ve depo imzaları desteklenir. POST /api/v1/sign/nuget.
VS Marketplace'in ve IDE'nin kendisinin güvenilir olarak kabul etmesi için Visual Studio uzantı paketlerini imzalayın. POST /api/v1/sign/vsix.
Yönetim konsolu için daha güçlü oturum açma ve diskte şifrelenmiş gizli bilgiler; böylece çalınan bir parola veya kopyalanan bir yapılandırma dosyası imzalama anahtarlarını açmaz.
Konsol hesapları, herhangi bir TOTP kimlik doğrulayıcı uygulamasından alınan 6 haneli bir kod ekler; kaybolan telefon için 10 adet tek kullanımlık kurtarma kodu da bulunur. admin.require_2fa ayarlandığında her konsol kullanıcısı başka bir sayfaya geçmeden önce kaydolmak zorundadır. Yönetici, kaybedilen ikinci faktörü sıfırlayabilir.
Konsola Microsoft Entra ID, Okta, Keycloak, Google veya herhangi bir standart OpenID Connect sağlayıcısıyla, PKCE destekli yetkilendirme kodu akışı kullanarak oturum açın. Kullanıcılar harici bir kimliği hesaplarına bağlar, yeni kullanıcılar isteğe bağlı olarak bir yöneticinin onaylayacağı hesap talep edebilir.
Her yanıt güvenlik üstbilgileri ve katı bir Content Security Policy taşır. Yapılandırılabilir parola ilkesi, ilk oturum açmada değiştirilmesi zorunlu geçici parolalar ve arkasındaki rol veya yetkiler değiştiği anda sona eren oturumlar.
Sağlayıcı parolaları, PIN'ler, bulut kimlik bilgileri ve webhook gizli anahtarları, makineye bağlı bir ana anahtar altında (Windows'ta DPAPI) AES-256-GCM ile şifrelenmiş olarak saklanır. sgcSignServer --protect-secrets mevcut bir yapılandırmayı yerinde şifreler.
Sunucu, kimin hangi anahtarla ve kimin onayından sonra imzalayabileceğine karar verir; bir zaman damgası sunucusu çalışmasa bile her imza zaman damgası alır.
Bir sağlayıcıyı veya bir projenin tamamını onay gerekli olarak işaretleyin; sunucu doğrudan imzalamayı approval_required ile reddeder. Her onay yalnızca bir kez imzalar. Kural, signtool /dlib için ham özet imzalama dahil her imza yolunda geçerlidir.
Bir anahtarı yeniden oluşturun, eski gizli anahtar 7 güne kadar çalışmaya devam etsin; son kullanma tarihini düzenleyin, sahibini görün ve izin verilen sağlayıcı listesiyle sınırlayın. api_keys.self_service ile operatörler, sizin belirlediğiniz sınırlar içinde kendi anahtarlarını oluşturur ve yönetir. Bir anahtarın geçerliliği ilk kullanımda da başlayabilir: ilk kimliği doğrulanmış çağrısından itibaren N gün geçerlidir ve zorunlu bir “şu tarihten önce etkinleştir” tarihi bulunur, böylece hiç kullanılmayan bir anahtar sonsuza dek geçerli kalmaz. Alt anahtarlar yalnızca üst anahtarları etkinleştirildikten sonra çalışır, etkinleştirme denetim günlüğüne apikey.activate olarak kaydedilir ve Community sürümü her iki değeri de 30 günle sınırlar.
Sunucu, her token için hatalı PIN sonuçlarını sayar ve max_pin_attempts sonrasında oturum açmayı durdurur; böylece yapılandırmadaki yanlış bir PIN donanım token'ını asla kilitlemez. Son deneme yalnızca allow_final_pin_try ile kullanılır ve yönetici korumayı konsoldan sıfırlar.
sgcsign config sunucu, sağlayıcı ve diğer ayarları adlandırılmış profillerde kaydeder, sgcsign auth set-key ise API anahtarını saklar; böylece derleme betikleri bunları tekrarlamak zorunda kalmaz. Delphi CLI ve .NET aracı esegece.sgcsign.cli aynı dosyaları paylaşır.
tsa_urls listeleri ve zaman damgası alınmaması gereken bir istek için no_timestamp.
sgcsign timestamp, zaten Authenticode ile imzalanmış bir dosyaya aynı yedekleme mantığıyla zaman damgası ekler.
# sgcSignServer.conf.json
"timestamp": {
"servers": ["http://timestamp.digicert.com", "http://timestamp.sectigo.com"],
"timeout_ms": 30000
}
# Timestamp a file that is already signed
sgcsign timestamp MyApp.exe --tsa http://timestamp.digicert.com --tsa http://timestamp.sectigo.com
Sunucuyu yıllarca sürprizsiz çalıştırın: şifreli yedeklemeler, bir sertifikanın süresi dolmadan uyarılar, bir kişinin ilgilenmesi gerektiğinde e-posta ve bir Windows yükleyicisi.
Tek bir arşiv; yapılandırmayı, veritabanını, ana anahtarı ve tüm anahtar ve sertifika dosyalarını bir parola altında AES-256-GCM ile şifrelenmiş olarak tutar. Arşivler zamanlamayla veya konsoldan çalışır ve sgcSignServer --archive restore sunucuyu aynı makinede yeniden kurar ya da yeni bir makineye taşır.
İmzalama sertifikaları ve sunucunun TLS sertifikası başlangıçta ve her gün denetlenir. 30, 14, 7 ve 1 gün kala verilen uyarılar panoda görünür ve cert.expiring webhook'u, bir e-posta ve sgcsign_certificate_not_after_seconds metriği olarak iletilir.
Bir hesap kilitlendiğinde, iki faktörlü kimlik doğrulama veya parola değiştiğinde, bir yedekleme başarısız olduğunda ya da bir sertifikanın süresi dolmak üzere olduğunda e-posta gönderilir. STARTTLS veya örtük TLS ile SMTP; Windows'ta e-posta göndericisi OpenSSL kitaplıklarına ihtiyaç duymaz.
sgcSignServer_Setup.exe sunucuyu bir Windows hizmeti olarak kurar, ilk yöneticiyi oluşturur ve güvenlik duvarı bağlantı noktasını açar. TLS, oluşturulan otomatik imzalı bir sertifika, mevcut bir PFX dosyası veya test makineleri için düz HTTP kullanır.
Tek bir Windows hizmeti TLS'yi sonlandırır, /api/v1 + /admin sunar ve her çağrıda yapılandırılan anahtar sağlayıcıya ulaşır. Anahtar materyali veritabanında asla bulunmaz.
/api/v1'e erişir.
/admin'e giriş yapar. Bootstrap kullanıcı arayüzü, oturum çerezleri, rol tabanlı erişim.
+----------------------------+
| Build agents / CI / CLI |
+-------------+--------------+
|
| HTTPS (TLS 1.2/1.3)
v
+-------------------------------------------+
| sgcSignServer.exe (Windows service) |
| /api/v1/* (signing, verify, health) |
| /admin/* (web console, sessions) |
+---+-----------------+---------------------+
| | |
v v v
+-------------+ +---------------+ +-----------+
| SQLite DB | | KeyProviders | | Webhooks |
| (audit/keys)| | PFX/HSM/KMS | | (outbound)|
+-------------+ +---------------+ +-----------+
curl UzaktaBir bearer API anahtarı, bir karma veya dosya yüklemesi ve imzalı ikili dosya stdout'a geri akar. Authenticode, CAdES, PAdES, XAdES, ClickOnce, NuGet, VSIX aynı yapıyı paylaşır.
X-API-Key veya Authorization: Bearer — her iki kimlik doğrulama yöntemi de çalışır.
X-Project kiracıyı seçer; anahtarın proje için yetkilendirilmiş olması gerekir.
X-Sgcsign-Signer-Subject + X-Sgcsign-Duration-Ms taşır.
# Authenticode-sign MyApp.exe via the REST API
curl -X POST https://sign.example.com/api/v1/sign \
-H "Authorization: Bearer $TOKEN" \
-H "X-Project: production" \
-F "format=authenticode" \
-F "file=@./MyApp.exe" \
-o MyApp-signed.exe
# Headers returned by the server
# X-Sgcsign-Signer-Subject: CN=ACME Corp, O=ACME, C=US
# X-Sgcsign-Duration-Ms: 312
Yeni bir Windows ana bilgisayarından beş dakikadan kısa sürede ilk imzalı yapıya.
Pakete dahil Inno Setup sihirbazını çalıştırın veya zip dosyasını bir klasöre bırakın. Hizmet, kendisini sgcSignServer adlı bir Windows hizmeti olarak kaydeder. :8443'e bağlayın ve TLS sertifikanızı yükleyin.
sgcSignServer.conf.json'a bir sağlayıcı ekleyin — bir PFX dosyası, Azure Trusted Signing hesabı, AWS KMS anahtarı, Certum SimplySign kullanıcısı veya diğer on anahtar sağlayıcıdan herhangi biri. Hizmet yeniden başlatması gerekmez.
/admin/apikeys'i açın, New API key'e tıklayın, bir projeyle sınırlandırın, belirteci CI çalıştırıcı gizli dizinize kopyalayın. Derleme aracısı POST /api/v1/sign çağırır.