SSL証明書取得からSNIによるドメイン設定まで

サーバを借りているvalue-domainがSNIに対応した事で,ドメイン毎のSSL認証が安価にしかも簡単に出来ると知り,value-domainが提供するAlphaSSLの証明書を考えたのですが,もっと良い方法が見付かりました.

Let’s Encryptで無料のSSL証明書を発行して貰って,それをvalue-domainのSSL設定画面からインストールすると言う方法です.SSL証明書については次のサイトが判り易いです→SSL/TLSってなんだろう?

Let’s Encryptで無料のSSL証明書を取得する方法には,UNIX環境が必要でしたが,現在ではWindowsからも行えます(letsencrypt-win-simple)し,もっと簡単なWeb経由の方法があるようです.

今回は,誰にでも簡単に出来る方法をと言う趣旨で,最後のWeb経由で取得する方法に挑戦しました.

Let’s EncryptからSSL証明書を取得してくれるWebサイトがいくつか立ち上がっているのですが,今回はZeroSSLにお世話になる事に.

まず,ZeroSSLのサイト(Zero:SSL Free SSL)へ行って,[ONLINE TOOLS]-[START]でこんな画面が現れるので,必要事項を登録.

Emailはオプションと書いていますが,更新時期になるとメールが届くらしいので,「連絡の取れる」アドレスを入力し,(当たり前ですが)取得済のドメイン名を入力します.

下部のラジオボタンは[HTTP verification]を選択し,チェックボックスは両方([Accept ZeroSSL TOS], [Accept Let’s Encrypt SA(pdf)])にチェックを入れました.

ここで,

  • DNSを自ら管理している場合は[DNS verification]を選択
  • [Accept ZeroSSL TOS]とは「ZeroSSLの利用規約に同意する」と言う意味
  • [Accept Let’s Encrypt SA(pdf)]とは「Let’s Encryptの利用規約に同意する」と言う意味

TOS : Terms Of Service,SA : Subscriber Agreement

value-domainではサブドメインを複数設定しているので,このときに入力するドメインを何にすれば良いのか悩みましたが,この時点では当ブログのドメイン名:ngc1952.netを設定し,[NEXT].

ここで[Include www-prefixed version too?]と聞かれるので[No]を選択するのですが,coresererの設定画面によると,

となっているので,こう言う設定がお勧めなのかも知れません.当サイトのアドレスは,www.ngc1952.net を ngc1952.net に転送しているので,不要と判断.

サブドメインを設定している場合などは,個々にSSL証明書を取得する事になるのだと思います.

Generating CSR と表示された後,CSRが発行されますので,ダウンロード用アイコンをクリックするか,コピー用アイコンでクリップボードにコピーして保存します.このとき,管理するドメインが複数有る場合は,判りやすい名称に変えておく事をお勧めします.後々の更新作業に使用しますので.

Generating account key

こちらも,適当な名称で保存しておきます.この鍵(アカウントキー)は,ZeroSSL専用の個人特定用ですので,大切に保管しておきます.他のドメイン用にSSL証明書を入手する際に管理しやすくなります.

更に[NEXT]で次に進むと,[Verification]の画面に移り,ちょっとややこしい事が書かれています.こういう事らしいです.

  • webrootに[.well-known/acme-challenge]と言うディレクトリを作成
  • File:以下のファイル名でファイルを作成し
  • そのファイルにはText:以下の内容を書き込んで
  • 先のディレクトリに保存しなさい

File: 以下のファイル名をクリックすると,ちゃんと目的のディレクトリにあるファイルの内容が表示されるか,確認しておくといいと書いてあります.

次回からの更新作業では,このファイルを書き換える事になります.それまでは消さないでおきます.

最後にもう一度[NEXT]で先に進むと,

Your certificate is ready! ・・・ 直後の文章中にYour account IDが表示されているので,保存.

と言う画面が現れて,いよいよフィナーレです.

domain-crt と domain-key を保存しておきます.

なお,domain-crt の前半がドメイン証明書,後半が発行者の証明書と言う事らしいです.

