Let’s Encrypt で無料のサーバー証明書を取得

無料でサイトをHTTPS化できる、Let’s Encrypt を使ってみました。

Centos上でapacheというような環境にrootアカウントでログインできれば以下の手順で大丈夫と思います。
詳細な技術説明は他のサイトに譲ります。

まずは以下のコマンドでletsencryptの実行ファイルをダウンロードします。
以下は”/user/local”にしていますが、場所は基本的にどこでもかまいません。(/rootとか)

cd /usr/local/
git clone https://github.com/letsencrypt/letsencrypt

次に、ダウンロードしたletsencrypt のディレクトリに移動して、いきなりドキュメントルートとドメイン名登録してしまいます。
apache用のコマンドも用意されていますが未検証です。(Debian系用との記述があったので。。。)

cd /usr/local/letsencrypt
./letsencrypt-auto certonly –webroot -w /var/www/example -d example.com -m sample@example.com –agree-tos

オプションの説明

–webroot と  –standalone の使い分け
Let’s Encrypt のサーバーからドメイン存在確認のためにアクセスがあります。
WEBサーバーが立ち上がっていれば、–webrootオプションを使うとドキュメントルートにファイルを作成して確認が行われるので、WEBサーバーを立ち上げたままで完了します。WEBサーバーを用意できない場合は–standaloneを使うと、一時的にletsencryptコマンドがWEBサーバーとなって確認を完了できます。なんらかの理由でWEBサーバーを立ち上げている環境で –standaloneを使う必要がある場合は一時にWEBサーバーを停止しておく必要があります。

-w
ドキュメントルートのディレクトリを指定します。
-d
ドメイン名を指定します。
バーチャルホストを使って複数のドメイン名で運用する場合には -w、-dを複数指定することができます。

-m
自分のメールアドレスを指定します。
トラブル発生時に Let’s Encrypt との連絡に使うようです。

–agree-tos
このオプションをつけることで、Let’s Encrypt の利用規約に同意することになります。

証明書の取得に成功したら、/etc/letsencrypt/live/<ドメイン名> /に以下のファイルが作成されます。

証明書: cert.pem
中間CA証明書: chain.pem
証明書+中間CA証明書: fullchain.pem
秘密鍵: privkey.pem

証明書取得の実験を繰り返していたら以下のようなエラーが発生するようになりました。
利用制限(1ドメインあたり1週間に5回まで)に引っかかったことが理由ですが、証明書をバックアップせずにディレクトリごと消してから再取得していたので困りました。バックアップは忘れずに。。。

[root@example ~]# cd /usr/local/letsencrypt/
[root@example letsencrypt]# ./letsencrypt-auto certonly –webroot -w /var/www/html/example -d example.com -m hoge@example.com –agree-tos
Checking for new version…
Creating virtual environment…
Installing Python packages…
Requesting root privileges to run letsencrypt…
/root/.local/share/letsencrypt/bin/letsencrypt –no-self-upgrade certonly –webroot -w /var/www/html/example -d example .com -m hoge@example.com –agree-tos
/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:25: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python.
DeprecationWarning
Version: 1.1-20080819
Version: 1.1-20080819
An unexpected error occurred:
There were too many requests of a given type :: Error creating new cert :: Too many certificates already issued for: example.com
Please see the logfiles in /var/log/letsencrypt for more details.

Let’s Encryptの証明書の有効期限は短く、90日となっています。
公式サイトでもCronやsystemdで定期的に自動更新することが勧められています。

Getting Started
https://letsencrypt.org/getting-started/

シェアする

  • このエントリーをはてなブックマークに追加

フォローする