フォーム読み込み中
記事を御覧いただきありがとうございます。ソフトバンクの四役です。
最近、Alibaba Cloudに触れる機会があり、そういえば、「クラウドサービスでSSL証明書を扱ったことがないな…。」と思い、試しにECSとWAF3.0にSSL証明書を適用してみたので、その手順を記事に起こしてみました。
記事は前編と後編に分かれており、前編はECS上に構築したWebアプリケーションへのSSL証明書の適用方法です。Alibaba Cloudを最近触り始めた方などの参考になると幸いです。
本記事では、Alibaba CloudのCertificate Management Serviceを利用したSSL証明書の発行と、発行したSSL証明書をECSに適用する方法を紹介します。Certificate Management Serviceは、証明書の発行と管理のためにAlibaba Cloudが提供するプラットフォームです。
まずは、紹介する手順の前提条件と事前準備した内容について触れます。また、本記事で紹介する各手順についてもここで簡単に補足説明をしていきます。
SSL証明書はDV証明書(ドメイン認証型SSL証明書)を利用します。
今回使用するドメインはAlibaba Cloud DNSに登録済みです。Alibaba Cloud DNSにドメインを登録する方法は 公式ドキュメント Register a generic domain name の資料を参照ください。
※本記事では紹介しませんが、Certificate Management ServiceはAlibaba Cloud DNSで管理されていないドメインでもAlibaba Cloudのプロダクトに証明書を適用可能です。
本記事で紹介する手順を解説するにあたり、簡易的なWebアプリケーションを用意しました。WebアプリケーションにはApache httpdを使用して、以下の仕様でECS上に構築しました。
構築したWebアプリケーションに向けて、ブラウザから’http://<DNSサーバに登録したドメイン>’にアクセスするとhttp通信のため、ブラウザ上で警告が表示されます。
ここからは手順の補足説明です。
手順1は、Alibaba CloudのプロダクトにSSL証明書を適用するため、Certificate Management Service上にSSL証明書を準備する手順を紹介します。
Certificate Management Service上にSSL証明書を準備する手順は2通りあります。
手順はそれぞれ異なりますが、各方法の大まかな手順は以下の通りです。
本記事では、これら2通りの方法を紹介していきます。
手順2のゴールとして、事前準備したWebアプリケーションにSSL証明書を適用して、https通信が行えることを確認します。
その為に、Certificate Management Serviceのコンソール画面を操作してSSL証明書を適用する方法を紹介しますが、手順についてはAlibaba Cloudのドキュメントにも記載がありますので Deploy a certificate to a simple application server or an ECS instance of Alibaba Cloud もご参考頂けると幸いです。
本記事で構築する環境のイメージは以下の通りです。
それでは、実際の手順の説明に移ります。
Alibaba CloudのプロダクトにSSL証明書を適用するための準備として、2通りの方法を紹介します。
本手順は、Alibaba Cloudで購入したSSL証明書を利用する方法です。
Certificate Management Serviceのコンソール画面に移動して、リージョンを「Outside Chinese Mainland」に選択して、左側のメニュー一覧から「SSL Certificate Management」を押下した後、「Official Certificate」を押下して「Buy Now」を押下すると、SSL証明書の購入画面に遷移します。
SSL証明書を購入後に、実際にSSL証明書を発行する申請を行いますので、ここで行うSSL証明書の購入は、バウチャーを購入しているとイメージ頂くのが良いと思います。
購入するSSL証明書の仕様を選択していきます。
Alibaba Cloudで購入できるSSL証明書は、証明書のブランドや証明書タイプなど、組み合わせられるSSL証明書の仕様が決まっています。ご自身でSSL証明書を購入される場合、購入できるSSL証明書の仕様の組み合わせが紹介されていますので、ご参考頂き、SSL証明書の仕様をご検討の上、購入ください。
本手順では、以下の仕様でSSL証明書を購入します。
利用規約の同意をチェックして、「Buy Now」を押下するとSSL証明書の購入は完了です。
続いて、SSL証明書の発行申請の手順です。
SSL証明書の購入が完了すると、’Official Certificate’の一覧に購入したSSL証明書が表示されます。購入直後、SSL証明書のステータスは’Pending Application’です。
購入したSSL証明書で「Apply for Certification」を押下します。
※以下のイメージは上記の手順で購入した証明書ではないですが、手順は変わりません。
申請書申請に必要な情報は、DV、OV、EV証明書の内、どの申請を行うかに依っても異なります。証明書毎に必要な情報は Required information for certificate application の資料をご参考ください。
本記事では、DV証明書を使用しますので、以下の通り必要な情報を入力していきます。
バインドするドメインがAlibaba Cloud DNSで管理されているドメイン名の場合、ドメインの検証方法は ‘Automatic DNS Verification’ が選択されます。’Automatic DNS Verification’が選択されると、ドメイン検証に必要な、DNSへのレコード登録などの処理をAlibaba Cloudが行ってくれます。
また、’CSR Generation’は、’Automatic’が推奨されており、選択するとAlibaba Cloudで作成されたCSRを使用して証明書の申請がされます。
証明書申請に必要な情報を入力し終えたら、「Submit」を押下します。
SSL証明書の申請書申請が承認され、’Official Certificate’の一覧に表示されるSSL証明書のステータスが’Issued’に変わるとSSL証明書の準備は完了です。
本手順は、外部( Let’s Encrypt )で発行したSSL証明書を利用する方法の紹介です。
Let’s Encryptは非営利団体の Internet Security Research Group (ISRG) が提供する認証局です。証明書の発行手続きが自動化されており、無料、かつ短期間でSSL証明書を発行することが出来ます。詳細はLet’s Encryptの公式ドキュメントをご参考ください。
Let’s EncryptでSSL証明書を発行するためCertbotというツールを利用します。
Certbotを使用する環境はどこでも大丈夫ですが、今回は事前準備で構築したECSにインストールをしました。
以下のコマンドをECSのコンソール上で実行します。
yum install epel-release
yum install certbot python-certbot-apache
certbotをインストールできたら、以下のコマンドを実行してSSL証明書を発行したいと思います。指定するオプションの説明は以下の通りです。
certbot certonly --webroot -w /var/www/html/ -d yotsuyaku.world --email test@gmail.com
コマンドを実行すると、対話形式でSSL証明書の発行に必要な情報を対話形式で入力していくことになります。
以下の通り回答していきます。
Let’s Encryptの規約に同意するか否か聞かれてます。問題なければ’Y’を入力します。
EFE(Electronic Frontier Foundation)にメールアドレスを共有するか否か聞かれています。
同意するとEFEからのお知らせを受信することが可能です。今回は’N’を選びます。
SSL証明書が無事に発行されると以下の画面が表示されます。
発行された証明書は/etc/letsencrypt/live/<指定したドメイン>/の配下に格納されます。
続いて、発行したSSL証明書をCertificate Management Serviceにアップロードする方法に移ります。
Certificate Management Serviceのコンソール画面に移動して、リージョンを「Outside Chinese Mainland」に選択して、左側のメニュー一覧から「SSL Certificate Management」を押下した後、「Upload Certificate」を押下すると、SSL証明書をアップロードする画面に遷移します。
本記事では上から順にアップロードするSSL証明書の情報を以下の通り入力しました。
証明書アルゴリズムは‘Internationally Accepted Algorithm’と‘SM2 Algorithm’を選択可能で、Let’s Encryptで発行した証明書の場合は前者を指定します。それぞれのアルゴリズムの説明は What are the differences between the RSA and ECC encryption algorithms? をご参考ください。
各証明書については、手動と直接ファイルをアップロードする方法がありますが、今回はLet’s Encryptで発行した証明書の中身をコピー&ペーストしたので、’Manual’を選択しています。
全ての項目の入力が完了したら「OK」を押下します。
正常にアップロードが完了すると、アップロードした証明書の一覧にSSL証明書が反映されます。
ECS上に構築したWebアプリケーションがhttps通信を行う為に、以下の手順を実行していきます。
まずは、https通信を行うためにmod_sslというモジュールをインストールして、https通信を行う際に使用するSSL証明書の配置場所を設定ファイルに記載します。今回は以下の通り設定をしました。
[/etc/httpd/conf.d/ssl.conf]
・・・
SSLCertificateFile /etc/httpd/conf.d/cert/certification.crt
SSLCertificateKeyFile /etc/httpd/conf.d/cert/certification.key
SSLCertificateChainFile /etc/httpd/conf.d/cert/certification-chain.crt
・・・
ここで設定するパスはCertificate Management Serviceのコンソール上でECSに証明書を適用する際に必要となる情報なので、控えておくようにします。
次にCertificate Management Serviceのコンソール上からECSにSSL証明書をデプロイしていきます。
Certificate Management Serviceのコンソール画面に移動して、リージョンを「Outside Chinese Mainland」に選択して、左側のメニュー一覧から「Deployment to Cloud Servers」を押下した後、「Create Task」を押下すると、ECS上のディレクトリにSSL証明書を配置するためのタスクの作成画面に遷移します。
タスクの作成画面に遷移したら、次の手順に沿って情報を入力していきます。
まずは、タスク名を入力します。今回は、’certification-deploy-test-ECS’というタスク名を付けます。タスク名を入力したら、「Next」を押下します。
ECSのディレクトリ上に配置する証明書を選択します。
Alibaba CloudにアップロードしたSSL証明書を配置する際は、「Upload Certificate」を押下して、デプロイする証明書を選択して、「Next」を押下します。
一方、Alibaba Cloud上で発行したSSL証明書をデプロイする場合は「Paid Certificate」を押下して、デプロイする証明書を選択して「Next」を押下します。
次に、SSL証明書を適用するECSを選択します。
’Resources by Cloud’で「ECS」を選択すると、画面中央にデプロイ可能なECSの一覧が表示されます。
SSL証明書をデプロイしたいECSが一覧に表示されていない場合は、NGINXやTomcatなどのWebアプリケーションがECSにデプロイされていることをご確認ください。一覧に表示されているECSはAlibaba Cloud内でWebアプリケーションがデプロイされているECSを自動識別して、一覧に表示しているためです。
デプロイする対象のECSを見つけたらチェックボックスにチェックを入れて、「Next」を押下します。
次にECS上にSSL証明書をデプロイするパスを設定します。
前述の手順でECS上の’/etc/httpd/conf.d/ssl.conf’に設定したSSL証明書のパスを設定します。
以下の通り、SSL証明書をデプロイするパスを設定したら、「OK」を押下します。
以下のようなポップアップが表示されたら、記載内容を確認のうえ、OKを押下します。
正常にECSへSSL証明書が出来ていれば、’Task Status’が 'Deployed’となります。
※以下の画像は日本語表記ですが、英語版と内容は変わりません。
以上で、ECSにSSL証明書を適用する手順は完了です。
タスクが正常に完了すると今回の場合、以下の通りECS上に証明書が配置されます。
無事、ECS上にSSL証明書がデプロイされていることが確認出来ました。
ECSのAppach httpdを再起動して、早速、ECS上のWebアプリケーションにhttps通信が行えるか試してみます。
ブラウザ上で’https://<DNSサーバに登録したドメイン>’にアクセスした結果が以下の通りです。
表示されましたね!
https通信のため、http通信の時に表示されていた警告は表示されていません。
本記事では、SSL証明書を作成し、Alibaba CloudのCertificate Management Serviceを利用して、ECSにSSL証明書を適用する方法を紹介しました。
別の記事では、Certificate Management Serviceを利用して、WAF3.0にSSL証明書を適用する手順を紹介したいと思います。
以上、Alibaba CloudでSSL証明書を導入されようとしている方の一助になれば幸いです!
Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。
MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。
条件に該当するページがございません