I’m working on a product that includes TLS inspection capability. TLS inspection using a local MitM requires installing a trusted root certificate which is then used to create masquerade certificates to intercept and forward TLS traffic through the proxy.
For manual installation the end user is required to authenticate as an administrator to modify the trust settings on our internal CA’s root certificate. My question concerns the options for enterprise deployment using an MDM. We want the generated root certificate to be unique to each endpoint so that if a private key is compromised it can’t be used to intercept traffic anywhere else. We can install a “certificate trust” configuration profile from the MDM but this requires a base64 encoded string of the root certificate.
In effect the MDM needs to obtain the certificate from the endpoint and then send it back in the form of a configuration profile. I’m not aware that MDMs like Jamf can be configured to do this directly so we’re looking for any other mechanism to have macOS trust a locally generated certificate via MDM based on some non endpoint-unique criteria?
One option might be to use an external CA with a trusted certificate to sign an intermediate endpoint certificate but this creates a significant risk if the external trusted certificate were ever compromised. Is this a common industry practice?
So my question remains is there a better way to trust our per endpoint root certificate via MDM without needing to install a unique per endpoint configuration profile?
I don’t think there’s anything fundamental blocking an MDM system from doing what you want it to do. When the Mac checks in with MDM, the MDM system knows the identity of that Mac and can send it a configuration profile with a unique com.apple.security.root payload [1].
But there are some obvious challenges:
- Getting an MDM system that actually supports this.
- Securely passing the certificate from the Mac to the MDM system [2].
It’s hard to offer advice on that front because this isn’t a standard MDM feature, and thus the answer is going to depend on the MDM server you’re using.
The one thing I can rule out is a client-side solution. There’s no longer any supported way for code running on the Mac to install a trusted root without user approval.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] Or do the same thing with declarative device management, which is the new hotness.
[2] Certificates are just fancy public keys, and thus don’t need to be kept private. However, you need to make sure that a malicious actor doesn’t impersonate a client.