> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS p12 인증서 생성

> OneSignal을 통해 iOS 또는 macOS 앱을 Apple Push Notification service(APNs)에 연결하기 위한 .p12 푸시 인증서를 생성하고 업로드하세요.

iOS 앱에 푸시 알림을 보내려면 Apple Push Notification Services(APNs)에 대한 인증된 연결이 필요합니다. **[토큰 기반(.p8 키)](./ios-p8-token-based-connection-to-apns)** 또는 **인증서 기반(.p12 파일)** 방법을 사용하여 인증할 수 있지만 하나만 필요합니다.

<Warning>
  .p12 인증서는 1년 후 만료됩니다. 이 인증서의 갱신을 관리하고 싶지 않다면 만료되지 않는 [.p8 키를 생성](./ios-p8-token-based-connection-to-apns)할 수 있습니다.
</Warning>

이 가이드는 **인증서 기반(.p12 파일)** 설정을 안내합니다. 매년 갱신해야 하므로 권장되지 않습니다. 여기에는 Apple Developer 계정에서 새 인증서를 생성하고 매년 OneSignal 대시보드에 다시 업로드하는 것이 포함됩니다.

***

## 요구 사항

시작하기 전에 다음 사항이 있는지 확인하세요:

* iOS 또는 macOS 앱.
* [**Admin** 액세스](https://appstoreconnect.apple.com/access/users) 권한이 있는 [**유료 Apple Developer 계정**](https://developer.apple.com/).
* [**OneSignal 계정**](https://onesignal.com).
* Xcode 14+가 설치된 Mac.
* Xcode에서 설정한 앱 타겟의 **Bundle ID**.
* **푸시 알림 기능이 활성화된** Xcode 프로젝트.

***

## 인증서 서명 요청(CSR) 생성

먼저 macOS에서 `.certSigningRequest` 파일을 생성해야 합니다.

1. **Applications > Utilities > Keychain Access**를 여세요.
2. 메뉴 바에서 \*\*Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority...\*\*를 클릭하세요.

<Frame caption="Mac 키체인 접근">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4792ecd2f2859197d192d41e953c7cb461b62a08955e36de8674d13ebe3245d9-image.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=0d53d2a7d0a7992bb646cda2c10b2e3f" alt="Certificate Assistant 옵션이 표시된 Keychain Access 메뉴" width="709" height="314" data-path="images/docs/4792ecd2f2859197d192d41e953c7cb461b62a08955e36de8674d13ebe3245d9-image.png" />
</Frame>

3. 필수 필드를 입력하세요:
   * **User Email Address**: `[email protected]`
   * **Common Name**: 귀하의 이름 또는 인증서 이름
   * **CA Email Address**: 공백으로 남겨두세요
   * **Request is**: **Saved to disk** 선택

<Frame caption="Certificate Assistant 창">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/edfa46c8fa6d2a2743ec85d049cbed85d67eb4163388f44c7cbb602740ec1430-image.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=d78feadfda1f4a2c71806f8ab10edd04" alt="이메일, 일반 이름, Saved to disk 필드가 있는 Certificate Assistant 창" width="728" height="554" data-path="images/docs/edfa46c8fa6d2a2743ec85d049cbed85d67eb4163388f44c7cbb602740ec1430-image.png" />
</Frame>

4. **Continue**를 클릭하고, `.certSigningRequest` 파일을 저장할 위치를 선택한 후 **Save**를 클릭하세요.

***

## 앱에 푸시 기능 활성화

<Note>
  Xcode에서 **Automatically manage signing**을 사용하는 경우 이 섹션을 건너뛰세요.
</Note>

1. Apple Developer 포털의 [Identifiers](https://developer.apple.com/account/ios/identifier/bundle) 섹션으로 이동하여 목록에서 앱의 **App ID**를 찾아 선택하세요.

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0f111cc6bc3d596c4f8ede9a8f62f8fafc526358cfc0f2f8b1e1a4f7fc8248fc-image.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=05b2003fb8c2fcd9131c44a793a0aba3" alt="App ID 목록이 표시된 Apple Developer Identifiers 섹션" width="894" height="319" data-path="images/docs/0f111cc6bc3d596c4f8ede9a8f62f8fafc526358cfc0f2f8b1e1a4f7fc8248fc-image.png" />
</Frame>

2. 체크박스를 선택하여 **Push Notifications** 기능을 활성화하세요.

<Warning>
  \*\*"Configure"\*\*를 클릭하지 **마세요** — 토글만 활성화하세요.
</Warning>

<Frame>
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3a420360bc845131ad00179d9542b9cc0dae47448ee0eef5068e609b7340f5d3-image.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=ba0781029d19036ddad3db3e45037d2b" alt="Push Notifications 체크박스가 활성화된 App ID 기능 목록" width="2008" height="142" data-path="images/docs/3a420360bc845131ad00179d9542b9cc0dae47448ee0eef5068e609b7340f5d3-image.png" />
</Frame>

***

## 푸시 인증서 생성하기

Apple Push Notification service(APNs) SSL 인증서를 생성하려면 다음 단계를 따르세요:

1. [Apple Certificates 페이지](https://developer.apple.com/account/resources/certificates/add)를 방문하세요.

2. **plus (+)** 버튼을 클릭하여 새 인증서를 생성하세요.

3. **Services** 아래에서 다음을 선택하세요:

   * **Apple Push Notification service SSL (Sandbox & Production)**
   * 그런 다음 **Continue** 클릭

   <Frame>
     <img src="https://mintcdn.com/onesignal/MUgio66t0sYhGEvj/images/docs/6a48d1c410b80812f2893209eec0ae3d761ec86e40229b03ac780f1ae7124e48-image.png?fit=max&auto=format&n=MUgio66t0sYhGEvj&q=85&s=6e0d0bb4d73dab95c32a0dc96d740723" alt="Apple Push Notification service SSL Sandbox and Production 옵션이 표시된 Apple Certificates 페이지" width="896" height="865" data-path="images/docs/6a48d1c410b80812f2893209eec0ae3d761ec86e40229b03ac780f1ae7124e48-image.png" />
   </Frame>

4. 목록에서 **App ID**를 선택하고 **Continue**를 클릭하세요.

<Frame>
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/35daef0614fe669cadeb12adb900f0da6deab8b4283e29e1ba2712ce3d23e634-image.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=af9f0fb1fefed645b5ebefc6964d0d2d" alt="푸시 인증서를 위한 App ID 선택 드롭다운" width="897" height="366" data-path="images/docs/35daef0614fe669cadeb12adb900f0da6deab8b4283e29e1ba2712ce3d23e634-image.png" />
</Frame>

5. 이전에 생성한 `.certSigningRequest` 파일을 업로드하세요.

<Frame>
  <img src="https://mintcdn.com/onesignal/MUgio66t0sYhGEvj/images/docs/6bb85bd5c6f420f73f1325ca5ccceea1c9cb22c618ccae8e7b34b5ead7fe28aa-image.png?fit=max&auto=format&n=MUgio66t0sYhGEvj&q=85&s=1ca586cee9190e53ea681b411e36a786" alt="인증서 서명 요청 파일 업로드 대화상자" width="662" height="626" data-path="images/docs/6bb85bd5c6f420f73f1325ca5ccceea1c9cb22c618ccae8e7b34b5ead7fe28aa-image.png" />
</Frame>

6. **Continue**를 클릭한 다음 **Download**를 클릭하여 생성된 `.cer` 파일을 컴퓨터에 저장하세요.

<Frame>
  <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca14b193b3ac73e0e4dfbc1697a3e24454341ebd880d2391d369fe20868f9434-image.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=e81079a2a25e6e82ed0eb9f1204ab774" alt="생성된 .cer 인증서 파일의 다운로드 버튼" width="924" height="368" data-path="images/docs/ca14b193b3ac73e0e4dfbc1697a3e24454341ebd880d2391d369fe20868f9434-image.png" />
</Frame>

이 `.cer` 파일을 다음 섹션에서 사용하여 `.p12` 인증서를 생성합니다.

***

## 개인 키 생성 및 .p12 인증서 내보내기

1. 다운로드한 `.cer` 파일을 **더블 클릭**하여 **Keychain Access**로 가져오세요.

2. Keychain Access에서 다음으로 이동하세요:

   * **Keychains > Login**
   * **Category > My Certificates**

3. **Apple Push Services**라는 이름의 인증서를 찾으세요.

4. 인증서를 **오른쪽 클릭**하고 **Export**를 선택하세요.

<Frame caption="Export는 원하는 파일 위치에 .p12 파일을 생성합니다">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a8aae38ea4755020f4695ddd6fd2ccfc0e0bd8d262414665467f973d3ed90912-image.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=ce1453c325f0ad6790754f25a7a1a506" alt="Apple Push Services 인증서의 Export 옵션이 표시된 Keychain Access 오른쪽 클릭 메뉴" width="960" height="720" data-path="images/docs/a8aae38ea4755020f4695ddd6fd2ccfc0e0bd8d262414665467f973d3ed90912-image.png" />
</Frame>

5. 파일을 저장할 위치를 선택하고 파일 형식을 \*\*`.p12`\*\*로 선택하세요.

6. 메시지가 표시되면 `.p12` 파일에 대한 **비밀번호**를 설정하세요. OneSignal에 업로드할 때 이 비밀번호가 필요합니다.

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/070cbc6d0197377e3805cf23e92bf9d876efdb1754e9c233db8bde453cc7dcd4-Screenshot_2025-04-16_at_2.10.17_PM.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=58e96cbb675ff90014c37e7fd1852975" alt=".p12 파일 형식 선택 및 비밀번호 입력 프롬프트가 표시된 저장 대화상자" width="918" height="558" data-path="images/docs/070cbc6d0197377e3805cf23e92bf9d876efdb1754e9c233db8bde453cc7dcd4-Screenshot_2025-04-16_at_2.10.17_PM.png" />
</Frame>

***

## OneSignal에 .p12 업로드

1. [OneSignal 대시보드](https://onesignal.com)에서 앱 > **Settings > Push & In-App > Apple iOS**로 이동하세요.
2. `.p12` 파일을 업로드하세요(비밀번호를 설정한 경우 입력). **Save**를 클릭하세요.

<Check>
  OneSignal에서 **.p12 인증서를 사용한 APNs 인증** 설정을 성공적으로 완료했습니다.

  이제 iOS 앱이 푸시 알림을 보내고 받을 준비가 되었습니다! 🎉
</Check>

***

## .p12 문제 해결

### 유효하지 않은 인증서 형식 오류

**원인:** 업로드된 파일이 `.p12` 형식이 아닙니다.

**해결:** Keychain Access에서 인증서를 **`.p12`로** 내보내는지 확인하세요(`.cer` 또는 `.pem`이 아님).

### OneSignal에 업로드할 때 "잘못된 비밀번호"

**원인:** 비밀번호가 잘못 입력되었거나 설정되지 않았습니다.

**해결:**

* 다시 내보내고 **새 비밀번호**를 설정하세요.
* 붙여넣을 때 추가 공백이 추가되지 않도록 하세요.
* Provisionator를 사용하는 경우 비밀번호가 UI에 표시됩니다.

### 내보낸 파일에 개인 키 누락

**원인:** 인증서를 가져왔지만 개인 키와 연결되지 않았습니다.

**해결:**

* 동일한 컴퓨터의 Keychain Access에서 **CSR을 생성**했는지 확인하세요.
* `.cer` 파일을 다운로드한 후 더블 클릭하여 설치하고 **My Certificates** 아래에 키가 나타나는지 확인하세요.

### 업로드 후 푸시 알림이 작동하지 않음

**원인:** App ID가 잘못되었거나 Provisioning Profile에 기능이 누락되었습니다.

**해결:**

* `.p12`가 앱에서 사용하는 **App ID**와 일치하는지 확인하세요.
* Apple Developer Portal에서 App ID에 **Push Notifications가 활성화**되어 있는지 확인하세요.
* Provisioning Profile에 **Push**가 포함되어 있는지 확인하세요.

### 만료된 인증서

**원인:** `.p12` 인증서가 더 이상 유효하지 않습니다.

**해결:**

* Apple Developer > Certificates로 이동하여 만료일을 확인하세요.
* 이전 인증서를 취소하고 새 인증서를 생성하세요.

***

## 다음 단계

<Columns cols={2}>
  <Card title="iOS SDK 설정" icon="apple" href="./ios-sdk-setup">
    OneSignal SDK를 설치하고, 앱에서 초기화한 후 테스트 알림을 보내세요.
  </Card>

  <Card title="모바일 SDK 설정" icon="mobile" href="./mobile-sdk-setup">
    플랫폼을 선택하고 Android, iOS 또는 크로스 플랫폼 프레임워크에 대한 전체 SDK 통합 가이드를 따르세요.
  </Card>
</Columns>

***

## FAQ

### .p12 인증서는 언제 만료되며 어떻게 갱신하나요?

.p12 인증서는 생성 후 **1년** 후에 만료됩니다. 갱신하려면 새 CSR을 생성하고, Apple Developer에서 새 푸시 인증서를 만들고, .p12로 내보낸 후 OneSignal 대시보드에 다시 업로드하세요. 중단을 방지하기 위해 캘린더 알림을 설정하세요. 또는 만료되지 않는 [.p8 키](./ios-p8-token-based-connection-to-apns)로 전환하세요.

### .p8과 .p12 중 어느 것을 사용해야 하나요?

OneSignal은 대부분의 앱에 **.p8 키**를 권장합니다. .p8 키는 만료되지 않으며, Apple Developer 계정 아래의 모든 앱에서 작동하고, 관리가 더 간단합니다. .p12 인증서는 앱별로 적용되며 매년 갱신해야 합니다. 설정 지침은 [.p8 키 가이드](./ios-p8-token-based-connection-to-apns)를 참조하세요.

### 프로비저닝 프로파일이 필요한가요? 어떻게 만드나요?

네, Apple은 개발, 테스트(Ad Hoc) 및 App Store 배포를 위해 다양한 유형의 프로파일을 요구합니다.

Xcode에서 **Automatically manage signing**을 선택하여 자동으로 생성할 수 있어야 합니다.

<Frame>
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/73993224529058ffe5797afc5998c49bd54a64d5dd97cce26479b5f69c0bf46d-Screenshot_2025-04-21_at_4.48.21_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=794544ccd6d05744f053386b2a961c74" alt="Automatically manage signing이 활성화된 Xcode Signing and Capabilities 탭" width="2058" height="632" data-path="images/docs/73993224529058ffe5797afc5998c49bd54a64d5dd97cce26479b5f69c0bf46d-Screenshot_2025-04-21_at_4.48.21_PM.png" />
</Frame>

그렇지 않으면 자세한 내용은 [Apple의 프로비저닝 프로파일 문서](https://developer.apple.com/help/account/provisioning-profiles/provisioning-profile-updates)를 참조하세요.

***
