macOS uygulama imzalama, Apple'ın güvenlik altyapısının temel taşıdır. macOS Sequoia itibarıyla Apple, Gatekeeper güvenlik mekanizmasını daha da sıkılaştırmış ve imzasız/notarize edilmemiş uygulamaların çalıştırılmasını fiilen engellemiştir. Bu rehberde macOS uygulamasını imzalama ve notarize etme sürecini baştan sona anlatıyoruz.
macOS İmzalama Süreci Genel Bakış
- Apple Developer Program'a katılma ($99/yıl)
- Developer ID sertifikası oluşturma
codesignile uygulamayı imzalamanotarytoolile Apple'a Notarization için göndermestaplerile Notarization biletini uygulamaya ekleme- Dağıtım
Adım 1: Apple Developer Program
macOS uygulaması dağıtmak için Apple Developer Program üyeliği gerekir. Yıllık ücreti $99'dur. Üyelik sağlandıktan sonra Developer ID sertifikası oluşturabilirsiniz.
Adım 2: Developer ID Sertifikası Oluşturma
Xcode veya Apple Developer portalı üzerinden "Developer ID Application" sertifikası oluşturun. Bu sertifika Mac App Store dışında dağıtım için kullanılır.
# Mevcut sertifikaları listele
security find-identity -v -p codesigning
Adım 3: Uygulamayı İmzalayın
codesign --deep --force --verify --verbose --timestamp \
--options runtime \
--sign "Developer ID Application: Sirket Adi (TEAM_ID)" \
MyApp.app
Parametreler:
| Parametre | Açıklama |
|---|---|
--deep | İç içe framework ve binary'leri de imzala |
--force | Mevcut imzayı yeniden yaz |
--timestamp | Apple zaman damgası sunucusunu kullan |
--options runtime | Hardened Runtime etkinleştir (Notarization için zorunlu) |
--sign | İmzalama kimliği (sertifika adı) |
Adım 4: DMG veya ZIP Oluşturun
Notarization için uygulamanızı DMG veya ZIP formatında paketleyin:
# DMG oluşturma
hdiutil create -volname "MyApp" -srcfolder MyApp.app -ov -format UDZO MyApp.dmg
# veya ZIP oluşturma
ditto -c -k --keepParent MyApp.app MyApp.zip
Adım 5: Notarization
Paketlenen dosyayı Apple'ın Notarization servisine gönderin:
xcrun notarytool submit MyApp.dmg \
--apple-id "developer@email.com" \
--team-id "TEAM_ID" \
--password "app-specific-password" \
--wait
--wait parametresi sonuç gelene kadar bekler. Genellikle 5-15 dakika sürer.
Adım 6: Stapling
Notarization başarılı olduktan sonra bileti dosyaya ekleyin:
xcrun stapler staple MyApp.dmg
Stapling, offline ortamda bile Gatekeeper doğrulaması yapılabilmesini sağlar.
Notarization Gereksinimleri (macOS Sequoia 2026)
- Hardened Runtime: Zorunlu —
--options runtimeile aktifleştirilir - Timestamp: Zorunlu — imzalama sırasında zaman damgası eklenmeli
- Secure coding: Güvensiz API kullanımlarından kaçınılmalı
- Entitlements: Gerekli yetkilendirmeler doğru tanımlanmalı
- Minimum deployment target: macOS 10.13 veya üzeri
Yaygın Notarization Hataları
"The binary is not signed with a valid Developer ID certificate"
Sertifikanızın "Developer ID Application" türünde olduğundan emin olun. Mac App Store sertifikası (3rd Party Mac Developer) Notarization için geçerli değildir.
"The signature does not include a secure timestamp"
--timestamp parametresini eklediğinizden emin olun.
"The executable does not have the hardened runtime enabled"
--options runtime parametresini kullanarak Hardened Runtime'ı etkinleştirin.
Sık Sorulan Sorular
Apple Developer Program olmadan macOS uygulaması dağıtabilir miyim?
Teknik olarak evet, ancak Gatekeeper kullanıcılara uyarı gösterir ve çoğu kullanıcı uygulamayı açmaktan vazgeçer. Profesyonel dağıtım için Developer ID ve Notarization zorunludur.
Notarization ne kadar sürer?
Genellikle 5-15 dakika içinde tamamlanır. Yoğun dönemlerde 30 dakikaya kadar uzayabilir.
Windows kod imzalama sertifikası macOS'ta kullanılabilir mi?
Hayır. macOS imzalama için Apple Developer ID sertifikası gerekir. Windows kod imzalama sertifikası (Sectigo, DigiCert vb.) sadece Windows platformunda geçerlidir.
Yorumlar
Henüz yorum yapılmamış. İlk yorumu siz yapın!
Yorum Yaz