nakamurakko’s blog

仕事で覚えたこと、勉強したことを自分のメモ代わりに書いていこうかなと。

App Service マネージド証明書 を設定する

環境

  • Azure
  • Laravel 8

Azure App Service の TLS/SSL の設定 を開くと、 「App Service マネージド証明書の作成」 が用意されているのを今さら気づいた。今のところ無料のサービスということで設定してみる。

f:id:nakamurakko:20210426144632p:plain

プレビュー版ではあるけど、 Azure App Service で TLS/SSL 証明書を追加する無料のマネージド証明書を作成する (プレビュー) に記載されている手順通りにやれば発行完了した。

(注意書きの 無料の証明書は DigiCert によって発行されます。 の記載を考えれば信頼できるSSL証明書だし、もし正式リリースされたら App Service 証明書 を購入する人がいなくなるのではと思ったり。)

App Service に独自ドメインを設定する場合、 App Service プラン は「カスタム ドメイン / SSL」が使えるプランを選ぶ必要がある(価格レベルの確認 を参照)。 ドメインはドメイン提供会社から購入するか、 Azureでドメインを購入する に書いた通り、Azureで購入しておく。 SSLのバインディングが完了後は「TLS/SSL の設定」 - 「HTTPS のみ」をオンにした。

設定完了後に対象 App Service のURLを開き、SSL対応を確認。

f:id:nakamurakko:20210426144652p:plain

おまけ

今回の App Service は Laravel 8 で構築していて、トップページ以外もhttpsにするには Illuminate\Support\Facades\URL::forceScheme() を呼び出す。 AppServiceProvider.boot() に記載している人が多いので、それに合わせた。 (ベストな場所を教えてください。)

<?php

namespace App\Providers;

use Illuminate\Support\Facades\URL; // 追加
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // 追加。本番環境なら「https」に変更するする。
        if (env('APP_ENV') == 'production') {
            URL::forceScheme('https');
        }
    }
}