iOS Code Signing & Provisioning

Çağatay Emekci
Mobile Development
Published in
4 min readDec 29, 2018

--

Xcode geliştirdiğiniz uygulamayı cihazda çalıştırmanız için Code Signing ve Provisioning Profile’larınızın tam olması gerekir.

iOS cihazlarda, güvenilir geliştiriciler tarafından imzalanmış uygulamalar çalışır. Uygulamanız, bir cihaza kurulmadan veya App Store’a gönderilmeden önce, Apple tarafından verilen bir sertifika ile imzalanmalıdır. Code Signing bize kodu kimin yazdığını ve imzalandığı tarihten itibaren değiştirilmediğini garanti eder. Bu işlemi dijital bir imza olan Signing Identity ile yapar. Signing Identity, Apple’ın sizin için oluşturduğu bir public-private key çiftinden oluşur.

Asymmetric Encryption Public-Private key çiftini kullanır. Daha önceki yazımda (Encryption, Şifreleme) detaylı bir şekilde bahsettiğim gibi public key yalnızca kilit mekanizması olarak kullanılır ve paylaşılabilir, private key ise verileri yeniden açmak veya kodunu çözmek için kullanılır. Public-private key’i kullanarak, bir kullanıcı gerçekten kendisi olduğunu kanıtlayabilir.

Bir sertifikayı manuel olarak oluşturmak için Mac’inizden Public-Private Key’i içeren Certificate Signing Request (CSR) dosyasına ihtiyacınız vardır. CSR dijital kimlik sertifikasına başvurmak için başvuru sahibinden bir sertifika yetkilisine gönderilen bir mesajdır. iOS Dev Center’da bir sertifika oluşturmak için CSR oluşturmak bir önkoşuldur. CSR oluşturma işlemini Keychain Access Application aracılığıyla aşağıdaki süreci takip ederek yapabiliriz;

CSR oluşturma süreci:

  • Keychain Access uygulamasını açın,
  • Menü bardan Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority seçin,
  • Ekrandaki tüm izleyerek E-posta, ad ve ülke gibi bilgilerinizi girin,
  • “Saved to disk” seçeneğini işaretleyin,
  • Bir dosya adı belirtin ve Kaydet seçeneğine tıklayın,
  • Devam Et’i tıkladığınızda, Certificate Assistant bir CSR oluşturur ve dosyayı bilgisayarınıza kaydeder.

Burada sizin için local’inizde Apple’a yükleyeceğiniz bir certSigningRequest dosyası oluşturduk. CSR ile oluşturduğumuz public key sertifikanıza ekli private key ise kendi Mac cihazınızın içinde tutulur. CSR’ımız olduğuna göre serifika oluşturmadaki önkoşulumuzu tamamladık. Uygulamamızı imzalamak için sertifika oluşturabiliriz.

iOS uygulamanızın development sürümlerini imzalamak için iOS developer certificates’e ihtiyacımız var. iOS developer certificates, sizi ve dijital kimliğinizi uygulamalarınızla ilişkilendiren bir dijital imza olan bir Code Signing sertifikasıdır.

Bu sertifikayı Member Center’da Certificates/Development altından Developer Sertifikası kısmında oluşturup indirebilirsiniz. Yandaki resimde olduğu gibi seçip ilerlediğinizde sizden daha önceden oluşturduğunuz CSR file’i yüklemenizi isteyecek. Yükleyip oluşturduk dedikten sonra local’inize indirebileceğiniz bir .cer dosyası oluşturur. Bu sertifikaya çift tıkladığınızda KeyChain/Certificate altında iOS Development sertifikasını ve bunun altında private key ekler. Development sertifikamızı oluşturduk ancak yalnızca bir sertifikayı kullanarak herhangi bir iOS cihazına uygulama yüklemek mümkün değildir. İşte burada Provisioning Profile sertifikaları devreye girer.

Provisioning Profile, cihaz ile geliştirici hesabı arasında bir bağlantı görevi görür. Uygulamanızı hangi cihazların çalıştırabileceğini ve uygulamanızın hangi uygulama servislerine erişebileceğini seçersiniz.

Provisioning Profile sertifikasını açarsanız yandaki resimde ki XML formati ile karşılaşırsınız. Her Provisioning Profile sertifikası iPhone Development Certificates, Unique Device Identifiers, Entitlements ve App ID gibi bilgileri içerir. Peki bu sertifikaları nasıl oluştururuz.

Provisioning Profile oluşturma süreci:

Geliştirici hesabınızdan Provisioning Profiles alının altında All, Development, ve Distribtion diye alanlar göreceksiniz.

Bu işlemi yaptığınızda yukarıdaki sayfa ile karşılaşacaksınız. Burada hangi Provising Profile tipine ihtiyacınız olduğunu belirtiyorsunuz. Biz iOS App Development Provising Profile sertifikasını oluşturmak istediğimiz için onu seçip devam ediyoruz.

Şimdi hangi uygulama için Provising Profile oluşturacaksak onun App ID seçiyoruz. Burada önemli olan Game Center, In-App Purchase ve Push notification servisleri için bu servislere özel Bundle ID kullanırız. Diğer servisler için Wildcard App ID kullanabiliriz. (örnek com.tr.example.*)

Bu sayfada Provising Profile’a eklemek istediğimiz development sertifikalarını seçiyoruz.

Uygulamayı denemek istediğimiz hesabımıza kayıtlı cihazları seçiyoruz.

Son olarak sertifikanın adını girip Provisioning Profile sertifikamızı oluşturuyoruz. Tüm provisioning profile’larımızı oluşturduktan sonra localimize indirip çift tıklıyoruz. XCode’da projemizi açıp Target/General’da AppID’nin kontrol edildiğini, sertifikanın doğrulandığını, takımın eşleştiğini, capabilities ve entitlements’ın eşleştiğini başarılı bir şekilde görürseniz artık cihazınıza uygulamayı yükleyebilirsiniz.

Uygulamayı App Store dağıtman için ise Distribution Profile’ları oluştururuz. Uygulama Apple tarafından incelendikten sonra, Apple uygulamanızı imzalar ve artık App Store’dan cihazlara yüklenebilir.

iOS Code Signing ve Provisining belli kapsamda süreçleride ele alarak anlatmaya çalıştım.

--

--

Çağatay Emekci
Mobile Development

iOS Application Developer, Opsgenie at Atlassian @CagatayEmekci