1,はじめに
自宅サーバを建てたいのです。
しかし、暗号化通信(https)が使えないのは流石にまずいかなと思い、
だったら無料で使える証明書を使ってみようではないか!
インフラとか全くやったこと無いけれど、とりあえずすべてセットアップしてみてやるぞ!
さあ、Let's Encrypt!!
2,Let's Encryptとは
Let's Encrypt は、認証局( CA )として「SSL/TLSサーバ証明書」を無料で発行するとともに、証明書の発行・インストール・更新のプロセスを自動化することにより、TLS や HTTPS(TLSプロトコルによって提供されるセキュアな接続の上でのHTTP通信)を普及させることを目的としているプロジェクトです。
≫Let's Encrypt 総合ポータルより引用
なんか無料でhttps通信をさせてくれるらしい(ここ重要
使い方は、Let's Encrypt の使い方を見ればわかりますが、まあ、これを見ながら操作してみます。
3,とりあえずインストールしてみる
兎にも角にもやってみましょう。
Homebrewを使いますので、インストールしておいてください。
な~に、簡単です。
ターミナルに、
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
を貼っつけるだけですよ。
3−1,gitコマンドを使えるようにする
とりあえず、gitを入れましょう。
$ brew install git
3−2,Certbotをダウンロード
Certbotって、証明書を自動取得&自動更新してくれるロボット君のようですね。
$ git clone https://github.com/certbot/certbot
いろいろうだうだ出てきた後に、ls
コマンドを叩くと、certbotというフォルダが出現していることがわかります。
3−3,Certbotを起動してみる
とりあえず、Certbotのフォルダに移動します。
$ cd Certbot
そして起動コマンドを叩きます。
$ ./certbot-auto
忠告が出ました。
警告:Mac OS Xのサポートが現時点では非常に実験的なものです...
あなたはそれを改善する上で動作するように希望の場合は、バックアップを持っていることを確認してください。
そしてその後、--debugフラグで再びこのスクリプトを実行します!
(Google翻訳より)
まあ、とりあえずやってみますか。
$ ./certbot-auto --debug
Homebrewを使っていろいろダウンロードが始まりました。
うまくいくと、次のような画面が出ます。
Noを選択しろとのことなので、Noを選択します。
…………エラーが出ました。
3−4,とりあえず、証明書を取得
証明書を取得したいURLを登録します。
サーバを立ち上げてない人は
- 【WindowsでApache】XAMPPでWindowsマシンにWebサーバ環境をメッチャ簡単に構築してみる
- Yosemite(MacOS:10.10.X)やEl capitanでApacheを使えるようにしてみる
を読んでみるといいかも。
後、URLをサーバに割り当てたい人は、NO-IPとか使ってみるといいかも。
さあ、証明書を発行します。
./certbot-auto certonly --standalone -d example.jp(URL)
↓万が一鍵の紛失などをした時の救出用メールアドレスの入力。
↓利用規約の同意
↓Apache起動しっぱなしだからエラー出た…
でも、鍵は取得できたっぽいですね!
とりあえず、Apacheを停止します。
$ sudo apachectl stop
で、再度、
./certbot-auto certonly --standalone -d example.jp(URL)
すると、うまくいったっぽいですね!
2016年11月22日に証明書が失効するらしいので、それを自動更新するには
sudo ./certbot-auto renew
を実行しろとのこと。
まあ、とりあえずapacheを起動します。
sudo apachectl start
4,apacheに証明書を適応する
今度は、Apacheに対して証明書を適応させます。
4−1,httpd.confをいじる
とりあえず恒例のhttpd.confをいじります。
$ sudo vi /private/etc/apache2/httpd.conf
#Include /private/etc/apache2/extra/httpd-ssl.conf
の「#」を消しましょう。
同様に
#LoadModule ssl_module libexec/apache2/mod_ssl.so
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
も「#」を消します。
4−2,Apacheに証明書を読みこませる準備
次に、Let's Encryptで発行した証明書をApacheが参照できるところに移動します。
とりあえず、/etc/apache2/
辺り?
$ sudo cp /etc/letsencrypt/live/ドメイン名/cert.pem /etc/apache2/
$ sudo cp /etc/letsencrypt/live/ドメイン名/privkey.pem /etc/apache2/
$ sudo cp /etc/letsencrypt/live/ドメイン名/chain.pem /etc/apache2/
4−3,Apacheに証明書を読みこませる
4−2で移動させた証明書をApacheに認識させます。
$ sudo vim /private/etc/apache2/extra/httpd-ssl.conf
↓ 以下のデータを追加
SSLCertificateFile "/etc/apache2/cert.pem"
SSLCertificateKeyFile "/etc/apache2/privkey.pem"
SSLCertificateChainFile "/etc/apache2/chain.pem"
↓ Apacheの再起動とエラーチェック
$ sudo apachectl restart
$ apachectl -t
#Syntax OK
じゃあ、早速https://にアクセスしてみますか。
https://ドメイン名
うまくいきました!
5,表示するフォルダを変えてみる
DocumentRootを変えてみましょう。
It works!だけじゃ面白く無いですからね!!
$ sudo vim /etc/apache2/extra/httpd-ssl.conf
の、124行目付近の
DocumentRoot
の値を書き換えましょう。
例:DocumentRoot "/Users/ユーザ名/Sites/"
次はその下に有ると思われる、ServerName
ですね。
No-IPなどのアドレスを指定します。
例:ServerName hogehoge.zapto.org
最後に、ディレクションをしましょう。
<Directory /Users/ユーザ名/フォルダ名/>
Require all granted
</Directory>
こんなもんですかね?
後は必要に応じて適当に設定してください。
これで完成です!