Let’s encryptのSSL証明書をMacで作成!さくらレンタルサーバーに導入する方法

【更新:2016年7月28日】Let’s Encrypt クライアントがCertbot クライアントに変更されました。一部手順を更新しています。合わせて、証明書の手動更新(2回目以降)の手順も追記しています。

letsencript

無料でSSLサーバ証明書を作成できるサービス「Let’s encrypt」が2016年4月に正式公開されました。ホームページのhttps化が誰でもで無料でできるようになりました。おそらく近いうちに各サイトの全ページSSL化が当たり前になります。

さっそく私もMacで証明書を作成し、さくらインターネットのレンタルサーバーに導入しました。導入方法をシェアします。所要時間はすんなりいけば1時間くらいです。

スポンサーリンク

実行環境

  • Mac OS X Yosemite
  • さくらインターネットレンタルサーバー(スタンダード)
  • FTPソフトはFileZillaを使用

やることリスト

  • MacにCertbot クライアントをインストール
  • Certbot クライアントで証明書を作成
  • さくらレンタルサーバーでSSL設定

最初のふたつはターミナルで作業します。レンタルサーバーでの作業はブラウザで行います。

gitインストール確認

ここからしばらくターミナルで作業します。

certbotを使う前提として、gitがインストールされている必要があります。以下のコマンドを打ち、バージョンが返ってきたらインストール済みです。まだの場合、gitをインストールしてください。インストール方法は割愛します。

コマンド

$ git –version

実行結果

$ git version 2.4.9 (Apple Git-60)

certbotをインストールする

ダウンロード、インストールを実行します。

certbotをダウンロードする

以下のコマンドを実行します。

$ git clone https://github.com/certbot/certbot

以下のような表示が出たら成功です。

Cloning into ‘letsencrypt’…
remote: Counting objects: 34858, done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 34858 (delta 13), reused 0 (delta 0), pack-reused 34836
Receiving objects: 100% (34858/34858), 9.31 MiB | 2.13 MiB/s, done.
Resolving deltas: 100% (24761/24761), done.
Checking connectivity… done.

certbotをインストールする

以下のコマンドを実行します。

cd certbot
sudo ./certbot-auto

証明書を作成する

certbotで証明書を作成します。

  • コマンド実行
  • 青バックの端末画面操作
  • 途中でFTPソフトを使用してフォルダ作成、ファイル転送
  • コマンド続き実行

の流れです。

コマンド実行

以下のコマンドを実行します。-dの後に半角スペースで証明書を発行するドメイン名を指定します。

./certbot-auto certonly –manual -d webtatan.com

以下の出力のあと、端末画面が表示されます。

hecking for new version…
Requesting root privileges to run letsencrypt…
sudo /Users/username/.local/share/letsencrypt/bin/letsencrypt certonly –manual -d webtatan.com

端末画面操作

以下の内容を順に入力していきます。

  • ドメイン名入力
  • メールアドレスの入力
  • 同意の選択

キーボードで操作し、選択式のものはEnterキーを押してください。選択式のものはデフォルトのまま(Agree,Yes等)で大丈夫です。

encrypt01

encrypt02

encrypt03

端末の入力が終わったら、ターミナルに以下が出力されます。

Make sure your web server displays the following content at
http://webtatan.com/.well-known/acme-challenge/oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs before continuing:

oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs.ieFj3WBa83I34jle_lPjf393jFAJife-a;ieAbji4gj

If you don’t have HTTP server configured, you can run the following
command on the target server (as root):

mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge
cd /tmp/letsencrypt/public_html
printf “%s” oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs.ieFj3WBa83I34jle_lPjf393jFAJife-a;ieAbji4gj > .well-known/acme-challenge/oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs
# run only once per server:
$(command -v python2 || command -v python2.7 || command -v python2.6) -c \
“import BaseHTTPServer, SimpleHTTPServer; \
s = BaseHTTPServer.HTTPServer((”, 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
s.serve_forever()”
Press ENTER to continue

Enterキーはまだ押さないでください。

FTPソフトでファイル転送

先ほどのターミナルに作成するフォルダ、ファイル名が書かれています(太字の部分です)。長い文字列は環境により異なります。

作成するフォルダ

http://webtatan.com/.well-known/acme-challenge/

作成するファイル名

oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs

作成するファイルの中身

oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs.ieFj3WBa83I34jle_lPjf393jFAJife-a;ieAbji4gj

この通りになるように、サーバールートフォルダに .well-known/acme-challenge/フォルダを作成します。

  • .well-knownを作成し、その中に
  • acme-challengeを作成します。

作成したフォルダに上記のファイルの中身、ファイル名で作成し、作成したフォルダに転送します。

  • ファイル名:oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs
  • ファイル内容:oPjf4jilHLFJil;ay_KKFE3e4H;iejl45LfjilQs7Bs.ieFj3WBa83I34jle_lPjf393jFAJife-a;ieAbji4gj
  • 転送先:http://webtatan.com/.well-known/acme-challenge/

さくらインターネットの場合、home/ユーザー名/www/直下にフォルダを作成します。

なお、レンタルサーバーとssh接続ができる場合、FTPソフトを使わず、コマンド上で同じことをしても大丈夫です。私はFTPソフトの方が手軽なのでコマンドは使いませんでした。

コマンド続き実行

ファイルの転送ができたら、ターミナルに戻りEnterキーを押します。以下のように出力されましたら証明書作成完了です。

IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/webtatan.com/fullchain.pem. Your cert will
expire on 2016-10-24. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
“certbot-auto renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

証明書のコピー

作成した証明書は、”/private/etc/letsencrypt/archive/ドメイン名”に出力されます。privateは不可視フォルダで、次の工程で操作しにくいので別の場所にコピーすることをおすすめします。

Finderの移動−フォルダへ移動を選択し、/etc/letsencryptと入力して移動します。おそらくその中の各フォルダは通常ユーザーには権限がないため開けません。フォルダを右クリック−情報を見るから、権限を設定してください。

中には、

  • cert1.pem
  • chain1.pem
  • fullchain1.pem
  • privkey1.pem

の4ファイルがあります。末尾の1は、証明書を更新するたびにカウントアップしていくそうです。これらのファイルを任意のフォルダへコピーしておきます。

さくらインターネットでSSLを設定する

最後のステップです。ここでやることは以下のとおりです。

  • 証明書のインストール
  • 中間証明書のインストール
  • SSL利用設定をする

ブラウザでさくらレンタルサーバーのコントロールパネルにログインして作業を行います。

証明書のインストール

さくらレンタルサーバーコントロールパネルの、左メニューから「ドメイン設定」をクリックします。

encrypt04-min

ドメイン一覧で、設定する証明書のSSL証明書登録リンクをクリックします。

encrypt05-min

「秘密鍵を既にお持ちの場合には、アップロードをしてください。」の方で、証明書を選択します。証明書は先ほどコピーしたフォルダのprivkey1.pemです。

encrypt06-min

アップロードすると、以下の画面になります。

encrypt07-min

cert1.pemを開き、内容をすべて証明書のインストール欄にコピペします。最後の行が空行ではなくEND〜になるように注意してください。コピペできたら送信ボタンをクリックします。

—–BEGIN CERTIFICATE—–
(省略)
—–END CERTIFICATE—–

完了したら以下の画面になります。続けて中間証明書のインストールを行います。

encrypt8-min

中間証明書のインストール

先ほどの画面にて、中間証明書のインストールリンクをクリックします。以下の画面になるので、chain1.pemの中身をコピペします。証明書と同じくEND〜の行までコピペし、送信ボタンをクリックします。

encrypt09-min

完了したら以下の画面になります。

encrypt10-min

中間証明書のインストール完了画面で「ドメイン設定」をクリックして次に進みます。

SSL利用設定

以下の画面で、「4. SSLの利用をお選びください」を「SNI SSLを利用する」を選択し、画面下部の送信ボタンをクリックすると完了です。

encrypt11-min

以上で無事サイトがhttps化できました。httpsのURLでアクセスしてみてください。

SSL化がひととおり終わった後にやること

無事にサイトがhttpsで暗号化できたわけですが、サイトによってはさらに調整が必要です。例えば以下の内容があります。

  • HTML上の絶対パスを書き換え(http→https)
  • WordPress利用の場合、管理画面設定変更や投稿のアップロード画像パスの変更。
  • .htaccessの変更。

特に、さくらレンタルサーバーとWordPressの組み合わせの場合、HTML上のパスをhttpsにしてもhttpになってしまう場合があります。

上記について、記事を書きました。WordPressをhttps化する方法とさくらサーバーでの注意事項

証明書を手動で更新する

Let’s Encriptで作成した証明書は有効期限が3ヶ月と短いです。更新期限が来る前に更新しましょう。

手動更新手順

更新する際の手順は最初に証明書を作成した手順とほぼ同じです。コマンドも同じです。

以下のコマンドを実行します。

./certbot-auto certonly –manual -d webtatan.com

以下の画面が出てきた場合、Noを選択してください。

letsencrypt12

【2017/04/08更新】上記コマンドがうまくいかない場合、以下のコマンドを実行します。(certbotの仕様が変わりました)

sudo ./certbot-auto

ドメイン名を聞かれたら、証明書を発行するサイトのドメイン名を入力してください。証明書が作成されます。

あとはFTPソフトでファイル転送からの手順を実行してください。さくらレンタルサーバでの作業も同じです。登録が更新に変わるだけです。

ちなみに以下のコマンドは使えません。

./certbot-auto renew

2016-07-26 20:24:30,733:WARNING:certbot.renewal:Attempting to renew cert from
/etc/letsencrypt/renewal/webtatan.com.conf produced an unexpected error: The manual
plugin is not working; there may be problems with your existing configuration.
The error was: PluginError(‘Running manual mode non-interactively is not
supported’,). Skipping.

どうやら自動更新のときにしか使えないようです。

エラーが発生した場合

【更新:2016年7月28日】旧手順にてエラーが発生した際のことを備忘録で残しておきます。当時、Let’s Encryptクライアントインストール時にエラーが発生しました。Let’s Encryptをgitからダウンロードした後の手順です。

gitダウンロード後、コマンドを実行します。

$ cd letsencript
./letsencrypt-auto –help

すると、Mac環境は実験的なので”–debug”オプションを付けてと言われます。

WARNING: Mac OS X support is very experimental at present…
if you would like to work on improving it, please ensure you have backups
and then run this script again with the –debug flag!

指示にしたがい”–debug”オプションを付けて再度実行します。このコマンドで必要なパッケージが自動でインストールされ、エラーがなければヘルプコマンドが実行されます。

$ ./letsencrypt-auto –debug –help

Bootstrapping dependencies via Mac OS X…
No Homebrew/MacPorts; installing Homebrew…
==> This script will install:

(中略)
Installing collected packages: pip, wheel
Exception:
Traceback (most recent call last):
(中略)
OSError: [Errno 13] Permission denied:
‘/Library/Python/2.7/site-packages/pip’

私の環境では、pip,wheelのインストールでエラーが発生しました。

エラーが発生せず、以下のような表示がされた方は「証明書を作成する」へ進んでください。

(省略)
The Let’s Encrypt agent can obtain and install HTTPS/TLS/SSL certificates. By
default, it will attempt to use a webserver both for obtaining and installing
the cert. Major SUBCOMMANDS are:
(省略)

OSError: [Errno 13] Permission denied:の対応方法

権限がない場合に出るエラーのようです。一般ユーザーがダメなのかと思い、sudoにて以下コマンドを実行しました。

$ sudo ./letsencrypt-auto –debug –help

Password:
Bootstrapping dependencies via Mac OS X…
Using Homebrew to install dependencies…
Error: Cowardly refusing to ‘sudo brew install’
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at your own risk.

するとまた別のエラーが。user/localの所有権がsudoではないので実行できない模様。以下のコマンドで所有権を変更します。

sudo chown -R root /usr/local

コマンド実行後、結果は何も出力されません。

私はこのとき権限の問題と気づかなかったので、この時点でコマンドは実行していません。個別にpip,wheelのインストールを実行しました。

おそらくですが、このコマンド実行後、以下のコマンドを再度実行すれば、個別にインストールしなくてもいけるんじゃないかと思います。

$ sudo ./letsencrypt-auto –debug –help

pip,wheelの個別インストール

この手順は不要な方もいると思います。備忘録に。

以下のコマンドを実行します。

$ sudo easy_install pip

Searching for pip
Reading https://pypi.python.org/simple/pip/
Best match: pip 8.1.1
Downloading
(中略)
Installed /Library/Python/2.7/site-packages/pip-8.1.1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

インストールできました。続けて以下のコマンドを実行します。

sudo pip install wheel

(省略)
Collecting wheel
Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
100% |████████████████████████████████| 71kB 2.3MB/s
Installing collected packages: wheel
Successfully installed wheel-0.29.0

インストールできました。

再度、以下のコマンドを実行し、エラーなく終了すればテスト実行完了です。

sudo ./letsencrypt-auto –debug –help

エラーがなければ以下のようなヘルプコマンドが表示されます。

(省略)
The Let’s Encrypt agent can obtain and install HTTPS/TLS/SSL certificates. By
default, it will attempt to use a webserver both for obtaining and installing
the cert. Major SUBCOMMANDS are:
(省略)

参考サイト

Let’s Encrypt 総合ポータル
さくらレンタルサーバーのサイトを、Let’s EncryptでHTTPS化する方法(Mac El Capitan版)

スポンサーリンク

この記事が気に入っていただけたらシェアお願いします。励みになります。
prev WordPress初心者向け!使い方、はじめ方、勉強ガイド next WordPressをhttps化する方法とさくらサーバーでの注意事項

スポンサーリンク

Comment

  1. […] Let’s encryptのSSL証明書をMacで作成!さくらレンタルサーバーに導入する方法 […]

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です