Azure

Azure Application Gateway で Let’s Encrypt も使えます。Let’s Try !

はじめに

くどうです

4/12にLet’s EncryptがGAしました。
https://letsencrypt.org/2016/04/12/leaving-beta-new-sponsors.html

Let’s Encrypt は Azure Application Gateway でも利用可能です。
つまり無料で利用できる証明書をApplication Gatewayで使ってオフロードさせればいいじゃん!
AWSでいうELBと同じですね。少々面倒ですが・・・
ということで、一通りの手順を書いていきたいと思います。
手順はここを参考にしています。
https://azure.microsoft.com/ja-jp/documentation/articles/application-gateway-ssl-arm/

手順

以下の流れで進めていきます。
app01
出来上がるのは下の図
lts00

仮想ネットワークの作成

最初に仮想マシン、Application Gateway を作成する仮想ネットワークを作成します。
リソースグループ「appgw-rg」が作成され、仮想ネットワーク「appgwvnet(10.0.0.0/16)」とサブネット「subnet01(10.0.0.0/24)」「subnet02(10.0.1.0/24)」が出来上がります。
注意事項として、Application Gatewayと同じサブネットに仮想マシンは立てることができません。正確にはNICを設置することができませんでした。

仮想マシンの作成

仮想マシンは・・・ポータルから作った方が早いかも。
目的は、Let’s Encryptの証明書の発行およびsubnet02に配置しています。
IPアドレスは10.0.1.100にしています。

証明書の発行には443が開いている必要があります。セキュリティグループでルールを追加して作成します。
app02

事前にLet’s Encryptの証明書をpfx形式で作成する必要があります。
既に持っているは「Application Gatewayの作成」まですっとぱして下さい。

Let’s Encrypt の証明書を発行

Let’s Encryptの証明書を発行するには、サーバーにクライアントソフトをインストールする必要があります。
下記を参考に進めます。
https://letsencrypt.org/getting-started/

Let’s EncryptはサーバーとFQDNで443通信が行えることで発行されます。
そのため、DNSの設定を事前に行う必要があります。
仮想マシンのIPをFQDNでAレコードとしてDNSへ追加します(設定は利用しているDNSをご確認ください)。
今回はAzureで完結するためAzure DNSで設定しています。
app09

ここからが証明書の発行になります。
作成した仮想マシンにログインします。

必要なソフトをインストールします。

以下、注意が必要です。
CentOS6系だとうまくいきません。
Python2.7が必要となります。

Completeの後にエラーが出ます。

下記のコマンドでPython2.7をBashで利用できるようにします。

発行を行います。

このサーバーでCAを利用しないので standalone を選択します。
app03

Eメールアドレスを入力します。
app04

ACMEサーバーに登録することと、条項にAgreeするか。
app05

ドメインを登録します。
app06

完了するとファイルの場所などが表示されます。
app07

4つファイルがあることを確認します。
通常、/etc/letsencrypt/live/にファイルが作成されます。

pfx形式に変換します。

変換したファイルを作業しているPCへC:\tmp\agw.pfxとして保存します。
場所は任意です。その場合、Application Gatewayの作成時のパスも変更してください。

以上で、証明書の発行は完了です。

テストのためhttpdをインストールします。

Application Gatewayはindexを必要とします。
適当にindex.htmlを作成します。

以上でテスト環境は完了です。
次にApplication Gatewayの作成を行います。

Application Gatewayの作成

Application Gatewayを作成しています。
流れ的に
・Public IPを作成
・Application GateWayにPublic IPを設定
・バックエンドアドレスプールを作成→実際にHTTPサーバーが動作しているIPアドレスを記述(複数ある場合は”192.168.1.1″, “192.168.1.2”のように記述)
・バックエンドにポート、プロトコルを指定CookieBasedAffinity はEnabledにすることでクライアントからのセッションを同じ仮想マシンへ到達できるようにする
・フロントエンドのポートを指定
・証明書を設定(事前にLet’s Encryptのキーを作成する必要があります)
・証明書を読み込ませたリスナーを作成
・ルーティングを作成
・Sukを設定
・Application GateWayを作成

簡単でしょ?
作成まで、しばらく時間がかかります。
じっくり待ちます。

完了したらアクセスして確認してみましょう。

確認

最初にバックエンドのサーバーを確認してみます。
アクセスログを確認すると、Capacityを2に設定しているため、10.0.0.4と10.0.0.5の2台から確認されています。

対象のアドレスでSSLを確認すると、問題なくアクセスできることを確認します。
app08

以上ですべて完了です。

まとめ

Let’s Encrypt は Azure Application Gatewayで利用できることを書きました。
やっていることは、Application Gatewayに証明書を埋め込んでいるのと一緒ですが、
今後、Let’s EncryptをAzureで利用する機会も増えてくると思うので、発行方法など参考にして頂ければと思います。

無料っていいですね!ではでは

Related post

  1. Azure

    同サブスクリプションでVNET間接続を行う。ポータルでも設定できます。

    はじめにくどうです。VNET間接続、ポータルでもちゃんと設…

  2. Azure

    リソースのLockは大事です。ポータルからも設定できます。

    はじめにくどうです。以前、リソースのロックの話を書きました…

  3. Azure

    Azure Backup V2 !これで仮想マシンのバックアップは大丈夫。

    はじめにくどうですやっと、リソースマネージャーでも仮想マシ…

  4. Azure

    Azure Cloud Shell にインストールされているものを確認。vimも使えます。

    Azure PortalでCloud Shellが登場し、ブラウザのみ…

  5. AWS

    Azure仮想マシンがやってるポートフォワーディングをAWSのELBでやってみる。

    くどうです。小ネタです。Azureでは便利なことに仮想マシンを新…

  6. Azure

    Azure RemoteApp でローカルのドライブを利用する。

    はじめにくどうです。RemoteAppでもローカル(クライアント)…

Comment

  1. No comments yet.

  1. No trackbacks yet.

  1. Linux

    EC2インスタンス(一部)のbash脆弱性(CVE-2014-6721)アップデ…
  2. Windows

    ハードディスクの書き込みキャッシュを起動時にONにする
  3. AWS

    EC2のリソースIDが長くなります。
  4. 日記

    LOCAL DEVELOPER DAY ’13 / Infra & S…
  5. 未分類

    仮想化技術ってつかえるの?
PAGE TOP