OSX ServerのSSL証明書はServer.appからGUIで設定するようになっているので、cert-bot-autoコマンドで手動作成して手作業で適用してみた。実際にはhttpd.confとか辿って実ファイルの場所を調べ、certbot-autoが書き出す証明書からシンボリックリンクを貼るとかすればcron更新とかも可能かも知れない。有効期間が3ヶ月しかないので、そのうち自動化を考える。
準備はこちらを参考にさせてもらった。まずコマンドツールのインストール。
$ git clone https://github.com/certbot/certbot
今回はadminのホームに作成。そのディレクトリに入って初回起動。
cd certbot
sudo ./certbot-auto
home-brewで必要なツールがドバドバとインストールされる。ちょっと後悔。サーバー機以外でやればよかった...
終わったら、
./certbot-auto certonly -manual -d hogehoge.com --debug
で証明書取得。(Macは不安定なので--debugオプションつけろよって言われた)
上記ページと違ってるのは、自分でサイト所有証明のダミーファイルを置かなくても、ツールの画面上でWebルートフォルダを指定すれば全部自動でやってくれるようになってた点。
更新時の出力メッセージをコピペしとく。
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/hogehgoe.com/fullchain.pem. Your cert will
expire on 2016-12-21. 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"
つまり次回は単に
./certbot-auto
でよさげ?
で、/etc/letsencrypt/live/hogehgoe.com/は不可視フォルダらしくadminでも直接入れなくて面倒なので、中のフォルダを適当なところにコピー。4つのファイルができるうち、2つあれば足りる模様。ワイルドカードも使えないので、fullchain.pem(中間証明書と公開鍵のパック)、privkey.pem(暗号鍵)をひとつずつcpした。
で、.pemファイルはダブルクリックするとKeyChain.appに自動で登録されるけど、それをしてはダメで、Server.appで「証明書」画面を開き、「+」ボタンから「証明書識別情報を読み込む...」を選択。こんな画面が出るので、まずprivkey.pemをドロップすると秘密鍵欄が埋まる。次にfullchain.pemもドロップすると下の2つの欄が埋まり「読み込む」ボタンが押せるようになる。
この状態で、今度は「Webサイト」などの設定画面にいけば、証明書一覧のところで選べるはず。SSL設定を追加する場合は「+」から。SSL証明書を指定するとポートが443になる。あとは既存サイトと同じ設定にする。80と443でエントリが2つできて、アクセス制限とかの細々とした設定を二重に管理しなければなないのはどうにかならんもんですかね...
更新が上手くいくか、自動更新の道があるかは12月に検証します。
2016.12.14追記:
失効一週間前の警告メールが来たので更新にチャレンジ。時間がないのでとりあえず今回も手動でやってみました。
certbotのインストールディレクトリに潜って、certbot-autoを実行ではApacheの設定を変更できなかったらしくエラーに。なので、結局初回と同様に
cd certbot/
./certbot-auto certonly -manual -d hogehoge.com --debug
として証明書作成のみを行いました。webrootフォルダの指定に失敗したんですが、普通に/etc/letencrypt/live/hogehoge.com/fullchain.pem
に書き出されました。暗号鍵(privkey.pem)も書き換わってるっぽいので、また一緒にコピーして、GUIで再登録。