自己署名証明書を使用するようウェブサービスを設定する



自己署名証明書を使用するようウェブサービスを設定する

Alexaサービスがウェブサービスと通信する際、ユーザーのリクエストとそれに対する応答はインターネットを使用して送信されます。Alexaでは、このデータの機密性および保全性を確保するために、必ずSSL/TLSを使ったHTTP接続を使用します。

テスト目的の場合、この要件を満たすために自己署名したSSL証明書を使うことができます。この場合、証明書を自分で作成して、スキルのセットアップ時に開発者コンソールにアップロードし、Alexaに接続する際にその証明書を提示するようにエンドポイントを設定します。このオプションはテストでのみ使用できますのでご注意ください。

テスト用に自己署名証明書をセットアップする手順については、以下のセクションを参照してください。これらの手順では、LinuxプラットフォームのOpenSSLを使用しています。

テスト用に秘密鍵と自己署名証明書を作成する

  1. 以下のコマンドを実行して秘密鍵を作成します。

       openssl genrsa -out private-key.pem 2048
    
  2. テキストエディターで以下の形式のコンフィギュレーションファイルを作成し、.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 = ドメインの完全修飾名入力します
    
  3. コンフィギュレーションファイルの以下の内容を独自の値で置き換えます。

    ST: 都道府県の名前を指定します
    L: 所在地の都市名を指定します
    O: 所属する組織名を指定します
    CN: スキル名を指定します
    DNS.1: エンドポイントの完全修飾ドメイン名を指定します
    

    DNS.1セクションにはエンドポイントのドメイン名を指定する必要があります。ドメイン名が決まってから証明書を作成してください。

    完成したコンフィギュレーションファイルのサンプルについては以下を参照してください。

  4. 以下のコマンドを実行して証明書を生成します。private-key.pemconfiguration.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は証明書の公開鍵部分の有効性を確認できます。

  1. developer.amazon.com/ja/alexaに移動します。
  2. あなたのAlexaコンソールSkillsをクリックします。開発者コンソールが開き、すでに作成したスキルがすべて表示されます。
  3. リストから変更するスキルの編集をクリックします。
  4. ビルド>カスタム>エンドポイントに移動します。
  5. サービスのエンドポイントの種類としてHTTPSを選択します。
  6. デフォルトの地域など、設定する地域のエンドポイントを入力します。
  7. エンドポイントのフィールドで、X 509形式の自己署名証明書をアップロードしますオプションを選択します。
  8. 証明書をアップロードするにはここをクリックしてくださいボックスをクリックし、先ほど生成した証明書の.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や自己署名証明書に関するその他のリソースは以下を参照してください。これらのリンクをクリックするとサードパーティのサイトに移動します。