無料SSL/TLSの「Let’s Encrypt」を「VALUE SERVER」等のSNIで導入する方法

 これまでの SSL ( HTTPS ) は信頼できる証明書発行会社(認証局)から証明書を購入した企業が利用する事が一般的で、個人のウェブサイトでの導入はハードルの高いものでした。
 ところが時代は移り、Google が SSL の有無をランクの基準の一つにするなど多くのサイトにて暗号化が推奨されるようになりました。加えて一つの IP アドレスについて一つの証明書のみを運用できる SSL/TLS を拡張した、一つの IP アドレスで複数のドメイン名が設定できる SNI なる技術も登場しています。
 極め付けに、今月から Public Beta に移行した「 Let’s Encrypt 」を利用すれば個人が無料で自らのウェブサイトに SSL/TLS を導入し、サイト利用者の通信を暗号化する事が可能になります。
 今回はこのブログも利用しているレンタルサーバーの VALUE SERVER にて、 SNI を使って Let’s Encrypt を導入する方法をご紹介します。

LetsEncryptxhppynet

 Let’s Encrypt の日本語ポータルサイトによると、Let’s Encrypt で発行できるのは「ドメイン認証 ( DV ) SSL/TLS 証明書」のみ。「企業認証 ( OV ) SSL/TLS 証明書」や「 EV 認証 SSL/TLS 証明書」は取得できません。
 Let’s Encrypt にて証明書を発行する為には、Linux のアプリケーションが動作する、 root 権限にて操作を行えるコンピューターが必要です。専用サーバーや VPS などでは簡単に導入する事が出来ますが、root 権限にて操作できない VALUE SERVER のような共有のレンタルサーバーサービスでは導入までに手順を踏む必要があります。

 手順をご紹介する前に、前提として Linux (若しくは非推奨だが OS X )の動作するコンピューターが必要です。特にお持ちでない場合は仮想コンピューターに Linux をインストールさせる必要があります。代表的なものに CentOS や Ubuntu などがありインストールも簡単に行えます。 OS のインストール時に CUI と GUI を選択できる場合は GUI を含めたインストールをおすすめします。今回の記事では CentOS の GUI ( KDE )環境において root アカウントにログインしている状態を想定してご紹介しています。

 ちなみに、姉妹サイトの「x.hppy.net」は Let’s Encrypt にて TLS 化しました。試しにアクセスしてみてください。

手順
  1. 「端末」(又は「Terminal」、「Console」など)アプリケーションを起動します。 root アカウントにてログインしていない場合は su コマンドで root になります。
  2. まずは、 Let’s Encrypt のクライアントアプリケーションをダウンロードするため、「 Git 」をインストールする必要があります。CentOS の場合は下記のコマンドを入力します。
    yum install git
  3. 数分待ってインストールが完了したのち、Lrt’s Encrypt をダウンロードします。
    git clone https://github.com/letsencrypt/letsencrypt
  4. カレントディレクトリを移動させます。
    cd letsencrypt/
  5. まずはコマンドのオプションなどを確認してみましょう。すると、初回実行のため、依存するアプリケーションのインストールや更新が自動で開始されます。
    ./letsencrypt-auto --help auto
  6. 全てのコマンドは ./letsencrypt-auto に続いて入力します。今回は証明書発行のみの手動導入ですので、 certonly サブコマンドを利用します。また、ドメイン名の所有者であることを確認する手順において、静的なファイルを設置する方法しか利用できないので、 Manual プラグイン( --manual )も利用します。
    肝心の発行対象のドメイン名は -d に続けて指定します。さらに証明書の発行には利用可能なメールアドレスも必要です( --email に続けて指定)。
    ややこしいので今回は一つのドメインに対しての発行方法です。
  7. サンプルとして、下記のようなコマンドを入力することになります。入力後に [Enter] キーを押すと処理が開始されます。
    ./letsencrypt-auto certonly --manual -d ○○○.com --email △△△△@□□□.com
  8. しばらく待つとややグラフィカルな画面( TUI )になり、利用規約への同意を求められます。表示の URL にアクセスして規約を確認し、同意できる場合は「 <Agree> 」にカーソルを合わせて [Enter] キーを押します。続いて、IPアドレスが記録されることに同意(<Yes>)します。
  9. 続いて、「端末」(又は「Terminal」、「Console」など)アプリケーションを新しいウインドウで起動します。現在のウインドウは開いたままにして下さい。
    確認用のファイルを作成します。画面に表示されているコマンドをコピペ( Windows の GUI でのキーボードショートカットと異なりますのでマウスを使ってコピペすることをおすすめします)すると便利です。まずは下記このコマンドでフォルダを作成します。
    mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge
  10. 続いてカレントディレクトリを移動します。
    cd /tmp/letsencrypt/public_html
  11. ファイルを作成します。こちらのコマンドは初めのウインドウからコピペしてください。
    printf "%s" ●●● > .well-known/acme-challenge/■■■
  12. ファイルの作成が終了したら FTP で「 .well-known 」以下のフォルダとファイルをアップロードします。 GUI の CentOS なら、画面左下のアイコン→「 File Manager 」→左のカラムの「 Network 」→「 Add Network Folder 」から FTP に接続することで、 GUI でのアップロードが可能です。
    接続が完了したら、別ウインドウで /tmp/letsencrypt/public_html/.well-known ディレクトリに移動し、作成した「 .well-known 」フォルダを FTP 上の「 ○○○.com 」フォルダの直下にアップロードします。
  13. 初めの「端末」画面に戻り、「 Make sure your web server displays the following content at 」の後の URL にアクセスします。ファイルにアクセスできる事を確認後、 [Enter] キーを押します。
    「 Congratulations! 」と表示され証明書の取得が完了します。 /etc/letsencrypt/archive/○○○.com/ を開き、証明書を確認します。
  14. Web ブラウザ( Firefox など)で VALUE SERVER のコントロールパネルを開きます。こちらの手順 1 , 2 , 3 と 6 以降を参考にして設定を行います。「プライベートキー(必須)」欄には「 privkey1.pem 」ファイルの内容を、「発行された証明書(必須)」欄には「 cert1.pem 」ファイルの内容を、「発行された中間証明書(任意)」欄には「 chain1.pem 」ファイルの内容をコピペします。
    「上記プライベートキーのパスワード(必須)」には、先ほど FTP でアップロードした認証用のファイルのファイル名などを入力します。 Let’s Encrypt によって生成されたプライベートキー(秘密鍵)は暗号化されていないそうですので、適当な10文字程度の半角英数文字列でも設定できました。(参考:http://peace.2ch.net/test/read.cgi/hosting/1448874075/111)
  15. 「ドメインウェブの設定」ページに戻り、「ドメイン設定をする」ボタンをクリックしたら完了です。早速、貴サイトのURLの先頭を「https://」に変えてアクセスしてみましょう。

 

期限は90日

 Let’s Encrypt にて入手できる証明書の期限は発行から 90 日間です。 60 日程度が経過したら上記の手順を繰り返して新たな証明書を発行してもらい、期限を延長します。一般のサーバーではこの作業を自動化できますがレンタルサーバーでは不可能です。

おまけ

 ウェブサイト全体を TLS 化する場合は、 .htaccess でリダイレクトさせると便利です。http://d.hatena.ne.jp/mrgoofy33/20100914/1284414817 などを参考にしてみてください。
 ただし、 WordPress などの CMS を動作させている場合は、そちら自体の設定やプラグインを利用した方が不具合が生じずに済むかもしれません。

Post navigation


コメントを残す