いよいよここから,valure-domain側での作業になります.[SSL証明書のインポート]画面に移って,

  1. コモンネーム(ドメイン名)に対象となるドメイン名を入力
  2. 【証明書(SSLCertificateFile)】に domain certificate の中身全てを貼付
  3. 【中間証明書(SSLCACertificateFile)】に domain certificate の後半のみを貼付
  4. domain key の中身を,【プライベートキー[パスフレーズ無し]】に貼付

[インポート]をクリックして,再度確認のメッセージに続いて,問題なければインストールが完了します.

[SSL証明書の管理・延長]画面に遷移しますので,ちゃんと登録されたか確認出来ます.[確認]ボタンを押せば,先程の登録内容が表示されます.

xreaやcoreserverのドメインウェブ画面で,ドメイン設定を変更します.[Main]の blank はそのままにして,[SSL用ドメイン(IP:*.*.*.*)情報入力]以降にSSL証明書を入手したドメインを移動させたら,[ドメイン設定]を押して反映させます.5分から15分ぐらい掛かるそうです.

ドメインウェブの[SSL設定]へ進むと,先程設定したドメインが選択できるようになっています.

私の場合は,ドメイン設定で www 付を www 無しに転送する設定にしているせいか,ZeroSSLでは「www付は対象外」としたにもかかわらず,ここではどちらも選択可能となっていました.まぁ,とにかく ngc1952.net を選択.

??? おかしい ・・・ いつまで経っても反映されない!

結局,先程の[SSL設定]から【証明書設定】へ進んで,もう一度「プライベートキー」,「証明書」,「中間証明書」を設定し,更にもう一度【ドメイン設定】してやっと,有効となりました.

この辺のところは,「他の管理サイト」で試したところ,最後の手順だけで良さそうです.つまり,最初の【SSL証明書のインポート】作業は不要と言う事に・・・

実は,この【SSL証明書のインポート】では,value-domainの管理画面に反映されるだけで,value-domainから購入したSSL証明書の維持管理を行うために行うと考えた方が良さそうです.ですから,value-domain以外から持ち込む場合は,管理画面に表示はされますが,更新処理等は行えません.メモですね.

また,ここでインポートした証明書は「現在の所、こちらでインポートされた場合も、サーバー側で自動ではインストールされません。(紐付け、自動インストールに今後対応予定です)」とのことですので,結局先程の[ドメインウェヴ]-[SSL設定]から対象のドメインを選択して,[証明書設定](紐付け作業)を行う必要があります.

もう一度整理しなおすと,

  1. Let’s EncryptからSSL証明書を取得する
  2. value-domain側で,[ドメインウェヴ]から[SSL用ドメイン情報入力]へドメインを移動する
  3. [ドメインウェヴ]-[SSL設定]からSSL証明書を以下の様に紐付けする
  4. 【証明書(SSLCertificateFile)】に domain certificate [domain-crt.txt]の中身全てを貼付
  5. 【中間証明書(SSLCACertificateFile)】に domain certificate の後半のみを貼付
  6. domain key の中身を,【プライベートキー[パスフレーズ無し]】に貼付

ちなみに,下図を例にすると,DST Root CA X3がブラウザに最初からインストールされている[ルート証明書],そして今回入手した二つの証明書で,Let’s Encrypt Authority X3が[中間証明書],ngc1952.netが[ドメイン認証SSLサーバ証明書]になります.それぞれの名称が「認証局」となります.

ここで,私も経験したことですが,アンチウィルスソフトのavast!をインストールしていると,いきなり「avast! Web/Mail Shield Root」がルート認証局に設定されてしまいます.avast!のデフォルト設定のようですので,同ソフトの[設定]-[コンポーネント]-[ウェブシールド]から[カスタマイズ]を選んで,「HTTPSスキャンを有効にする」のチェックを外せば,正しくルート認証局,中間認証局を認識してくれます.

今後の更新作業では,account key(共通),domain-CSR(ドメイン毎),domain-KEY(ドメイン毎)が必用となります.この作業で,サーバ側のディレクトリ,[webroot/.well-known/acme-challenge]のファイルを書き換えることになります.

そして改めて,domain-CRTファイルを入手し,サーバ側の紐付けも更新します.

ただ,この「他の管理サイト」はxoopsで構築しており,これがまた厄介でした.その話はまた何れ・・・