ApsaraVideo Live は、HTTPS セキュアアクセラレーションと強制リダイレクト機能をサポートしています。このトピックでは、セキュアアクセラレーションの仕組み、メリット、セキュアアクセラレーションの構成方法、および使用上の注意について説明します。
背景情報
HTTP はプレーンテキストでデータを送信し、データを暗号化しません。そのため、コンテンツは簡単に傍受され、理解される可能性があります。
概要
ApsaraVideo Live では、HTTPS セキュアアクセラレーションと強制リダイレクト機能を構成できます。強制リダイレクト機能を使用するには、Secure Sockets Layer(SSL)証明書を構成する必要があります。
HTTPS
HTTPS は、ネットワーク経由の安全な通信に使用されます。HTTP はプレーンテキストでデータを送信します。HTTP の安全なバージョンである HTTPS は、SSL または Transport Layer Security(TLS)プロトコルを使用して HTTP データをカプセル化します。SSL または TLS は、HTTPS のセキュリティ基盤です。
HTTPS は認証と暗号化された通信方法を提供し、インターネット上の安全な通信と機密データの送信に広く使用されています。Electronic Frontier Foundation(EFF)が 2017 年に発表したレポートによると、世界の Web ページトラフィックの半分以上が HTTPS を使用した暗号化モードで送信されています。
強制リダイレクト
強制リダイレクト機能を使用すると、クライアントからの元のリクエストを HTTP または HTTPS リクエストとして Alibaba Cloud Points of Presence(POP)にリダイレクトできます。
ドメイン名に対して HTTPS セキュアアクセラレーションを有効にしている場合は、指定されたリダイレクトタイプに基づいて、ユーザーからの元のリクエストを強制的にリダイレクトできます。リダイレクトタイプを HTTP -> HTTPS に設定したとします。クライアントが HTTP リクエストを開始すると、サーバーは 301 応答を返し、次の図に示すように、リクエストを Web ページの HTTPS バージョンにリダイレクトします。
仕組み
ApsaraVideo Live コンソールで HTTPS を有効にすると、クライアントから ApsaraVideo Live に送信されるリクエストは HTTPS を使用して暗号化されます。ApsaraVideo Live は、オリジンサーバーからリクエストされたリソースを取得し、オリジンサーバーで構成されているプロトコルを使用してリソースをクライアントに返します。エンドツーエンドの HTTPS 暗号化を実装するには、オリジンサーバーの HTTPS を構成して有効にすることをお勧めします。
次の図は、HTTPS がデータを暗号化する方法を示しています。
クライアントは HTTPS 経由でリクエストを送信します。
サーバーは公開鍵と秘密鍵を生成します。鍵は自分で準備するか、認証局からリクエストできます。
サーバーは公開鍵証明書をクライアントに送信します。
クライアントは証明書を検証します。
証明書が有効な場合、クライアントはランダムな文字列を生成します。クライアントは公開鍵を使用してランダムな文字列を暗号化し、暗号化されたランダムな文字列をサーバーに送信します。
証明書が無効な場合、SSL ハンドシェイクは失敗します。
説明証明書は、次の条件が満たされている場合に有効と見なされます。
証明書の期限が切れていない。
証明書が信頼できる認証局(CA)によって発行されている。
証明書の公開鍵を使用して、証明書の署名を復号化できる。
サーバー証明書のドメイン名が、サーバーでホストされている実際のドメイン名と同じである。
サーバーは秘密鍵を使用して、暗号化されたランダムな文字列を復号化します。
サーバーはランダムな文字列を使用してデータを暗号化し、データをクライアントに送信します。
クライアントはランダムな文字列を使用して、受信したデータを復号化します。
メリット
安全な転送:HTTPS セキュアアクセラレーションは、盗聴、改ざん、偽装攻撃、および中間者(MITM)攻撃から通信を保護します。
情報の暗号化:HTTPS は、セッション ID や Cookie などの機密情報を送信前に暗号化します。これにより、機密情報の漏えいによるセキュリティの脅威を防ぎます。
データの整合性:HTTPS はデータ送信中に整合性チェックを実行して、DNS ハイジャックや改ざんなどの MITM 攻撃からデータを保護します。
支配的なトレンド:ますます多くの主流ブラウザが HTTP URL を安全ではないとラベル付けしています。HTTP を使用すると、ユーザーエクスペリエンスが影響を受け、アクセスセキュリティを確保できません。さらに、ApsaraVideo Live では、HTTPS 設定を構成するときに HTTP/2 を有効にすることができ、検索重み付け方式を使用できます。
データセキュリティとユーザーエクスペリエンスを向上させるために、通信プロトコルを HTTPS にスペックアップすることを強くお勧めします。
構成方法
HTTPS セキュアアクセラレーション
HTTPS 経由でリソースにアクセスするには、HTTPS 証明書を構成する必要があります。詳細については、「証明書のフォーマット」をご参照ください。
ApsaraVideo Live コンソールを使用するか、API 操作を呼び出して、HTTPS セキュアアクセラレーションを構成できます。
1. ApsaraVideo Live コンソールを使用して HTTPS セキュアアクセラレーションを構成する方法については、「HTTPS セキュアアクセラレーションを構成する」をご参照ください。
2. SetLiveDomainCertificate 操作を呼び出して、ドメイン名の証明書設定を構成します。
次のサンプルコードは、Java 用サーバー SDK を使用してドメイン名の証明書設定を構成する例を示しています。
// <> 内のパラメーターを実際の値に置き換えます。
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);
SetLiveDomainCertificateRequest setLiveDomainCertificateRequest =new SetLiveDomainCertificateRequest();
setLiveDomainCertificateRequest.setDomainName("<DomainName>");
setLiveDomainCertificateRequest.setSSLProtocol("on");
setLiveDomainCertificateRequest.setCertName("<CertName>");
setLiveDomainCertificateRequest.setCertType("<Upload>");
setLiveDomainCertificateRequest.setSSLPub("<-----BEGIN CERTIFICATE-----\n" +
"MIIDRjCCAq+gAwI********************\n" +
"**************************\n" +
"-----END CERTIFICATE----->");
setLiveDomainCertificateRequest.setSSLPri("<-----BEGIN RSA PRIVATE KEY-----\n" +
"MIICXAIBAAKBgQDO********************\n" +
"****************************\n" +
"-----END RSA PRIVATE KEY----->");
try {
SetLiveDomainCertificateResponse response = client.getAcsResponse(setLiveDomainCertificateRequest);
System.out.println(new Gson().toJson(response));
//todo something /* TODO 処理を追加 */
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
上記の例では、<CertName> という名前の HTTPS 証明書が <DomainName> ドメイン名に構成されています。証明書のタイプは <Upload>、公開鍵は <-----BEGIN CERTIFICATE***>、秘密鍵は <-----BEGIN RSA PRIVATE KEY*****> です。
公開鍵と秘密鍵は、[PEM] フォーマットのみをサポートしています。
証明書が構成されると、証明書は Certificate Management Service に保存されます。Certificate Management Service コンソールで証明書を表示するには、[証明書管理] > [SSL 証明書管理] を選択し、[アップロードされた証明書の管理] タブをクリックします。
詳細については、「Java 用サーバー SDK を使用する」をご参照ください。
関連 API 操作:
API 操作 | 説明 | 参照 |
SetLiveDomainCertificate | ドメイン名の証明書を有効または無効にし、証明書情報を変更します。 | |
DescribeLiveCertificateList | 証明書をクエリします。 | |
DescribeLiveCertificateDetail | 証明書の詳細をクエリします。 | |
BatchDeleteLiveDomainConfigs | 複数のドメイン名の構成を一度に削除します。 |
強制リダイレクト
この機能を構成する前に、HTTPS 証明書が構成されていることを確認してください。
ApsaraVideo Live コンソールを使用するか、API 操作を呼び出して、強制リダイレクトを構成できます。
ApsaraVideo Live コンソールを使用して強制リダイレクトを構成する方法については、「強制リダイレクトを構成する」をご参照ください。
BatchSetLiveDomainConfigs 操作を呼び出して、強制リダイレクトを構成します。
次のサンプルコードは、Java 用サーバー SDK を使用して強制リダイレクトを構成する例を示しています。
// <> 内のパラメーターを実際の値に置き換えます。
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
IAcsClient client = new DefaultAcsClient(profile);
BatchSetLiveDomainConfigsRequest batchSetLiveDomainConfigsRequest =new BatchSetLiveDomainConfigsRequest();
batchSetLiveDomainConfigsRequest.setDomainNames("<DomainNames>");
batchSetLiveDomainConfigsRequest.setFunctions("[{\"functionArgs\":[{\"argName\":\"enable\",\"argValue\":\"on\"}],\"functionName\":\"https_force\"}]");
try {
BatchSetLiveDomainConfigsResponse response = client.getAcsResponse(batchSetLiveDomainConfigsRequest);
System.out.println(new Gson().toJson(response));
//todo something /* TODO 処理を追加 */
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
上記の例では、<DomainNames> ドメイン名に強制リダイレクトが構成されています。これにより、HTTP リクエストは強制的に HTTPS にリダイレクトされます。
Java 用サーバー SDK を使用するJava 用サーバー SDK の詳細については、「」をご参照ください。
関連 API 操作:
API 操作 | 説明 | 参照 |
BatchSetLiveDomainConfigs | 一度に複数のドメイン名を構成します。 Functions パラメーターの https_force 属性を使用して、強制リダイレクトを構成できます。 |
使用上の注意
アクション | 説明 |
[無効にする] と [有効にする] HTTPS |
|
証明書と秘密鍵をアップロードする |
|
証明書を表示する | 証明書を表示できます。ただし、秘密鍵は機密情報であるため表示できません。証明書情報は安全に保管してください。 |
証明書を変更または編集する | 証明書を変更または編集できます。更新された証明書が有効になるまで 1 時間かかります。この操作を実行するときは注意してください。 |