# SSL Configuration on AWS

Chrome, Safari, Firefox, Edge 등 최신 웹 브라우저는 보안을 위해 **SSL (HTTPS)이 적용되지 않은 환경**에서는 **카메라/마이크 권한 사용을 제한**하거나, **보안되지 않은 스트림 재생을 차단**합니다. 특히, 원활하게 WebRTC 송출/재생과 HLS 재생을 하기 위해서, **Server와 Client 간 통신이 암호화 (HTTPS/WSS)** 되어 있어야 합니다.

OvenMediaEngine Enterprise on AWS는 이러한 설정을 손쉽게 적용할 수 있는 기능을 제공하며, 본 Guide에서 안내하는 보안 설정 과정은 안정적이고 안전한 Streaming Service를 구축 및운영하기 위한 필수 단계입니다.

## SSL 설정 및 검증하기 <a href="#configure-and-verify-ssl" id="configure-and-verify-ssl"></a>

{% stepper %}
{% step %}

### Web Console에서 SSL 설정 <a href="#configure-ssl-in-the-web-console" id="configure-ssl-in-the-web-console"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FVi3BVlY2zgRg0nrM52TN%2Fimage.png?alt=media&#x26;token=86c601a4-4eff-4ab4-8469-b0a4a8b3da8d" alt=""><figcaption></figcaption></figure>

1. Web Console 우측 상단의 <mark style="color:yellow;">\[Settings]</mark> 아이콘을 클릭해 Settings 페이지로 이동한 뒤, 좌측 메뉴에서 <mark style="color:yellow;">**\[SSL Configuration]**</mark>을 선택합니다.
2. Configuration Method 영역에서 <mark style="color:yellow;">\[Change Configuration]</mark> 버튼을 클릭하여 수정 모드로 전환합니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FGN5uOXtSObSQbqUQhD86%2Fimage.png?alt=media&#x26;token=190c47c3-012b-41bd-b32c-f94ca965960e" alt=""><figcaption></figcaption></figure>

3. 이후 Service 환경에 맞는 <mark style="color:yellow;">SSL Configuration Method</mark>를 선택합니다.

{% tabs %}
{% tab title="Option A" %}

#### OvenMediaEngine Enterprise–Provided Subdomain with Auto-Managed SSL Certificate <mark style="color:$primary;">\[추천 방식]</mark>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FtL7vU40QAsv2DB8zUk4Z%2Fimage.png?alt=media&#x26;token=1a817cb8-ff91-4f95-82cb-0ed2b43c4401" alt=""><figcaption></figcaption></figure>

* 별도의 복잡한 설정 없이, OvenMediaEngine Enterprise가 SSL 설정에 필요한 <mark style="color:yellow;">전용 Subdomain과 SSL 인증서를 자동으로 생성</mark>하고, <mark style="color:yellow;">만료일 20일 전부터 자동으로 갱신</mark>하여 관리합니다.
  {% endtab %}

{% tab title="Option B" %}

#### Your Own Domain with Your Own Certificate

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FwB2jsjdHYXe6BeTjuY3R%2Fimage.png?alt=media&#x26;token=87be315b-7ff8-4e86-990d-77e9e1b05e1b" alt=""><figcaption></figcaption></figure>

* 사용자가 보유한 Domain과 SSL 인증서를 OvenMediaEngine Enterprise에 직접 등록합니다. 이 방식을 사용할 경우, Web Console의 <mark style="color:yellow;">\[SSL Configuration]</mark> 화면에 Instance IP (Public IPv4 address)가 표시됩니다. 이 IP로 Domain이 연결되도록, 사용 중인 Domain Name System (DNS)에 접속하여 해당 Domain의 DNS 레코드 등을 설정해주십시오.

* SSL 인증서는 만료일 전에 반드시 직접 갱신해 주십시오.
  {% endtab %}
  {% endtabs %}

* *Your Own Domain with Your Own Certificate* 옵션 (Option B)을 사용하는 경우, Upload해야 하는 Certificate File 유형은 "[Custom SSL Certificate File Guide](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/aws-marketplace/ssl-configuration-on-aws/custom-ssl-certificate-file-guide)"에서 확인할 수 있습니다.

{% hint style="danger" %} <mark style="color:$primary;">**SSL 설정 전 반드시 Elastic IP로 Instance IP를 고정해주십시오.**</mark>

**AWS Elastic IP** (EIP; 탄력적 IP)를 사용해 Instance의 Public IP를 먼저 고정해야 합니다. IP를 고정하지 않은 상태에서 Instance를 중지 후 재시작하면 Public IP가 변경될 수 있으며, 이 경우 기존에 설정한 Domain 연결이 끊어져 Service 중단이 발생할 수 있습니다. Domain 연결 동작과 보안 연결을 안정적으로 유지하기 위해, 고정 IP 환경을 먼저 확보한 후 SSL 설정을 진행해 주십시오.
{% endhint %}
{% endstep %}

{% step %}

### HTTPS로 접속 <a href="#access-via-https" id="access-via-https"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2F6lj2mlYFPfNLOFpLKYUY%2Fimage.png?alt=media&#x26;token=32a00091-1970-4734-b80a-8fef4b203e81" alt=""><figcaption></figcaption></figure>

4. SSL 설정이 정상적으로 적용되면, \[SSL Configuration] 화면에 안내된 <mark style="color:$primary;">**`https://`**</mark><mark style="color:$primary;">`aws-xxxxxxxx.cloud.ovenmedia.io:8443`</mark> 주소로 Web Console에 접속할 수 있습니다.
   {% endstep %}

{% step %}

### SSL 재생 검증 및 URL 확인 <a href="#verify-ssl-playback-and-check-urls" id="verify-ssl-playback-and-check-urls"></a>

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FxDJu7DeBXeqQYLQAh3fT%2Fimage.png?alt=media&#x26;token=6c9dce78-0e27-4e82-b844-416a4d65a9aa" alt=""><figcaption></figcaption></figure>

5. "[OvenMediaEngine Enterprise 기본 동작 확인하기](https://ovenmediaengine-enterprise.gitbook.io/guide/ko-kr/getting-started-on-aws#post-setup-verification-for-ovenmediaengine-enterprise)" 절차에 따라 `rtmp://`<mark style="color:yellow;">`{Domain}`</mark>`:1935/{app}/{stream}`으로 Media Source를 전송한 뒤, Web Console의 Stream List에서 해당 Stream이 정상적으로 송출되는지 확인합니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FiAkpCPnSMwG063hXWkkC%2Fimage.png?alt=media&#x26;token=e33f4197-9231-4fab-97b3-a55fb0015c1d" alt=""><figcaption></figcaption></figure>

6. Stream 상세 보기 화면에서 `TLS`를 선택한 상태에서도 정상적으로 재생된다면, SSL 설정이 성공적으로 완료된 것입니다.

<figure><img src="https://2184736704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZ6NWzeQyKbSWkDFSGwGx%2Fuploads%2FfxV0Vzz6tgfNLjshl4st%2Fimage.png?alt=media&#x26;token=60248eef-7502-4c0a-9bf2-124a9158e275" alt=""><figcaption></figcaption></figure>

7. <mark style="color:yellow;">\[URLs]</mark> 탭에서 <mark style="color:yellow;">TLS가 적용된 Ingress URL</mark>과 <mark style="color:yellow;">Egress URL</mark>을 한 번에 확인할 수 있습니다. 이제 보안 연결을 기반으로 안정적이고 신뢰할 수 있는 고품질의 Streaming Service를 제공할 준비가 완료되었습니다.
   {% endstep %}
   {% endstepper %}
