Apple Certificate là chứng chỉ kỹ thuật số do Apple Developer Portal cấp để ký mã nguồn cho các ứng dụng iOS, iPadOS, macOS, tvOS và watchOS. Theo Apple Developer Support, 2026, chứng chỉ là một phần của cơ sở hạ tầng khóa công khai (PKI) và cần thiết để xác nhận danh tính nhà phát triển. Bài viết sẽ phân tích các loại chứng chỉ, quy trình tạo và quản lý chúng.
Tổng quan
Apple Certificate là chứng chỉ mật mã định dạng X.509 do trung tâm chứng thực Apple (Apple Certificate Authority) cấp. Nó xác nhận rằng chủ sở hữu là thành viên đã đăng ký của Apple Developer Program và có quyền ký ứng dụng cho hệ sinh thái Apple. Chứng chỉ bao gồm khóa công khai, siêu dữ liệu chủ sở hữu và chữ ký số của Apple CA — bất kỳ ai cũng có thể xác thực tính hợp lệ của chứng chỉ bằng chứng chỉ gốc Apple được tích hợp trong hệ điều hành.
Kiến trúc PKI của Apple bao gồm ba cấp: chứng chỉ gốc Apple (Apple Root CA), chứng chỉ trung gian (Apple Worldwide Developer Relations CA) và chứng chỉ nhà phát triển. Apple Worldwide Developer Relations CA ký tất cả chứng chỉ nhà phát triển — nếu chứng chỉ trung gian này không có trong chuỗi tin cậy, chữ ký mã sẽ bị coi là không hợp lệ. Chứng chỉ gốc Apple được cập nhật tự động thông qua cơ chế Apple Trust Store tích hợp trong iOS và macOS.
Mỗi chứng chỉ có thời hạn hiệu lực — từ một đến ba năm, tùy theo loại. Apple Developer Program tự động thông báo cho nhà phát triển 30 ngày trước khi chứng chỉ hết hạn qua email và push notification. Sau khi hết hạn, chứng chỉ cũ không thể dùng để ký bản dựng mới — cần cấp chứng chỉ mới, nhưng ứng dụng đã ký bằng chứng chỉ hết hạn vẫn tiếp tục hoạt động trên thiết bị người dùng.
Chuỗi tin cậy đảm bảo rằng chứng chỉ nhà phát triển thực sự do Apple cấp. iOS kiểm tra: chứng chỉ gốc Apple Root CA (được tích hợp trong firmware), chứng chỉ trung gian Apple Worldwide Developer Relations CA, chứng chỉ nhà phát triển. Nếu bất kỳ phần tử nào trong chuỗi bị thiếu hoặc không hợp lệ, iOS sẽ chặn khởi chạy ứng dụng với lỗi code signing. macOS cung cấp tiện ích security để kiểm tra chuỗi tin cậy của bất kỳ chứng chỉ nào trong keychain.
Quy trình ký mã sử dụng Apple Certificate dựa trên mật mã bất đối xứng. Khóa riêng tư (private key) được lưu trên máy tính của nhà phát triển trong Keychain, còn khóa công khai (public key) được đưa vào chứng chỉ và gửi đến Apple Developer Portal. Khi Xcode ký ứng dụng, nó tạo một bản tóm tắt (hash) của tệp nhị phân và mã hóa nó bằng khóa riêng tư — đó là chữ ký số. Thiết bị giải mã chữ ký bằng khóa công khai từ chứng chỉ và so sánh với hash đã tính toán.
Apple sử dụng thuật toán ECDSA (Elliptic Curve Digital Signature Algorithm) với đường cong P-256 cho tất cả chứng chỉ cấp sau năm 2021. Trước đây sử dụng RSA-2048. Việc chuyển sang ECDSA đã tăng tốc độ xác minh chữ ký trên thiết bị và giảm kích thước chữ ký — đối với ứng dụng di động, điều này đặc biệt quan trọng vì việc xác minh chữ ký được thực hiện mỗi khi khởi chạy. Theo Apple Security Engineering (2025), ECDSA P-256 cung cấp mức bảo mật tương đương RSA-2048 với chi phí tính toán thấp hơn đáng kể.
Đối với quy trình CI/CD, chứng chỉ cùng với khóa riêng tư cần được xuất sang PKCS12 (.p12) và lưu trữ trong kho lưu trữ an toàn. GitHub Actions, Bitrise, Jenkins và các hệ thống CI khác hỗ trợ nhập chứng chỉ qua biến môi trường hoặc secrets. Sau khi nhập vào CI agent, chứng chỉ được thêm tạm thời vào keychain, dùng để ký và bị xóa. Fastlane Match tự động hóa quy trình này bằng cách đồng bộ chứng chỉ giữa các nhà phát triển thông qua kho git được mã hóa.
Development cho phép ký ứng dụng để chạy trên thiết bị vật lý của nhà phát triển. Để có được nó, chỉ cần tài khoản Apple ID miễn phí — Xcode có thể tự động tạo chứng chỉ Development. Distribution chỉ được cấp cho tài khoản Apple Developer Program trả phí ($99/năm) và cần thiết để gửi ứng dụng lên App Store, phân phối Ad Hoc hoặc Enterprise. Một tài khoản có thể có nhiều chứng chỉ Distribution — ví dụ: riêng cho từng ứng dụng hoặc cho các nhóm khác nhau.
Apple Developer Portal cung cấp một số loại chứng chỉ, mỗi loại dành cho một mục đích cụ thể. iOS App Development — chứng chỉ cơ bản để ký ứng dụng trong giai đoạn phát triển. Apple Distribution — chứng chỉ chính để xuất bản lên App Store. Mac Development và Mac Distribution — tương tự cho ứng dụng macOS. Đối với mỗi loại chứng chỉ, cần có một yêu cầu (CSR) riêng trên Apple Developer Portal.
Một nhóm riêng biệt là chứng chỉ cho push notification. Apple Push Notification service (APNs) yêu cầu chứng chỉ SSL riêng hoặc sử dụng token xác thực (APNs Auth Key). Chứng chỉ SSL APNs được cấp riêng cho môi trường Development (Sandbox) và Production, đồng thời gắn với một App ID cụ thể. APNs Auth Key — cách tiếp cận hiện đại hơn: một khóa (.p8) phục vụ tất cả ứng dụng trong tài khoản, giúp đơn giản hóa việc quản lý.
| Loại chứng chỉ | Mục đích | Thời hạn |
|---|---|---|
| iOS App Development | Ký để kiểm thử trên thiết bị | 1 năm |
| Apple Distribution | Xuất bản lên App Store và Ad Hoc | 1 năm |
| Mac Development | Ký ứng dụng macOS cho phát triển | 1 năm |
| Mac Distribution | Xuất bản lên Mac App Store | 1 năm |
| APNs SSL (Sandbox) | Push notification trong môi trường thử nghiệm | 1-3 năm |
| APNs SSL (Production) | Push notification trong sản phẩm thực tế | 1-3 năm |
Việc tạo Apple Certificate bắt đầu bằng việc tạo yêu cầu chứng chỉ (Certificate Signing Request, CSR) thông qua Keychain Access trên macOS. Keychain Access tạo một cặp khóa: khóa riêng tư ở lại trong keychain, còn CSR được gửi đến Apple Developer Portal. Sau khi xác minh danh tính, Apple ký CSR và cấp chứng chỉ hoàn chỉnh (.cer) để tải về và cài đặt bằng cách nhấp đúp.
Để quản lý nhiều dự án và nhóm, Apple cho phép tạo chứng chỉ cho các Team ID khác nhau. Một nhà phát triển có thể là thành viên của nhiều nhóm (thông qua Apple Developer Program — App Store Connect) và mỗi nhóm có chứng chỉ riêng. Xcode tự động chuyển đổi chứng chỉ tùy theo nhóm được chọn trong cài đặt Signing & Capabilities.
Thu hồi chứng chỉ là thao tác quan trọng: tất cả ứng dụng được ký bằng chứng chỉ này sẽ ngừng cài đặt trên thiết bị mới (ứng dụng đã cài vẫn hoạt động). Apple Developer Portal cho phép thu hồi bất kỳ chứng chỉ nào trong mục Certificates. Lý do thu hồi: khóa riêng tư bị xâm phạm, nhà phát triển rời nhóm, vi phạm điều khoản Apple Developer Program. Sau khi thu hồi, cần cấp chứng chỉ mới và ký lại tất cả bản dựng đang hoạt động.
Keychain là kho lưu trữ hệ thống trên macOS dành cho chứng chỉ, khóa riêng tư và mật khẩu. Tất cả chứng chỉ Apple và khóa riêng tư tương ứng được lưu trong keychain đăng nhập (login.keychain) của người dùng. Xcode truy cập Keychain khi ký mã, tự động chọn chứng chỉ phù hợp theo loại bản dựng. Để chẩn đoán sự cố chữ ký, có thể sử dụng tiện ích Keychain Access tích hợp (thư mục /Applications/Utilities).
Xuất chứng chỉ cho CI/CD được thực hiện qua Keychain Access: chọn chứng chỉ và khóa riêng tư tương ứng (chúng phải được mở rộng trên cùng một dòng), nhấp chuột phải và chọn Export. Định dạng — PKCS12 (.p12). Khi xuất, Keychain yêu cầu mật khẩu bảo vệ tệp — mật khẩu này sẽ cần khi nhập trên CI server. Nếu không có khóa riêng tư, chứng chỉ đã xuất sẽ vô dụng cho việc ký — nó chỉ có thể dùng để xác minh mã đã ký.
Ví dụ lệnh nhập chứng chỉ vào keychain của CI agent sử dụng tiện ích security:
# Tạo keychain tạm thời
security create-keychain -p "temp" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "temp" build.keychain
# Nhập chứng chỉ từ .p12
security import certificate.p12 -k build.keychain \
-P "${P12_PASSWORD}" -T /usr/bin/codesign
# Cấu hình chính sách ký
security set-key-partition-list -S apple: -s \
-k "temp" build.keychain
Security create-keychain tạo keychain tạm thời, cách ly với keychain người dùng. Điều này quan trọng đối với CI để không làm ô nhiễm keychain hệ thống của agent. Cờ -T /usr/bin/codesign cho phép tiện ích codesign truy cập khóa mà không yêu cầu mật khẩu — nếu không, quá trình ký tự động trong pipeline sẽ bị gián đoạn bởi hộp thoại. Lệnh set-key-partition-list cần thiết để tương thích với yêu cầu ký mã tự động của macOS.
Lỗi phổ biến nhất — “No signing certificate found” khi biên dịch trong Xcode. Xảy ra khi Keychain thiếu chứng chỉ có khóa riêng tư tương ứng với loại bản dựng đã chọn. Giải pháp: kiểm tra Keychain Access xem có chứng chỉ không, tải về từ Apple Developer Portal và cài đặt. Nếu khóa riêng tư bị mất (máy tính cũ, cài lại hệ thống), cần thu hồi chứng chỉ cũ và cấp chứng chỉ mới.
Lỗi “Valid signing certificate not found” trong CI/CD xảy ra nếu agent chưa cài chứng chỉ trung gian Apple (Apple Worldwide Developer Relations CA). Apple bao gồm chứng chỉ trung gian trong chuỗi khi tải chứng chỉ nhà phát triển, nhưng khi xuất thủ công .p12, chúng có thể bị thiếu. Giải pháp — tải chứng chỉ trung gian từ trang web Apple Certificate Authority và cài đặt vào keychain của CI agent.
Sự cố với chứng chỉ hết hạn biểu hiện bằng lỗi “This certificate has an invalid issuer” khi ký. Apple Developer Portal hiển thị trạng thái và ngày hết hạn của từng chứng chỉ. Nếu ứng dụng đã được xuất bản lên App Store với chứng chỉ hết hạn, nó vẫn hoạt động — App Store sử dụng chứng chỉ Apple riêng để phân phối. Tuy nhiên, để tải bản dựng mới, cần có chứng chỉ Distribution còn hiệu lực. Fastlane bao gồm lệnh cert để tự động tạo và cập nhật chứng chỉ.
Câu hỏi thường gặp
Không, iOS và macOS có các loại chứng chỉ riêng — iOS App Development và Mac Development. Apple Distribution cũng được phân chia theo nền tảng. Khi tạo chứng chỉ trên Apple Developer Portal, cần chỉ rõ nền tảng mục tiêu — không có chứng chỉ chung cho tất cả nền tảng.
Cần thu hồi chứng chỉ cũ trên Apple Developer Portal qua Certificates, Identifiers & Profiles. Sau đó tạo CSR mới qua Keychain Access và cấp chứng chỉ mới. Tất cả ứng dụng đã ký bằng chứng chỉ cũ sẽ cần được ký lại và tải lại lên App Store nếu muốn phát hành bản cập nhật.
Một tài khoản Apple Developer Program được phép có tối đa hai chứng chỉ Distribution và không giới hạn số lượng chứng chỉ Development cùng lúc. Enterprise có giới hạn riêng. Nếu đạt giới hạn chứng chỉ Distribution, cần thu hồi một chứng chỉ hiện có trước khi tạo mới.
Sử dụng tiện ích security: security find-identity -v -p basic sẽ liệt kê tất cả chứng chỉ trong keychain kèm ngày hết hạn. Đối với chứng chỉ cụ thể, chỉ định hash SHA-1: security find-certificate -c “Developer” -p | openssl x509 -noout -enddate.
Có, chứng chỉ được gắn với tài khoản Apple Developer cụ thể (Team ID). Khi thay đổi tài khoản, chứng chỉ cũ trở nên không hợp lệ cho Team ID mới. Xcode khi thay đổi tài khoản trong Accounts Preferences sẽ tự động yêu cầu tạo chứng chỉ mới cho nhóm mới.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm