Modern yazılım geliştirmede birçok uygulama cross-platform olarak dağıtılır. Electron, Flutter, Tauri gibi framework'ler ile tek codebase'den Windows, macOS ve Linux build'leri oluşturulur. Her platform için farklı imzalama gereksinimleri vardır.
🎯 Temel Soru: Her platform için ayrı sertifika mı almam lazım?
Kısa cevap: Windows ve Java için aynı kod imzalama sertifikasını kullanabilirsiniz. macOS için ise Apple Developer sertifikası gereklidir.
Platform Bazlı İmzalama Gereksinimleri
| Platform | Gerekli Sertifika | İmzalama Aracı | Ek Gereksinim |
|---|---|---|---|
| Windows | OV/EV Kod İmzalama | SignTool | Timestamp zorunlu |
| macOS | Apple Developer ID | codesign | Notarization + Hardened Runtime |
| Linux | GPG anahtarı veya Kod İmzalama | gpg / rpmsign / dpkg-sig | Paket yöneticisine göre değişir |
| Java (JAR) | OV/EV Kod İmzalama | jarsigner | Keystore dönüşümü gerekebilir |
Tek Sertifika ile Çoklu Platform
Bir OV veya EV Kod İmzalama sertifikası ile şunları imzalayabilirsiniz:
- ✅ Windows: EXE, DLL, MSI, MSIX, PowerShell
- ✅ Java: JAR, WAR, EAR dosyaları
- ✅ Linux: osslsigncode ile PE formatı (Windows binary'lerini Linux'ta imzalama)
- ❌ macOS: Apple ekosistemi kendi sertifika sistemini kullanır
Cross-Platform CI/CD Pipeline Yapısı
name: Multi-Platform Build & Sign
on:
push:
tags: ['v*']
jobs:
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm run build:win
- name: Sign Windows Binary
run: signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a "dist/MyApp.exe"
- uses: actions/upload-artifact@v4
with: { name: windows-build, path: dist/*.exe }
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm run build:mac
- name: Sign & Notarize macOS
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
run: |
codesign --sign "Developer ID Application: $TEAM_ID" --timestamp --options runtime dist/MyApp.app
xcrun notarytool submit dist/MyApp.dmg --apple-id "$APPLE_ID" --team-id "$TEAM_ID" --wait
xcrun stapler staple dist/MyApp.dmg
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: npm run build:linux
- name: Sign with GPG
run: |
echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --import
gpg --detach-sign --armor dist/MyApp.AppImage
Electron Uygulaması İmzalama
Electron, en popüler cross-platform framework'tür. electron-builder ile otomatik imzalama:
// package.json veya electron-builder.yml
{
"build": {
"win": {
"signingHashAlgorithms": ["sha256"],
"certificateSubjectName": "Your Company Name",
"sign": "./custom-sign.js" // Cloud HSM için özel script
},
"mac": {
"identity": "Developer ID Application: Your Company (TEAMID)",
"notarize": {
"teamId": "TEAMID"
},
"hardenedRuntime": true
},
"linux": {
"target": ["AppImage", "deb", "rpm"]
}
}
}
Maliyet Karşılaştırması
| Kalem | Yıllık Maliyet |
|---|---|
| OV Kod İmzalama (Windows + Java) | ~$70-200 |
| Apple Developer Program (macOS + iOS) | $99 |
| GPG anahtarı (Linux) | Ücretsiz |
| Toplam (3 platform) | ~$170-300/yıl |
En İyi Uygulamalar
- Her platform için timestamp kullanın — Sertifika süresi dolsa bile imzalar geçerli kalır.
- macOS Notarization'ı atlam ayın — Apple, notarize edilmemiş uygulamaları engeller.
- Linux'ta imzayı paket yöneticisi ile entegre edin — apt/yum repo'nuzda GPG imzası zorunlu olsun.
- Cloud Kod İmzalama düşünün — 3 farklı OS'te build yapan CI/CD için USB token pratik değildir.
- İmza doğrulama testleri yazın — Her platformda otomatik doğrulama adımı ekleyin.
Sonuç
Multi-platform yazılım dağıtımı, her platform için ayrı imzalama stratejisi gerektirir. Windows ve Java için tek bir kod imzalama sertifikası, macOS için Apple Developer sertifikası ve Linux için GPG anahtarı ile yıllık toplam ~$200'ın altında tüm platformlarınızı kapsayabilirsiniz.
Windows ve Java için uygun fiyatlı OV, EV ve Cloud sertifikalar için ürünlerimizi inceleyin.
İlgili makaleler
-
SafeNet eToken 5110 Kurulum ve Yapılandırma
SafeNet eToken 5110 USB token kurulumu, driver yükleme ve PIN yapılandırma rehberi....
-
OpenSC ile USB Token Yönetimi
OpenSC kütüphanesi ile USB token ve smart card cihazlarının yönetimi....
-
Visual Studio ile Kod İmzalama Entegrasyonu
Visual Studio IDE içinden kod imzalama yapılandırması: post-build events ve signing tab....
-
Kod İmzalama için CSR Oluşturma Rehberi
Certificate Signing Request (CSR) oluşturma: OpenSSL, keytool ve Windows certreq ile....
-
PKCS#11 ve Kod İmzalama Entegrasyonu
PKCS#11 standardı ile kod imzalama araçlarının donanım token entegrasyonu....
Bu kategoride: Kurulum ve Yapılandırma
- ACME Protokolü ile Otomatik Sertifika Yönetimi
- EST (Enrollment over Secure Transport) Protokolü
- HashiCorp Vault ile Sertifika Yönetimi
- Kod İmzalama için CSR Oluşturma Rehberi
- Kod İmzalama için Donanım Güvenlik Modülü (HSM) Seçim Rehberi
- Kod İmzalama Sertifikası Yedekleme ve Kurtarma
- Kod İmzalama Sertifikası Yenileme Otomasyonu
- Kod İmzalama Test Ortamı Kurulumu
- Multi-Platform Kod İmzalama: Windows, macOS ve Linux Tek Sertifika ile
- OpenSC ile USB Token Yönetimi
- OpenSSL ile Sertifika İşlemleri
- PFX/PKCS#12 Dosyası Oluşturma ve Dönüştürme
- PKCS#11 ve Kod İmzalama Entegrasyonu
- SafeNet eToken 5110 Kurulum ve Yapılandırma
- Sertifika Yenileme Süreci ve Adımları
- Thales Luna HSM ile Kod İmzalama
- Toplu Dosya İmzalama (Batch Signing)
- Visual Studio ile Kod İmzalama Entegrasyonu
- Windows Sertifika Deposuna Sertifika Yükleme
- YubiKey 5 FIPS Kod İmzalama Yapılandırması
- YubiKey 5 ile Kod İmzalama Yapılandırması