概要
- Let’s Encrypt を使って、無料サーバ証明書を発行して設置します。
- 手順通りやれば、10分程度で出来ると思います。
- 最近Facebookがゴールドスポンサーになって、盛り上がってきています。
- 12月3日にPublic Betaになりました。
- 今は3ヶ月分の証明書を取得出来ます(コマンド1発で、無料で更新可能)
- サーバ環境は、Mac OS X 10.10 + Nginx 1.8です。
- おそらく、各種OS + Nginxなら同じ手順で行けると思います。
- Google Chromeが、WebRTCを使うためにはHTTPSが必須になりました。
セットアップ
cloneしてくる。ちょっと容量は重め。
% git clone https://github.com/letsencrypt/letsencrypt % cd letsencrypt
証明書取得
- 普通の証明書取得は、メアド確認やら存在確認やらで凄い時間と手間がかかりますが、そこら辺はクライアントアプリが自動でやってくれます。
- 80番ポートを使って、ドメインの所在確認をしているので、既に80番ポートが使われていると以下のようなエラーが出ます。
- 80番ポートで稼動しているサービスがある場合は止める必要があります。
- 私の場合、Mac OSで動いているHTTPサーバを止めました。
% sudo brew services stop nginx-full Stopping `nginx-full`... (might take a while) ==> Successfully stopped `nginx-full` (label: homebrew.mxcl.nginx-full)
そして、キーペアの生成などを一発で行えるコマンドを実行します。
./letsencrypt-auto certonly --standalone
- Mac OS X 場合、
-d
オプションでホスト名を指定したら、プログラムが異常終了したので、オプションは渡さずに実行しました。そうすると、インタラクティブにホスト名を聞かれるので、そこで入力します。 - Debianで実行した場合、以下のパッケージをインストールするように求められます
augeas-lenses libexpat1-dev libpython-dev libpython2.7 libpython2.7-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-pkg-resources python3-virtualenv
初回は、メールアドレスを聞かれます。
そして、最後にキーなどが生成されます。
以下に、2つ分の証明書を作った場合のファイル一覧を貼り付けます。
nginxに設置
nginxの設定を抜粋します。ほとんどコピペで行けると思います。
重要な点は以下の2つを書き換えることだけです。
ssl_certificate_key
に秘密鍵のファイルssl_certificate
に証明書のファイル- その他のSSLの設定はLet’s EncryptのSSL証明書で、Qualys SSLTestでA+評価を獲得するにはを参照しました。
server { listen 443 ssl; server_name matsu.teraren.com ; ssl_certificate /etc/letsencrypt/live/matsu.teraren.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matsu.teraren.com/privkey.pem; # 1. 暗号方式の設定 # (デフォルト) ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; # 2. Logjam攻撃対策 ssl_dhparam /etc/nginx/ssl/dhparam.pem; # 3. Enable OCSP (Online Certificate Status Protocol) Stapling ssl_stapling on; ssl_stapling_verify on; resolver 8.8.4.4 8.8.8.8 valid=300s; resolver_timeout 10s; ...... }
証明書を確認
- このブログ自体には、httpへの参照があり、画像が出なかったりするので検証はこちらで。
- ちゃんとSSL緑のキーになっています!
-
サーバ証明書を見てみましょう。
-
中間証明書を見てみましょう。
-
ルート証明書を見てみましょう。
- DST Root CA X3ですね。
- DST Root CA X3ですね。
ブラウザ確認
- OK
- Mac OS 10.11 (El Capitan) Google Chrome
- Mac OS 10.11 (El Capitan) Safari
- Mac OS 10.11 (El Capitan) Firefox 43.0.1
- iOS 9.2 Google Chrome
- Mac OS X 10.10 curl
- Mac OS X 10.11 curl
- iOS 9.2 safari
- Mac OS 10.10.5 (Yosemite) Firefox 43.0.1
証明書の更新方法
自動化するなら、こんな感じになるかなと思います。
% sudo brew services stop nginx-full % sudo ./letsencrypt-auto certonly % sudo brew services start nginx-full
サンプル
この辺りのサービスもSSL化しました。(ついでに、HTTP2化も)
– 金融機関コードAPI
– 郵便番号API
制限
Rate limit on registrations per IP is currently 10 per 3 hours
Rate limit on certificates per Domain is currently 5 per 7 days
Public beta rate limits
I’ll keep announcing changes in that thread. For today’s public beta launch the limits will remain: Rate limit on regist...
SSL TESTの結果
自動更新
これで、今日からあなたも快適なSSLライフを送れますね!
Let’s Encrypt!
更新履歴
- 2016/1/4
cert.pem
をfullchain.pem
に変更
Comments
fullchain.pem を使えば iOS 9.2 Safari でもエラー出ませんでしたよー
https://community.letsencrypt.org/t/solved-ios-safari-not-trusted/5846/2
お。早速設定変えてみたら動いた!thanks!