ApsaraVideo Liveは、HTTPSセキュアアクセラレーションと強制リダイレクト機能をサポートしています。 このトピックでは、安全なアクセラレーションの仕組み、その利点、安全なアクセラレーションの設定方法、および使用方法について説明します。
背景情報
HTTPはデータを平文で送信し、データを暗号化しません。 セキュリティの観点から、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を使用して暗号化モードで送信されています。
Force redirect
強制リダイレクト機能を使用して、クライアントからの元のリクエストをHTTPまたはHTTPSリクエストとしてポイントオブプレゼンス (POP) にリダイレクトできます。
ドメイン名のHTTPSセキュアアクセラレーションを有効にしている場合、指定されたリダイレクトタイプに基づいて、ユーザーからの元のリクエストを強制的にリダイレクトできます。 リダイレクトタイプをHTTP -> HTTPSに設定したとします。 次の図に示すように、クライアントがHTTPリクエストを開始すると、サーバーは301レスポンスを返し、リクエストをHTTPSバージョンのwebページにリダイレクトします。
制御ポリシー機能の動作
ApsaraVideo LiveコンソールでHTTPSを有効にすると、クライアントからApsaraVideo Liveに送信されるリクエストはHTTPSを使用して暗号化されます。 ApsaraVideo Liveは、オリジンサーバーから要求されたリソースを取得し、オリジンサーバーで設定されたプロトコルを使用してクライアントにリソースを返します。 エンドツーエンドのHTTPS暗号化を実装するには、オリジンサーバーのHTTPSを設定および有効にすることを推奨します。
次の図は、HTTPSがデータを暗号化する方法を示しています。
クライアントは HTTPS 経由でリクエストを送信します。
サーバは、公開鍵および秘密鍵を生成する。 あなたはあなた自身で鍵を準備するか、当局からそれらを要求することができます。
サーバは、公開鍵証明書をクライアントに送信します。
クライアントは証明書を検証します。
証明書が有効な場合、クライアントはランダムな文字列を生成します。 クライアントは、公開鍵を使用してランダム文字列を暗号化し、暗号化されたランダム文字列をサーバに送信します。
証明書が無効な場合、SSL ハンドシェイクは失敗します。
説明証明書は、次の条件を満たす場合に有効と見なされます。
証明書の有効期限が切れていません。
証明書は、信頼できる認証局 (CA) によって発行されています。
証明書の公開鍵は、証明書の署名を解読するために使用することができます。
サーバー証明書のドメイン名は、サーバーでホストされている実際のドメイン名と同じです。
サーバは秘密鍵を使用して暗号化されたランダムストリングを復号します。
サーバは、ランダム文字列を使用してデータを暗号化し、データをクライアントに送信します。
クライアントはランダム文字列を使用して受信データを復号化します。
メリット
セキュアな送信: HTTPSセキュアアクセラレーションは、盗聴、改ざん、なりすまし攻撃、および中間者 (MITM) 攻撃から通信を保護します。
情報の暗号化: HTTPSは、送信前にセッションIDやCookieなどの機密情報を暗号化します。 これにより、機密情報の漏洩によるセキュリティの脅威を防ぎます。
データ整合性: HTTPSは送信中にデータ整合性をチェックし、DNSハイジャックや改ざんなどのMITM攻撃からデータを保護します。
優勢な傾向: Google Chrome 70以降やMozilla Firefoxなどの主流のブラウザの数が増えており、2018以来、HTTP URLが安全ではないとラベル付けされています。 HTTPを使用すると、Webサイトはセキュリティリスクにさらされます。 これらのブラウザを使用してWebサイトにアクセスしたユーザーは、このWebサイトが安全でないことを求められます。 これにより、ユーザーエクスペリエンスが低下し、Web サイトへのアクセスが減少する可能性があります。
主流のブラウザは、検索結果でHTTPS URLを優先します。 さらに、主流のブラウザはHTTP/2をサポートする前にHTTPSをサポートする必要があります。 HTTPSは、セキュリティ、市場シェア、ユーザーエクスペリエンスの観点から、より信頼性の高い選択肢です。 したがって、通信プロトコルを HTTPS にアップグレードすることを推奨します。
設定方法
HTTPSセキュアアクセラレーション
HTTPS経由でリソースにアクセスするには、HTTPS証明書を設定する必要があります。 詳細については、「証明書の形式」をご参照ください。
ApsaraVideo Liveコンソールを使用するか、API操作を呼び出してHTTPSセキュアアクセラレーションを設定できます。
1. ApsaraVideo Liveコンソールを使用してHTTPSセキュアアクセラレーションを設定する方法については、「HTTPSセキュアアクセラレーションの設定」をご参照ください。
2. SetLiveDomainCertificate操作を呼び出して、ドメイン名の証明書設定を構成します。
次のサンプルコードは、Java用サーバーSDKを使用してドメイン名の証明書設定を構成する方法の例を示しています。
// Replace the parameters in <> with actual values.
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
} 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コンソールで証明書を表示するには、[Certificate Management] > [SSL Certificate Management] を選択し、[Manage Uploaded Certificates] タブをクリックします。
Java用サーバーSDKの詳細については、「Java用サーバーSDKの使用」をご参照ください。
関連するAPI操作:
API操作 | 説明 | 関連ドキュメント |
SetLiveDomainCertificate | ドメイン名の証明書を有効または無効にし、証明書情報を変更します。 | |
DescribeLiveCertificateList | 証明書を照会します。 | |
DescribeLiveCertificateDetail | 証明書の詳細を照会します。 | |
BatchDeleteLiveDomainConfigs | 一度に複数のドメイン名の設定を削除します。 |
強制リダイレクト
機能を設定する前に、HTTPS証明書が設定されていることを確認してください。
ApsaraVideo Liveコンソールを使用するか、API操作を呼び出して強制リダイレクトを設定できます。
1. ApsaraVideo Liveコンソールを使用して強制リダイレクトを設定する方法については、「強制リダイレクト」をご参照ください。
2. BatchSetLiveDomainConfigs操作を呼び出して、強制リダイレクトを設定します。
次のサンプルコードは、Java用サーバーSDKを使用して強制リダイレクトを設定する方法の例を示しています。
// Replace the parameters in <> with actual values.
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
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
上記の例では、ドメイン名 <DomainNames> に対して強制リダイレクトが設定されています。 これにより、HTTPリクエストは強制的にHTTPSにリダイレクトされます。
Java用サーバーSDKの詳細については、「Java用サーバーSDKの使用」をご参照ください。
関連するAPI操作:
API操作 | 説明 | 関連ドキュメント |
BatchSetLiveDomainConfigs | 一度に複数のドメイン名を設定します。 Functionsパラメーターのhttps_force属性を使用して、強制リダイレクトを設定できます。 |
使用上の注意
Action | 説明 |
HTTPSの無効化と有効化 |
|
証明書と秘密鍵のアップロード |
|
証明書の表示 | 証明書を表示できます。 ただし、秘密鍵は機密であるため、表示できません。 証明書情報を安全に保ちます。 |
証明書の変更または編集 | 証明書を変更または編集できます。 更新された証明書が有効になるまでに1時間かかります。 この操作は慎重に行ってください。 |