LoginSignup
12
7

More than 5 years have passed since last update.

MacOSⅩにLet's Encryptを入れてみて、Apacheの設定までしてみる

Last updated at Posted at 2016-08-27

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を使いますので、インストールしておいてください。
な~に、簡単です。
ターミナルに、

terminal
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

を貼っつけるだけですよ。

3−1,gitコマンドを使えるようにする

とりあえず、gitを入れましょう。

terminal
$ brew install git

スクリーンショット 2016-08-24 18.10.37.png

3−2,Certbotをダウンロード

Certbotって、証明書を自動取得&自動更新してくれるロボット君のようですね。

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

いろいろうだうだ出てきた後に、lsコマンドを叩くと、certbotというフォルダが出現していることがわかります。

3−3,Certbotを起動してみる

とりあえず、Certbotのフォルダに移動します。

terminal
$ cd Certbot

そして起動コマンドを叩きます。

terminal
$ ./certbot-auto

スクリーンショット 2016-08-24 18.19.54.png

忠告が出ました。

警告:Mac OS Xのサポートが現時点では非常に実験的なものです...
あなたはそれを改善する上で動作するように希望の場合は、バックアップを持っていることを確認してください。
そしてその後、--debugフラグで再びこのスクリプトを実行します!
(Google翻訳より)

まあ、とりあえずやってみますか。

terminal
$ ./certbot-auto --debug

Homebrewを使っていろいろダウンロードが始まりました。

スクリーンショット 2016-08-24 18.21.48.png

うまくいくと、次のような画面が出ます。

スクリーンショット 2016-08-24 18.26.09.png

Noを選択しろとのことなので、Noを選択します。

…………エラーが出ました。

3−4,とりあえず、証明書を取得

証明書を取得したいURLを登録します。

サーバを立ち上げてない人は

を読んでみるといいかも。

後、URLをサーバに割り当てたい人は、NO-IPとか使ってみるといいかも。

さあ、証明書を発行します。

terminal
./certbot-auto certonly --standalone -d example.jp(URL)

スクリーンショット 2016-08-24 18.49.39.png

↓万が一鍵の紛失などをした時の救出用メールアドレスの入力。

スクリーンショット 2016-08-24 18.50.13.png

↓利用規約の同意

スクリーンショット 2016-08-24 18.50.43.png

↓Apache起動しっぱなしだからエラー出た…

スクリーンショット 2016-08-24 18.51.03.png

でも、鍵は取得できたっぽいですね!
とりあえず、Apacheを停止します。

terminal
$ sudo apachectl stop

で、再度、

terminal
./certbot-auto certonly --standalone -d example.jp(URL)

すると、うまくいったっぽいですね!

スクリーンショット 2016-08-24 19.12.38.png

2016年11月22日に証明書が失効するらしいので、それを自動更新するには

terminal
sudo ./certbot-auto renew

を実行しろとのこと。

まあ、とりあえずapacheを起動します。

terminal
sudo apachectl start

4,apacheに証明書を適応する

今度は、Apacheに対して証明書を適応させます。

4−1,httpd.confをいじる

とりあえず恒例のhttpd.confをいじります。

terminal
$ sudo vi /private/etc/apache2/httpd.conf

#Include /private/etc/apache2/extra/httpd-ssl.conf
の「#」を消しましょう。

スクリーンショット 2016-08-24 19.22.35.png

同様に
#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/辺り?

terminal
$ 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に認識させます。

terminal
$ sudo vim /private/etc/apache2/extra/httpd-ssl.conf

↓ 以下のデータを追加

httpd-ssl.conf
SSLCertificateFile "/etc/apache2/cert.pem"
SSLCertificateKeyFile "/etc/apache2/privkey.pem"
SSLCertificateChainFile "/etc/apache2/chain.pem"

↓ Apacheの再起動とエラーチェック

terminal
$ sudo apachectl restart
$ apachectl -t
#Syntax OK

スクリーンショット 2016-08-27 17.12.56.png

じゃあ、早速https://にアクセスしてみますか。
https://ドメイン名

スクリーンショット 2016-08-27 17.15.15.png

うまくいきました!

5,表示するフォルダを変えてみる

DocumentRootを変えてみましょう。
It works!だけじゃ面白く無いですからね!!

terminal
$ 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>

こんなもんですかね?
後は必要に応じて適当に設定してください。

6955eae9-dbac-0c13-ac19-62a48b5e5d03.png

これで完成です!

6,参考文献

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7