How to compile an iOS app and create a .pem certificate

Step to compile an iOS app

 

Create the items related to the developer account with which you are going to publish

You have to create a CSR file and an iOS Distribution certificate. And you will be able to use these items for all of the next apps you will have to publish under this developer account –> keep them preciously once created.

The CSR File

It must be created from the keychain access tool of your Mac. Open it from Applications > Utilities > Keychain Access:

From the menu select “Keychain access” > “Certificate Assistant” > “Request a Certificate From a Certificate Authority”:

In the window that opens, enter the email of the developer account (or any other email address, it doesn’t have any impact), and enter the name of your developer account, and select “Saved to disk”:

Save this CSR to your disk, in a folder related to the certificates of your developer account.

Close the window.

The iOS Distribution certificate

– Connect at https://developer.apple.com/membercenter/index.action with the developer account

– Click on “Certificates, Identifiers & Profiles”

– Click on “Production” which in the main “Certificates” menu in the menu on the left:

– Then click on  from the upper right

– Choose “App Store and Ad Hoc” and click on “continue”:

 

– Click on “Continue” again

– Sign your iOS Distribution certificate with the CSR file you have created before.

– Download the iOS Distribution certificate that has been created.

Create the items related to the app you are going to publish

The Apple Push Services certificate

Thanks to this certificate you will be able to add push notifications, in-app purchase, and other services to your app. In our case, only the push notification service is interesting.

– Click on “App IDs” from the “Identifiers” menu on the left:

 

– Click on  from the upper right

– Enter your app name, and the bundle id of the app:

 

– Go below and select “Push Notifications” in the list of “App Services”:

 

– Click on “Continue”

– Click on “Register” and click on “Done”

– Then in the list, find the app id you have just created and click on it

– Click “Edit”

– Go at the bottom and in Push Notifications, in the “Production SSL Certificate” section click on “Create Certificate…”

– Click on “Continue”

– Click on “Choose File” and upload the CSR file you have created before for this developer account (the same CSR you have used to create the iOS Distribution certificate for this developer account)

– Download the Apple Push Services certificate (aps.cer) that has just been created. Store this certificate in a folder related to this app on your Mac.

– Click on “Done”

The Provisionning Profile

– click on “Distribution” from “Provisionning Profiles” on the left menu:

 

– Click on  from the upper right

– Choose “App Store” under “Distribution”:

– Select the app ID of your app, and click on “Continue”

– Select the iOS Distribution certificate associated to the CSR you have used to sign the Apple Push Services Certificate you have created just before (it is very important to use the iOS Distribution which has been created with the CSR used to sign the aps.cer of this app. Don’t forget it, and don’t forget that in case you create a new aps.cer for this app with another CSR you will have to create a new provisionning profile too with the iOS Distribution certificate made with this CSR, and then to publish an update of your app on the App Store)

– Click on “Continue”

– Download the provisionning profile  that has just been created. Store this certificate in the folder related to this app on your Mac, and which contains the Apple Push Services certificate created just before.

Compiling the app

– Download your iOS source code

– Unzip the folder and open the xcode project in Xcode

– Follow this video:

Creating the .pem certificate

– Go in the Keychain Access on your Mac

– From the left menu, select “Certificates”

– In the search bar at the upper right, enter the bundle ID of your app

– Click on the arrow on the left of your “Apple Push Services” certificate, a private key must be attached under it

– Select the private key and the certificate

– Right-click on them

– Select “Export 2 items…”

– Choose your desktop as the destination (it can be another location but you will have to adjust the code we will give you after)

– Choose a password of your own

– Open the Terminal console of your Mac (From Applications > Utilities > Terminal)

– In the Terminal, be sure to be located on your desktop (you must have “Desktop” displayed and then your username)

– Enter this command:

“openssl pkcs12 -in Certificates.p12 -out certificat.pem -nodes -clcerts”

(If the terminal answers that there is no file named “Certificates.p12”, go on your desktop and check what is the name of this certificate .p12, and enter this name rather than Certificates.p12 in the command line)

– Enter the password you have used just before to export your certificate on your desktop

– On your desktop you have now two certificates: a Certificates.p12 and a certificat.pem.

– Move these files to the folder of your app on your Mac (with the provisionning profile and the aps.cer)

– Upload this certificat.pem on the app sheet in your backoffice

– You’re done!

More info about the push notifications with Siberian CMS

To send push notifications you have to choose:

  1. you can send to ios and android in this case there must be the .pem certificate, and status on published for both.
  2. you can send on Android only, there must be no .pem certificate and the status for ios must be on “waiting”.

In cases 1 & 2 you have to create a .pem certificate.

Before keep looking at the .pem certificate creation, let’s make a brief clarification about case 2. In case 2 there must be absolutely no certificate for ios, if you have already uploaded one please remove it from both your files and your database. To remove the .pem certificate you have already uploaded, go first in your database, in the table “push_certificate”, look for the line in this table with the “app ID” of the app for which you want to remove the .pem certificate. You will get the name of the .pem certificate, it will be someting like “cert_55c311wqce5e2.pem”. Copy this file name. Delete this line in the database (be sure to not remove the table! just the line which contains this .pem certificate related to the app). Then go in your files with your file manager or with Filezilla, go in var/apps/iphone and check for the .pem certificate you have just copied. Delete the file. You are done.

Let’s keep looking at the .pem certificate creation.

  1. All certificates are linked each other, therefore the Apple Push Services certificate must be signed with the CSR used to create the iOS Distribution certificate used to create the provisionning profile. That means, if you change one of these items, your app will not be able to send push. For example, if you have already created a .pem certificate and you want to create it again, if you sign it with another CSR than the one used to create the iOS Distribution certificate used to create the provisionning profile of this app, you will have to edit the provisionning profile as well and to link it to the right iOS Distribution (the one created with the CSR you are using), and then you will have to submit an update of your app to the App Store and wait Apple has accepted your app.
  2. Your .pem certificate must be well created and must contain 4 sections:

– friendlyName: Apple Push Services

– friendlyName: iPhone Distribution

– And then two sections about keys with “Key Attributes: <No Attributes>”

If your .pem doesn’t contain these sections that means you have missed something and it will not work.

“One more thing” …about the .pem certificates:

This article show you how to create production .pem certificates. In order to make the push notifications work, your Siberian must be in Production mode (Take a look here if needed: push do not work). If you want to test the push notifications without publishing your app on the Appstore, you have to create development certificates (We do not bring support about that. Thanks to check on the Internet or on the Apple documentation guides) and turn on your Siberian into Development mode (Take a look here if needed: push do not work).

Was this article helpful?

Related Articles