Let's Encryptを試したログ

無料のSSL。
Debian で試す。


本家: https://letsencrypt.org/howitworks/
解説: http://www.websec-room.com/2015/12/04/2380


# Debian wheezy

rootで

```bash
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help
```

パッケージメモ

```
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libnet-daemon-perl libplrpc-perl
これを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
  augeas-lenses binutils cpp cpp-4.7 gcc-4.7 libc-bin libc-dev-bin libc6
  libc6-dev libexpat1 libexpat1-dev libffi5 libgmp10 libgomp1 libitm1 libmpc2
  libmpfr4 libpython2.7 libquadmath0 libssl1.0.0 linux-libc-dev
  python-pkg-resources python-setuptools python2.7-dev zlib1g-dev
提案パッケージ:
  augeas-doc binutils-doc cpp-doc gcc-4.7-locales gcc-multilib make
  manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc
  gcc-4.7-multilib libmudflap0-4.7-dev gcc-4.7-doc libgcc1-dbg libgomp1-dbg
  libitm1-dbg libquadmath0-dbg libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7
  binutils-gold augeas-tools glibc-doc python-distribute python-distribute-doc
推奨パッケージ:
  libssl-doc python-pip
以下のパッケージが新たにインストールされます:
  augeas-lenses binutils cpp cpp-4.7 dialog gcc gcc-4.7 libaugeas0
  libc-dev-bin libc6-dev libexpat1-dev libffi-dev libffi5 libgmp10 libgomp1
  libitm1 libmpc2 libmpfr4 libpython2.7 libquadmath0 libssl-dev linux-libc-dev
  python-dev python-pkg-resources python-setuptools python-virtualenv
  python2.7-dev zlib1g-dev
以下のパッケージはアップグレードされます:
  libc-bin libc6 libexpat1 libssl1.0.0
アップグレード: 4 個、新規インストール: 28 個、削除: 0 個、保留: 76 個。
```

C系とPython系の環境が勝手にインストールされる。
次のコマンド実行。


```bash
 ./letsencrypt-auto --apache
Updating letsencrypt and virtual environment dependencies.......
Running with virtualenv: /root/.local/share/letsencrypt/bin/letsencrypt --apache
The apache plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('Unable to parse runtime variables',)
```

Debianでもダメじゃん。jessieならいけたのかな。
まあbetaだから仕方ないのか。
https://github.com/letsencrypt/letsencrypt/issues/1208
現在進行形で議論がある。


manualモードで起動して、表示されたコマンドを別コンソールから実行する。

```
mkdir -p /tmp/letsencrypt/public_html/.well-known/acme-challenge
cd /tmp/letsencrypt/public_html

...
```

一旦Apacheを止めてPythonの簡易サーバーを立ち上げたら、Enterを押してcontinue

```
/etc/letsencrypt/live/
```

に証明書一式が出来た模様。

あとはVirtualHost *:80をコピーして *:443 にして(継承とかないのかな)

```
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/mydomain/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/mydomain/chain.pem
```

これを書くだけ。
個人用サーバーがSSL化できた。期間は3ヶ月。

新しいサイトを作るときのテストサーバーにちょうど良い感じがする。
SSLのテストって証明書のせいで省略しちゃうことあるし、ここまで簡単だとテストで悩むよりさくっと設定する方が早そう。



# Debian jessie
(追記)


気になったので Debian jessie でも試した。
元々は ApacheとPHPとPostgreSQLしか入っていないサーバー。
バーチャルホストも一つしかないテストサーバーで、多少ファイルが書き換えられても戻せるので自動でやってみる。

```bash
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help
```

```bash
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
ca-certificates はすでに最新版です。
ca-certificates は手動でインストールしたと設定されました。
git はすでに最新版です。
python はすでに最新版です。
以下の追加パッケージがインストールされます:
  augeas-lenses binutils cpp cpp-4.9 dh-python gcc-4.9 libasan1 libatomic1
  libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libexpat1-dev
  libgcc-4.9-dev libgomp1 libisl10 libitm1 liblsan0 libmpc3 libmpdec2 libmpfr4
  libpython-dev libpython2.7 libpython2.7-dev libpython3-stdlib
  libpython3.4-minimal libpython3.4-stdlib libquadmath0 libssl1.0.0 libtsan0
  libubsan0 linux-libc-dev python-chardet-whl python-colorama-whl
  python-distlib-whl python-html5lib-whl python-pip-whl python-requests-whl
  python-setuptools-whl python-six-whl python-urllib3-whl python2.7-dev
  python3 python3-minimal python3-pkg-resources python3-virtualenv python3.4
  python3.4-minimal zlib1g-dev
提案パッケージ:
  augeas-doc binutils-doc cpp-doc gcc-4.9-locales gcc-multilib make
  manpages-dev autoconf automake libtool flex bison gdb gcc-doc
  gcc-4.9-multilib gcc-4.9-doc libgcc1-dbg libgomp1-dbg libitm1-dbg
  libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libquadmath0-dbg augeas-tools glibc-doc python3-doc
  python3-tk python3-venv python3-setuptools python3.4-venv python3.4-doc
  binfmt-support
推奨パッケージ:
  libssl-doc
以下のパッケージが新たにインストールされます:
  augeas-lenses binutils cpp cpp-4.9 dh-python dialog gcc gcc-4.9 libasan1
  libatomic1 libaugeas0 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4
  libexpat1-dev libffi-dev libgcc-4.9-dev libgomp1 libisl10 libitm1 liblsan0
  libmpc3 libmpdec2 libmpfr4 libpython-dev libpython2.7 libpython2.7-dev
  libpython3-stdlib libpython3.4-minimal libpython3.4-stdlib libquadmath0
  libssl-dev libtsan0 libubsan0 linux-libc-dev python-chardet-whl
  python-colorama-whl python-dev python-distlib-whl python-html5lib-whl
  python-pip-whl python-requests-whl python-setuptools-whl python-six-whl
  python-urllib3-whl python-virtualenv python2.7-dev python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.4 python3.4-minimal
  virtualenv zlib1g-dev
以下のパッケージはアップグレードされます:
  libssl1.0.0
アップグレード: 1 個、新規インストール: 56 個、削除: 0 個、保留: 2 個。
```

新規 56 個……。

```bash
./letsencrypt-auto --apache
```

SSL化するバーチャルホスト選択画面が出た。

![ssl1.png](https://qiita-image-store.s3.amazonaws.com/0/43406/8bacc198-e64e-a775-b2de-e64d4a59596b.png)

続いて SSLのみにするかの選択

![ssl2.png](https://qiita-image-store.s3.amazonaws.com/0/43406/fb9e33db-eb67-62b1-e71b-de08cda9d8e5.png)


そしてSSLテスト用のリンクを提示される。
https://www.ssllabs.com/ssltest/index.html
( https://www.ssllabs.com/ssltest/analyze.html?d=domain )


BASIC認証をかけてたんだけども、問題無し。
その設定ごと丸々SSL用にコピーされていた。
ここまで自動化されてたらいいね。3ヶ月後の更新も楽々できそう。