Open noahtalerman opened 1 year ago
Fleet sends an MDM command to send a public key to the host via the device channel
When the IT admin adds a profile that requires a certificate, Fleet gets a cert from the CA and sends it to the host via the device channel. Cert gets installed on device Keychain
First pass at the workflow for this^ in Fleet:
com.apple.security.root
payload with the public keycom.apple.security.pkcs1
payload with empty data
, and System
for the PayloadScope
Hey @Patagonia121, heads up, we didn't have the space to take this on in the current design sprint (4.48).
It's a relatively large level of effort.
Like #13418, let's move quickly and meet with @alexmitchelliii to discuss the plan for addressing this customer request.
@noahtalerman We need to clarify the methodology of certificate generation / CA integration. Which one of the following methods / protocols does this issue address?
@noahtalerman prospect-blondlet requires more specifically a Digicert PKI integration to accommodate this use case: https://docs.vmware.com/en/VMware-Workspace-ONE-UEM/2209/Certificate_Authority_Integrations/GUID-DigiCert_PKI_Management_Portal_Platform.html
Thanks @dherder!
clarify the methodology of certificate generation / CA integration. Which one of the following methods / protocols does this issue address?
Right now we're not sure. That's part of the ongoing research in the current design sprint.
To arrive at the decision, it would be helpful to know which customers expect to use which methods. Like in Dave's comment here: https://github.com/fleetdm/fleet/issues/13420#issuecomment-2313338249
For folks that see this comment, please feel free to drop more anonymous (customer codename) info which customers/users expect which method in comments here!
Latest requirements:
Moved an earlier version of the issue description here for safekeeping:
UPDATE: This story is about making Fleet work w/ any certificate authorities (CAs) (ex. Digicert, Smallstep, AD CS, NDES, etc.). Stories for integrating Fleet w/ specific CAs are here:
(noahtalerman 2024-09-10)
User story |
---|
As an IT admin, |
I want to install custom certificates as part of the Wi-Fi and Ethernet profiles |
so that I can use this cert to grant the end user access to my organization’s network. |
com.apple.security.root
payload with the public keycom.apple.security.pkcs1
payload with empty data
, and System
for the PayloadScope
com.apple.security.pkcs1
MDM payload to install the keyℹ️ Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".
I processed the wall of text a bit:
Key Suggestions and Observations
Structural Changes
• Move SCEP Configuration: Suggest moving SCEP configuration to the root level under Integrations and renaming it to something like “Certificate Authorities”.
• Reason: SCEP is just one protocol (alongside ACME, API, etc.) for connecting to CAs. Customers often need to connect to multiple CAs for different purposes.
IT Admin Requirements for Certificate Management
1. Certificate Deployment Process
• IT admins use config profiles to deliver certificates to devices for corporate network access (WiFi, Ethernet, VPN, SSH, etc.).
• Certificate Authorities Examples: Digicert, Smallstep, AD CS, NDES.
• Key Admin Expectations:
• Devices should not communicate directly with the CA for security reasons (e.g., to protect against CA compromise).
• The Fleet server should manage all communication with the CA.
2. Integration Management
• Admins configure Fleet to communicate with the CA using provided secrets and the CA URL.
• Fleet generates .mobileconfig files with CA data, which are sent to devices for local certificate creation and keychain storage.
3. Lifecycle of Certificates
• Stages: Issuance → Renewal → Revocation.
• Typical Certificate Lifetime: ~1 year.
• Renewal should be automated, with Fleet re-issuing certificates ~30 days before expiry.
• Expiry policies must align with best practices (e.g., Apple’s max 398 days).
4. Scoping Certificates
• Certificates are tied to specific use cases (e.g., network device identity).
• Over-scoping could grant excessive access to a host.
Challenges and Edge Cases
1. Manual Processes vs. Automation
• Some organizations may not allow automated API usage for CAs due to cybersecurity constraints.
• Fleet needs to support manual workflows:
• Admins download CSRs (generated by Fleet) and manually upload to CA portals.
• Resulting RA certificates (.p7b) are manually uploaded back into Fleet.
2. Idempotency Risks
• Re-deploying the same .mobileconfig can unintentionally disconnect devices from networks.
3. Revocation Workflow
• If a certificate is revoked in the CA (e.g., via Digicert API), Fleet should reflect this change in its UI.
• Manual revocation on a single device may involve deleting the profile or moving the device to a different group.
4. Cross-Segment Certificates
• Situations may arise with multiple certificates (e.g., one for Cisco network identity, another from IdP).
• Admins must clearly name and scope certificates.
Supported Features and Integrations
1. CA Integrations
• Examples: Digicert, Venafi, ADCS.
• Digicert: High-end PKI.
• Venafi: Low-end PKI.
• ADCS: Typically for on-prem customers, involves custom software installation for directory services.
2. Certificate Management in Fleet
• Fleet should generate CSRs and upload them to CAs.
• Renewal of certificates must be fully automated.
• Managed .mobileconfig profiles should simplify deployment.
Future Considerations
1. Testing and QA
• Set up scenarios to test cert-based access (e.g., configure OpenVPN and restrict access to a website).
2. Declaration (DDM) Profiles
• Consider implications for managing certificates with DDM profiles, especially on Windows.
3. API Polling for Revocation
• Fleet might need to periodically check CA APIs (e.g., Digicert) to detect foreign-initiated revocations.
4. Cost Implications
• Early renewal may introduce unnecessary costs.
Final Notes
• Naming and Clarity
• Certificates should be named for their use case to avoid confusion when managing multiple CAs.
• Visibility in Fleet
• Admins should see certificate expiration dates in a list view to facilitate proactive management.
prospect-blondelet
: Gong snippet: https://us-65885.app.gong.io/call?id=834076390531746995&highlights=%5B%7B%22type%22%3A%22SHARE%22%2C%22from%22%3A1695%2C%22to%22%3A1847%7D%5Dcustomer-pingali
: Gong snippets:customer-cisneros
: Gong snippet: TODOcustomer-montague
: Gong snippet: TODOcustomer-pingali
: Gong snippet: TODOcustomer-reedtimmer
: Gong snippet: TODOcustomer-rocher
: Gong snippet: TODOcustomer-ufa
: Gong snippet: TODOSystem
orUser
for thePayloadScope
key in the configuration profile.ssh
ing into the AWS production environment) in common enterprise setups, IT admins need to be able to deliver a certificate to the device. Normally on macOS, admins do this with a config profile. In the profile (the OS setting) I deploy to my Macs, there is always a URL of the certificate authority (ex. Digicert, Smallstep, AD CS, NDES, etc.) In its simplest form, the device could talk directly to this CA URL to get whatever scraps it needs to build a certificate locally and store in the keychain. (The only problem is no one wants it to work that way.) People don't want to have devices talk directly to the CA. (why? because if your CA gets compromised, you're hosed. Customers ideally want only the Fleet server to be able to communicate with the CA, not every laptop at a random Starbucks.) In those cases, the IT admin instead gives Fleet the secrets and the CA URL needed to talk directly to the CA, and then, deploys a profile (.mobileconfig) --ideally managed by the integration and abstracted, like how we handle the "Disk encryption" in the UI, not something you're building yourself by hand. Then that .mobileconfig file with the data from the CA gets sent down to the device so that it can assemble the certifcate and stick it in the keychain. IT expects the certificate to be fully managed by the integration -- to be renewed automatically on the device before it expires (what if the device is off for over a year-- what edge cases will come up? How does this commonly look on windows?)@noahtalerman: Other MDM solutions report a list of certificates deployed and their status: revoked, inactive, expired
@nonpunctual Just want to point out that all organizations that I have seen with 802.1x do not start with anyone creating a wi-fi profile. This is possible, but, with enterprise wi-fi the device is negotiating a RADIUS server with 802.1x authorization & authentication. In all the Jamf instances I have seen what this is means is that the AD CS or SCEP proxy template is used to create a cert that is placed in the keychain so when the device tries to talk to the RADIUS server to get on the wi-fi, the cert is in place to authenticate & authorize the device. @noahtalerman
Please see: https://support.apple.com/guide/deployment/connect-to-8021x-networks-depabc994b84/web
User stories
21955
22539
22709