Sign 與 Notarize macOS 安裝檔或應用程式

自 2012 年起,macOS 開始內建 GateKeeper 安全技術。GateKeeper 可以保護確保使用者正在執行的應用程式未經過第三方修改,也沒有惡意程式碼在其中。接著從 macOS 10.15 起,macOS 更進一步要求所有在 2019 年 6 月 1…

自 2012 年起,macOS 開始內建 GateKeeper 安全技術。GateKeeper 可以保護確保使用者正在執行的應用程式未經過第三方修改,也沒有惡意程式碼在其中。接著從 macOS 10.15 起,macOS 更進一步要求所有在 2019 年 6 月 1 日後所出品的應用程式,都必須經過公證(Notarize)後才能通過 GateKeeper 檢查。

所以,開發者在把應用程式上架到非 App Store 的管道時,必須將應用程式進行簽署且公證,以符合最新的 GateKeeper 規定。應用程式的簽署憑證,可以到 Apple Developer 網站交換後取得,交換時需選擇 Developer ID Installer macOS,並安裝至 macOS Keychain。

進行簽署(Signing)

在終端機上輸入 security find-identity -v 找到用於簽署 Installer 的憑證。前面那一串數字加英文是憑證的識別資訊,後面則是憑證名稱。將後面的憑證名稱複製下來。

使用 productsign -sign “剛才複製的憑證名稱貼於此處” 來源PKG檔的位置 目的地PKG的位置。透過這行指令,會將簽署過後的 PKG 存放在目的地位置。 ProductSign 是一個 Xcode 工具,需要先安裝 XCode 才能使用。

例如:productsign -sign “Developer ID Installer: Glee Tsai (XXXXX2J4Y3)” ~/Desktop/Jamf-connect-trial-downloader.pkg ~/Desktop/signed-Jamf-connect-trial

進行公證(Notarization)

  1. 沒有經過簽署的程式無法進行公證。接著使用 xcrun altool -notarize-app -primary-bundle-id “BundleID 名稱” -username “開發者 Apple ID” -password “APP-SPECIFIC PASSWORDS” -file “要公證的程式路徑” -team-id “團隊編號”。
  2. APP-SPECIFIC PASSWORDS 可以至 Apple ID 網站 登入帳號後申請。
  3. 例如:xcrun altool -notarize-app -primary-bundle-id “me.gleetsai.jamfconnect.trial” -username “[email protected] “ -password “????-????-????-????” -file “/Users/glee.tsai/Desktop/signed-Jamf-connect-trial.pkg” -team-id “?????2J4Y3”
  4. 因為公證是一個自動化過程,當程式沒有被檢查出任何問題後,就會完成公證。此時需要檢查公證結果。
    xcrun altool -notarization-info “BundleID 名稱” -username “[email protected]” -password “????-????-????-????”
  5. 確認公證結果無誤後。Apple 就會發行這個軟體的公證票據,並將此票據打在程式上。
    xcrun stapler staple ~/Desktop/signed-Jamf-connect-trial.pkg
  6. 最後驗證該票據已確實的打在程式上。
    stapler validate -verbose ~/Desktop/signed-Jamf-connect-trial.pkg

Originally published at https://gleetsai.me on September 11, 2021.

Read more

Apple 生態系的真實威脅—我們都可能是目標

Apple 生態系的真實威脅—我們都可能是目標

從一場分享開始的警醒 前陣子在 Jamf Nation Live Taipei 分享了 2024-2025 年 Apple 裝置威脅報告,深入探討了全球 Apple 生態系正面臨的資訊安全威脅。 許多人對 Apple 產品有一種根深蒂固的信心—拿著 Mac 或 iPhone,就像拿到了數位世界的「免死金牌」。說實話,Apple 在軟硬體整合上的安全設計確實領先業界,這不是誇大其詞。但也正因為這份信心,我開始想更深入地了解真實情況。 從 Jamf Security 360 報告開始,我觀察了全球情報機構(如 Citizen Lab、Google TAG、Kaspersky)揭露的真實案例。那時我才意識到一個有點殘酷的事實,也正好對應了同事最常對我說的那句話:Apple 設備並非堅不可摧,使用者自身往往才是最大的弱點。 為什麼 Apple 用戶成了高價值目標

By Glee Tsai

從 Jamf Pro 自定義註冊畫面帶使用者資訊至 Jamf Connect 失敗的處理方式

Jamf Pro 在設定裡面的 Enrollment Customization,本來可以設定在使用者完成設備註冊的當下,同步把 SAML 裡的資訊帶給後面的 Jamf Connect Login,這樣就可以減少一步使用者還需要登入的步驟。但在撰文的當下,Jamf Pro 11.1 仍在這個功能上有問題,在跟 Jamf Support Team 了解後,大概能用一種 Workaround 來解決,只是要特別留意以下事情: 1. 在 Jamf Pro 裡的 Enrollment Customization 不要再打勾 Enable Jamf Pro to pass user information to Jamf Connect 了(因為勾了也沒有用) 2. 確保

By Glee Tsai

在 Apple 零接觸部署下僅允許某個群組啟動設備

在 Jamf Pro 有整合 Single Sign On 的情況下,可以前往 Settings > Enrollment Customization 設定僅允許一個群組中的成員啟用設備。如果這個成員沒有在這個群組裡面的話,就不能夠開箱設備。如果以 Entra ID 為例,需要把 Object ID 填在下方的欄位即可。 對照到我在 Entra ID 上的群組設置: 至於如果不是 Entra ID,而是其它的 SSO Provider 的話,最好可以用 SAML Tracer 這一套 Google Chrome 外掛去看一下自己的 SAML 文件是如何表達群組的,例如下圖能看到這個使用者屬於以下五個群組。 接著有另外一個很重要的事情要提醒,如果你要阻擋註冊的成員,可以登入到 Jamf Pro

By Glee Tsai

在 Conditional Access 條件下設置 Jamf Connect Login 的 MFA 挑戰

Mac 世界的零接觸話題,每年都可以有新的話題出現。圍繞著使用者體驗,讓用戶在拿到電腦的那一刻,就能自動化配置所有公司要求的設定,不需 IT 人員幫忙。這不僅是節省 IT 人員的時間而已,更是讓整個出機流程變得更為流暢。 除了軟體與設定可以全自動化部署以外,使用者帳號當然也可以自助化的設定在電腦裡,而且完全按照公司的規範。所以如果公司正在使用 Entra ID 這樣的目錄服務時,當然也可以把 Entra ID 上面的帳密同步化成電腦本機電腦上的帳密,減少人員帳密疲疺的風險。然而,要求更高等級的公司,可能會要求人員在登入 Entra ID 時必須通過兩階段驗證,而這可能就為同步密碼帶來挑戰。 以 Jamf Connect 來說,這一套軟體可以在 Mac 設備開箱時自動就安裝在電腦上,並且出現一個可客製化的登入視窗給用戶登入 Entra ID。剖析這套軟體,事實上是由兩個 OIDC 授權類別完成的,一個是 Authorization Code Grant,

By Glee Tsai