Move APNs instructions out of UI and into guides (#43434)

- @noahtalerman: For the following quick win:
  - https://github.com/fleetdm/fleet/issues/43435
This commit is contained in:
Noah Talerman 2026-04-15 14:44:34 -05:00 committed by GitHub
parent 7980b636a0
commit 1fe982a7ed
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 67 additions and 111 deletions

View file

@ -8,16 +8,31 @@ To turn on Windows MDM features, head to this [Windows MDM setup article](https:
## Turn on Apple MDM
Apple uses APNs to authenticate and manage interactions between Fleet and hosts.
To connect Fleet to APNs or renew APNs, head to the **Settings > Integrations > Mobile device management (MDM)** page.
Then select **Turn on** under the Apple (macOS, iOS, iPadOS) MDM section.
Apple uses Apple Push Notification service (APNs) APNs to authenticate and manage interactions between Fleet and hosts.
> Apple requires that APNs certificates are renewed annually.
> - The recommended approach is to use a shared admin account to generate the CSR ensuring it can be renewed regardless of individual availability.
> - If your certificate expires, you must turn MDM off and back on for all macOS hosts. Until then, configuration profile changes and other MDM commands will remain stuck in “Pending.”
> - Be sure to use the same Apple ID from year-to-year. If you don't, you will have to turn MDM off and back on for all macOS hosts.
> - If your certificate expires, you must turn MDM off and back on for all Apple hosts. Until then, configuration profile changes and other MDM commands will remain stuck in “Pending.”
> - Be sure to use the same Apple ID from year-to-year. If you don't, you will have to turn MDM off and back on for all Apple hosts.
How to connect Fleet to APNs:
1. In Fleet, navigate to the **Settings > Integrations > Mobile device management (MDM)** page.
2. Select **Turn on** under the Apple (macOS, iOS, iPadOS) MDM section.
3. Select **Download CSR** to download a certificate signing request (CSR) for Apple Push Notification service (APNs).
4. Sign in to [Apple Push Certificates Portal](https://identity.apple.com/pushcert/). If you don't have an Apple ID, select **Create yours now**.
5. In Apple Push Certificates Portal, select **Create a Certificate**, upload your CSR, and download your APNs certificate.
6. Upload APNs certificate (.pem file) in Fleet.
### Renew APNs
1. In Fleet, navigate to the **Settings > Integrations > Mobile device management (MDM)** page.
2. Select **Renew certificate** under the Apple (macOS, iOS, iPadOS) MDM section.
3. Select **Download CSR** to download a certificate signing request (CSR) for Apple Push Notification service (APNs).
4. Sign in to [Apple Push Certificates Portal](https://identity.apple.com/pushcert/).
5. In Apple Push Certificates Portal, select **Renew** next to your certificate. Make sure that the certificate's **Common Name (CN)** matches the one presented in Fleet. If you choose a different certificate, you must turn MDM off and back on for all Apple hosts.
6. Upload your CSR and download new APNs certificate.
7. Upload APNs certificate (.pem file) in Fleet.
## Apple Business Manager (ABM)

View file

@ -52,7 +52,7 @@
display: flex;
gap: $pad-small;
align-items: center;
margin-top: $pad-small;
align-self: flex-start;
label {
display: flex;
@ -79,8 +79,6 @@
}
&__file-uploader {
margin-top: $pad-medium;
margin-left: $pad-medium;
border-radius: 6px;
.file-uploader__message {

View file

@ -65,61 +65,26 @@ const ApplePushCertSetup = ({
return (
<div className={`${baseClass}__page-content ${baseClass}__setup-content`}>
<p className={`${baseClass}__setup-description`}>
Connect Fleet to Apple Push Certificates Portal to turn on MDM.
</p>
<div>
<ol className={`${baseClass}__setup-instructions-list`}>
<li>
<span>1. </span>
<span>
<span>
Download a certificate signing request (CSR) for Apple Push
Notification service (APNs).
</span>
<DownloadCSR baseClass={baseClass} onError={onDownloadError} />
</span>
</li>
<li>
<span>2. </span>
<span>
Sign in to{" "}
<CustomLink
url="https://identity.apple.com/pushcert/"
text="Apple Push Certificates Portal"
newTab
/>
<br />
<br />
If you don&apos;t have an Apple ID, select <b>Create yours now</b>
.
</span>
</li>
<li>
<span>3. </span>
<span>
In Apple Push Certificates Portal, select{" "}
<b>Create a Certificate</b>, upload your CSR, and download your
APNs certificate.
</span>
</li>
<li>
<span>4. </span>
<span>Upload APNs certificate (.pem file) below.</span>
</li>
</ol>
<FileUploader
className={`${baseClass}__file-uploader ${
isUploading ? `${baseClass}__file-uploader--loading` : ""
}`}
accept=".pem"
buttonMessage={isUploading ? "Uploading..." : "Upload"}
buttonType="brand-inverse-icon"
disabled={isUploading}
graphicName="file-pem"
message="APNs certificate (.pem)"
onFileUpload={onFileUpload}
Follow the step-by-step guide to turn on Apple MDM.{" "}
<CustomLink
url="https://fleetdm.com/learn-more-about/turn-on-apple-mdm"
text="Learn how"
newTab
/>
</div>
</p>
<DownloadCSR baseClass={baseClass} onError={onDownloadError} />
<FileUploader
className={`${baseClass}__file-uploader ${
isUploading ? `${baseClass}__file-uploader--loading` : ""
}`}
accept=".pem"
buttonMessage={isUploading ? "Uploading..." : "Upload"}
buttonType="brand-inverse-icon"
disabled={isUploading}
graphicName="file-pem"
message="APNs certificate (.pem)"
onFileUpload={onFileUpload}
/>
</div>
);
};

View file

@ -76,51 +76,26 @@ const RenewCertModal = ({
return (
<Modal title="Renew certificate" onExit={onCancel} className={baseClass}>
<div className={`${baseClass}__page-content ${baseClass}__setup-content`}>
<ol className={`${baseClass}__setup-instructions-list`}>
<li>
<p>
1. Download a certificate signing request (CSR) for Apple Push
Notification service (APNs).
</p>
<DownloadCSR baseClass={baseClass} onError={onDownloadError} />
</li>
<li>
<p>
2. Sign in to{" "}
<CustomLink
url="https://identity.apple.com/pushcert/"
text="Apple Push Certificates Portal"
newTab
/>
</p>
</li>
<li>
<p>
3. In Apple Push Certificates Portal, select <b>Renew</b> next to
your certificate (make sure that the certificate&apos;s{" "}
<b>Common Name (CN)</b> matches the one presented in Fleet).
</p>
</li>
<li>
<p>4. Upload your CSR and download new APNs certificate.</p>
</li>
<li>
<p>
5. Upload APNs certificate (.pem file) below.
<FileUploader
className={`${baseClass}__file-uploader`}
accept=".pem"
buttonMessage="Choose file"
buttonType="brand-inverse-icon"
graphicName="file-pem"
message="APNs certificate (.pem)"
onFileUpload={onSelectFile}
fileDetails={certFile ? { name: certFile.name } : undefined}
/>
</p>
</li>
</ol>
<p>
Follow the step-by-step guide to renew.{" "}
<CustomLink
url="https://fleetdm.com/learn-more-about/renew-apns"
text="Learn how"
newTab
/>
</p>
<FileUploader
className={`${baseClass}__file-uploader`}
accept=".pem"
buttonMessage="Choose file"
buttonType="brand-inverse-icon"
graphicName="file-pem"
message="APNs certificate (.pem)"
onFileUpload={onSelectFile}
fileDetails={certFile ? { name: certFile.name } : undefined}
/>
<div className={`${baseClass}__button-wrap`}>
<DownloadCSR baseClass={baseClass} onError={onDownloadError} />
<Button
className={`${baseClass}__submit-button ${
isUploading ? `uploading` : ""

View file

@ -44,8 +44,6 @@
}
&__file-uploader {
margin-top: $pad-medium;
margin-left: $pad-medium;
border-radius: 6px;
.file-uploader__message {
@ -61,6 +59,11 @@
&__button-wrap {
display: flex;
justify-content: flex-end;
gap: $pad-small;
.renew-cert-modal__request-button {
margin: 0;
}
.renew-cert-modal__submit-button.uploading.button--disabled {
opacity: 1;

View file

@ -1160,7 +1160,7 @@ module.exports.routes = {
'GET /learn-more-about/calendar-events': '/announcements/fleet-in-your-calendar-introducing-maintenance-windows',
'GET /learn-more-about/setup-windows-mdm': '/guides/windows-mdm-setup',
'GET /learn-more-about/setup-abm': '/docs/using-fleet/mdm-setup#apple-business-manager-abm',
'GET /learn-more-about/renew-apns': '/guides/apple-mdm-setup#turn-on-apple-mdm',
'GET /learn-more-about/renew-apns': '/guides/apple-mdm-setup#renew-apns',
'GET /learn-more-about/renew-abm': '/docs/using-fleet/mdm-setup#apple-business-manager-abm',
'GET /learn-more-about/abm-issues': '/guides/apple-mdm-setup#troubleshooting',
'GET /learn-more-about/fleet-server-private-key': '/docs/configuration/fleet-server-configuration#server-private-key',