自己署名証明書を使用するようウェブサービスを設定する
Alexaサービスがウェブサービスと通信する際、ユーザーのリクエストとそれに対する応答はインターネットを使用して送信されます。Alexaでは、このデータの機密性および保全性を確保するために、必ずSSL/TLSを使ったHTTPS接続を使用します。
テスト目的の場合、この要件を満たすために自己署名したSSL証明書を使うことができます。この場合、証明書を自分で作成して、スキルのセットアップ時に開発者コンソールにアップロードし、Alexaに接続する際にその証明書を提示するようにエンドポイントを設定します。このオプションはテストでのみ使用できますのでご注意ください。
スキルのエンドポイントを開発者コンソールから設定する場合も、スキルマニフェストから直接設定する場合も、SSLCertificateSets APIを使ってスキルエンドポイントのSSL証明書を設定または取得できます。
テスト用に自己署名証明書をセットアップする手順については、以下のセクションを参照してください。これらの手順では、LinuxプラットフォームのOpenSSLを使用しています。
- テスト用に秘密鍵と自己署名証明書を作成する
- 自己署名証明書を使うようにAlexaスキルのコンフィギュレーションを更新する
- 自己署名証明書を使うようにエンドポイントを設定する
- その他のSSLリソース
- 関連トピック
テスト用に秘密鍵と自己署名証明書を作成する
-
以下のコマンドを実行して秘密鍵を作成します。
openssl genrsa -out private-key.pem 2048
重要: 秘密鍵を持っているとなりすましができるため、秘密鍵は安全な場所に保管してください。 -
テキストエディターで以下の形式のコンフィギュレーションファイルを作成し、
.cnf
ファイル(例:configuration.cnf
として保存します。[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = JP ST = 都道府県の名前を指定します L = 所在地の都市名を指定します O = 所属する組織名を指定します CN = スキル名を指定します [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @subject_alternate_names [subject_alternate_names] DNS.1 = ドメインの完全修飾名を入力します
-
コンフィギュレーションファイルの以下の内容を独自の値で置き換えます。
ST: 都道府県の名前を指定します L: 所在地の都市名を指定します O: 所属する組織名を指定します CN: スキル名を指定します DNS.1: エンドポイントの完全修飾ドメイン名を指定します
DNS.1
セクションにはエンドポイントのドメイン名を指定する必要があります。ドメイン名が決まってから証明書を作成してください。完成したコンフィギュレーションファイルのサンプルについては以下を参照してください。
-
以下のコマンドを実行して証明書を生成します。
private-key.pem
とconfiguration.cnf
の部分には、自分の作ったファイルの名前を指定します。openssl req -new -x509 -days 365 \ -key private-key.pem \ -config configuration.cnf \ -out certificate.pem
これにより、certificate.pem
というファイルに自己署名証明書が生成されます。
証明書の.pem
、秘密鍵の.pem
、コンフィギュレーションの.cnf
ファイルを安全な場所に保存してから、証明書を使うようにスキルのコンフィギュレーションを更新します。
たとえば、証明書の完成したコンフィギュレーションファイルは以下のようになります。
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = JP
ST = Hyogo
L = Kobe
O = My Company Name
CN = Wise Guy
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @subject_alternate_names
[subject_alternate_names]
DNS.1 = wiseguy.mywebserver.com
自己署名証明書を使うようにAlexaスキルのコンフィギュレーションを更新する
証明書を作成したら、開発者コンソールでコンフィギュレーションを更新する必要があります。秘密鍵と異なり、証明書には公開データのみが含まれ、サービスを識別するためにAmazonと共有できます。これを使用して、Alexaは証明書の公開鍵部分の有効性を確認できます。
- developer.amazon.com/alexaを開きます。
-
Alexa Skills Kit (ASK)>開発者コンソールをクリックします。
開発者コンソールが開き、作成済みのスキルが表示されます。
- リストから変更するスキルの編集をクリックします。
- ビルド>カスタム>エンドポイントに移動します。
- サービスのエンドポイントの種類としてHTTPSを選択します。
- デフォルトの地域など、設定する地域のエンドポイントを入力します。
- エンドポイントのフィールドで、X 509形式の自己署名証明書をアップロードしますオプションを選択します。
-
証明書をアップロードするにはここをクリックしてくださいボックスをクリックし、先ほど生成した証明書の
.pem
ファイルを選択します。上のコマンドでは、certificate.pem
というファイルに証明書が生成されました。証明書の
.pem
ファイルを証明書をアップロードするにはここをクリックしてくださいボックスにドラッグすることもできます。
自己署名証明書を使うようにエンドポイントを設定する
Alexaがリクエストを送信する際、サービスは証明書を提示する必要があります。証明書のsubject alternate nameはエンドポイントのドメイン名と一致する必要があります。
たとえば、サービスのエンドポイントがhttps://wiseguy.mywebserver.com/wiseguy
であるとします。この場合、エンドポイントはsubject alternate nameがwiseguy.mywebserver.com
に設定された有効な証明書を提示する必要があります。この値は、証明書の生成に使用するコンフィギュレーションファイルで指定します。
この証明書を提示するようエンドポイントを設定します。この設定の詳細は、ウェブサービスのホスティング方法によって異なります。たとえば、Amazon Web Services Elastic Beanstalkを使っている場合は、AWSコマンドラインインターフェースを使った証明書ファイルをアップロードします。
その他のSSLリソース
SSLや自己署名証明書に関するその他のリソースは以下を参照してください。これらのリンクをクリックするとサードパーティのサイトに移動します。
関連トピック
最終更新日: 2022 年 01 月 31 日