I had the same problem and although I was already using an SSL server, simply changing the links to https wasn't working as there was an underlying problem.
Click here for image
That highlighted bit told me that we should be given the option to trust the certificate, but since this is the app store, working through Safari that recovery suggestion just isn't presented.
I wasn't happy with the existing solutions because:
- Some options require dependance on a third party (Dropbox)
- We weren't willing to pay for an SSL certificate
- Free SSL certificates are only a temporary solution.
I finally found a solution by creating a Self Signed Root Certificate Authority and generating our server's SSL certificate using this.
I used Keychain Access and OSX Server, but there are other valid solutions to each step
Creating a Certificate Authority
From what I gather, certificate authorities are used to verify that certificates are genuine. Since we're about to create one ourselves, it's not exactly secure, but it means that you can trust all certificates from a given authority. A list of these authorities is usually included by default in your browsers as these are actually trusted. (GeoTrust Global CA, Verisign etc)
- Open Keychain and use the certificate assistant to create an authority
- Fill in your Certificate Authority Information
- I don't know if it's necessary, but I made the authority trusted.
Generating a Certificate Signing Request
In our case, certificate signing requests are generated by the server admin. Simply it's a file that asks "Can I have a certificate with this information for my site please".
- Next you'll have to create your Certificate Signing Request (I used OSX Server's Certificates manager for this bit
- Fill in your certificate information (Must contain only ascii chars!, thanks @Jasper Blues)
- Save the generate CSR somewhere
Creating the Certificate
Acting as the certificate authority again, it's up to you to decide if the person who sent you the CSR is genuine and they're not pretending to be somebody else. Real authorities have their own ways of doing this, but since you are hopefully quite sure that you are you, your verification should be quite certain :)
- Go back to Keychain Access and open the "Create A Certificate.." option as shown
- Drag in your saved CSR to the box indicated
- Click the "Let me override defaults for this request button"
- I like to increase the validity period.
- For some reason, we have to fill in some information again
- Click continue on this screen
- MAKE SURE YOU CLICK SSL SERVER AUTHENTICATION, this one caused me some headaches.
You can click continue through the rest of the options.
The Mail app will open giving you the chance to send the certificate. Instead of emailing, right click it and save it.
Installing the Certificate
We now need to set up the server to use the certificate we just created for it's SSL traffic.
- If the device your working on is your server, you might find the certificate is already installed.
- If not though, double click the Pending certificate and drag the PEM file that we just saved from the email into the space indicated. (Alternatively, you can export your PEM from keychain if you didn't save it.)
- Update your server to use this new certificate. If you find that the new certificate won't "stick" and keeps reverting, go back to the bit in BOLD ITALIC CAPS
Setting Up Devices
Each device you need to install apps on will need to have a copy of this certificate authority so that they know they can trust SSL certificates from that authority
- Go back to Keychain Access and export your certificate authority as a .cer
- I then put this file on my server with my OTA apps, users can click this link and download the authority certificate. Emailing the certificate directly to users is also a valid option.
- Install the certificate on your device.
Test