Install Root CA missed from trust chain (IKEv2)

Our VPN server (strongSwan) authenticates by SSL certificate with our client. Server SSL certificate is issued by a CA that is not trusted by iOS and has the following chain of trust:


AddTrust External CA Root => COMODO RSA Certification Authority => COMODO RSA Domain Validation Secure Server CA => <our_server_SSL_cert>


COMODO RSA Domain Validation Secure Server CA is NOT trusted, and thus chain of trust cannot be established.


In this thread I mentioned that I had been able to overcome this by installing Root CA via .mobileconfig (payload type com.apple.security.root). There are other topics touching the same thing, e.g.:

* in cannot establish Ikev2 connection programmatically thread @eskimo mentioned


> iOS has no API to install a trusted root certificate globally

and

> If you want to continue down the NEVPNManager path you will have to get a trusted CA to issue you a certificate for your VPN server.


* In other thread How do I prompt a user to trust a root CA certificate programatically on iOS? there is one more confirmation that installing Root CA programmatically is not possible.


By this thread, I'd like to confirm two things:


- There is NO cahnce iOS can establish a chain of trust, when Root CA is issued by other trusted Root CA?

- There is NO other way to install Root CA, except .mobileconfig or providing a URL to download .cer file and install it by user actions?


Thank you.

Accepted Reply

There is NO cahnce iOS can establish a chain of trust, when Root CA is issued by other trusted Root CA?

Correct.

NEVPNManager
provides no way for you to override the trust evaluation done by the IKEv2 VPN transport, and thus the server must use a certificate issued by a CA that’s trusted system-wide.

There is NO other way to install Root CA, except

.mobileconfig
or providing a URL to download
.cer
file and install it by user actions?

Your options here depend on your target market:

  • If you’re deploying in an enterprise environment, you would typically set up an enterprise CA and have your MDM solution deploy that CA’s root certificate on user devices.

  • If you’re deploying via the App Store, the only practical option is to get a certificate from a trusted CA. Requiring your users to install a root certificate is a terrible idea, because such a certificate represents an unbounded extension of trust: Once a root certificate installed it can be used for all sort of tasks other than VPN.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

Replies

There is NO cahnce iOS can establish a chain of trust, when Root CA is issued by other trusted Root CA?

Correct.

NEVPNManager
provides no way for you to override the trust evaluation done by the IKEv2 VPN transport, and thus the server must use a certificate issued by a CA that’s trusted system-wide.

There is NO other way to install Root CA, except

.mobileconfig
or providing a URL to download
.cer
file and install it by user actions?

Your options here depend on your target market:

  • If you’re deploying in an enterprise environment, you would typically set up an enterprise CA and have your MDM solution deploy that CA’s root certificate on user devices.

  • If you’re deploying via the App Store, the only practical option is to get a certificate from a trusted CA. Requiring your users to install a root certificate is a terrible idea, because such a certificate represents an unbounded extension of trust: Once a root certificate installed it can be used for all sort of tasks other than VPN.

Share and Enjoy

Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware

let myEmail = "eskimo" + "1" + "@apple.com"

@ekimo


I appreacite your help.

You make Apple Dev Forum a better place!