fleetdm / fleet

Open-source platform for IT, security, and infrastructure teams. (Linux, macOS, Chrome, Windows, cloud, data center)
https://fleetdm.com
Other
3.16k stars 432 forks source link

Help end users connect to Wi-Fi with certificates from certificate authority (NDES, DigiCert, etc.) #13420

Open noahtalerman opened 1 year ago

noahtalerman commented 1 year ago
image

Please see: https://support.apple.com/guide/deployment/connect-to-8021x-networks-depabc994b84/web


User stories

noahtalerman commented 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:

noahtalerman commented 8 months ago

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.

dherder commented 3 months ago

@noahtalerman We need to clarify the methodology of certificate generation / CA integration. Which one of the following methods / protocols does this issue address?

Screenshot 2024-08-27 at 10 25 40 AM
dherder commented 3 months ago

Certificate_Authority_Integrations.pdf

dherder commented 3 months ago

@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

noahtalerman commented 3 months ago

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!

noahtalerman commented 2 months ago
  1. Fleet needs some secret/certificate to communicate w/ AD CS.
  2. When Fleet goes to AD CS to ask for a certificate, AD CS needs to know what the certificate should look like
    • things like subject name, cryptography, etc.
    • this is where Jamf lets the IT admin point to a template they created in Jamf's separate AD CS connector app
  3. Fleet needs to deliver the certificate via profile
noahtalerman commented 2 months ago

Latest requirements:

nonpunctual commented 1 month ago

for reference: https://github.com/jamf/ol/blob/master/adcsc/Test/Testing%20AD%20CS%20Connector%20with%20curl.sh

noahtalerman commented 1 month ago

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)


Goal

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.

User journey

Changes

Product

Engineering

Product quality

ℹ️  Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".

Context

QA

Risk assessment

Manual testing steps

  1. Step 1
  2. Step 2
  3. Step 3

Testing notes

Confirmation

  1. [ ] Engineer (@____): Added comment to user story confirming succesful completion of QA.
  2. [ ] QA (@____): Added comment to user story confirming succesful completion of QA.
lukeheath commented 1 week ago

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.