LoginSignup
0
0

More than 3 years have passed since last update.

クライアントがアプリの一部機能にドメインを割り当てる際に自動でSSL化する方法

Last updated at Posted at 2021-02-20

概要

アプリケーションの一部機能、カート機能や予約機能をクライアントのページで作成する時に、ドメインを指定したいという要望に対してHTTPS接続なので、ACM証明書をこちらで追加する必要があります。今回は、その部分を自動化を行います。

使用技術

・AWS ACM
 https://aws.amazon.com/jp/certificate-manager/
・AWS SDK for PHP
 https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html

作業手順

  1. 特定の機能のURLにクライアント固有のidなど含めます。
  2. クライアントが、【使用したいドメイン】をフォームに入力を行う。(AWS SDKを使用し入力されたドメインをACMに追加 レスポンスに含まれる「エントリー名」「値」を表示)
  3. クライアントが、DNSサービスプロバイダで作成した【使用したいドメイン】にCNAMEで「1.のURL」 「エントリー名」 「値」を登録

上記の3ステップでクライアント側の操作のみで、SSL化されたドメインを割り当てれるようになります。

AWS SDK for PHPを使用しACM登録処理,「エントリー名」 「値」を確認する

参考コード(for_laravel)

use App\Certification;
use Aws\Acm\AcmClient;

public function createACM(Request $request)
{
    $client = new AcmClient([
                    'version'     => 'latest',
                    'region'      => 'ap-northeast-2',
                    'credentials' => [
                    'key'    => config('aws.key'),
                    'secret' => config('aws.secret_key'),
                ],
            ]);

  //ACM登録
  $result = $client->requestCertificate([
            'DomainName' => $request->url;,
            'Tags' => [
                [
                     'Key' => '<string>', // REQUIRED
                     'Value' => '<string>',
                ],
            ],
            'ValidationMethod' => 'DNS',
        ]);

   //こちらで、ACMの情報を呼び出します。
   $resource_name = $result['CertificateArn'],

  $results = $client->describeCertificate([
       'CertificateArn' => $resource_name
  ]);

    $エントリー名 = $results['Certificate']['DomainValidationOptions'][0]["ResourceRecord"]['Name'];
    $値        = $results['Certificate']['DomainValidationOptions'][0]["ResourceRecord"]['Value'];
}

参考URL
https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-acm-2015-12-08.html#requestcertificate

あとがき

半年ほど前に実装した機能で、上手く説明出来なかったのですが記事にして理解できました。
クラウドフロントのキャッシュ削除なんかも下記サイトをみて実装しました。めっちゃ便利です!
・AWS SDK for PHP
 https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0