Help us understand the problem. What is going on with this article?

Let's Encrypt!!

More than 3 years have passed since last update.

Let's Encrypt

さぁ、暗号化を始めましょう!

・・・っていう勧誘ではなくて。

おそらくご存知の方が多いと思うのですが、Let's encryptという無料でSSL証明書生成しちゃおうぜプロジェクト(乱暴)というのがあります。
https://letsencrypt.org/

私自身で知ったわけではなく、こういうのあるから使ってみたら?って教えてもらったんですが。

いろいろと調べてみたところ、まぁ、普通に使えそうだな、と思ったので使ってみました。

仕組み?

Let's encryptを使う、というか、SSL証明書を発行してもらうには、SSL証明書を作りたいサーバーでLet'sEncryptクライアント(以下LEC)をインストールする必要があります。
何となくログを眺めてみてたところ、

  1. LECがCSRをよしなに作る。
  2. LECが DocumentRoot に適当なファイル(.well-known/ほげほげ)を生成する
  3. LECがどこか(おそらくLet's Encryptサーバー)にCSR送信して申請する
  4. 3.のときに合わせて2.で作ったほげほげのところを一緒にURLパラメータで送信する
  5. LEサーバーが指定されたファイルにアクセスしてくる
  6. LEサーバーが4.のレスポンスとしてアクセスした結果を返す
  7. LECが証明書作る

てな感じだと思いました。
※だいぶ適当なので信用しきっちゃダメですよ。

いわゆるファイル認証ってやつですね。
これ、大手さん、例えばSymantec, GeoTrustなどの証明書発行手順とほぼ同じだと思います。
クライアントがインストールしてあれば1つのコマンドで完全に自動化出来るのが大きいと思います。

構築した環境について

CentOS6.5 + Apache2.2.15

必要なもの

  • サーバー
  • 自前のWebアプリケーションサーバー(私はApacheですがNginxでもOKとか)
  • DNSレコード(AでもCNAMEでも可)編集権限
    LEサーバーはDNSレコードを引いてアクセスしてくるので、LECを実行したサーバーを向かせられないとダメです。
  • 「あ、やべ!」と思った時に対処できる落ち着き。(←大切)

環境の構築

一番最初に引っかかったこと。

私はCentOS6でこの作業やったのですが、CentOS5とか6とかはデフォルトPythonが2.6以下なんですよね。
Let's encryptのインストールにはPython2.7以上が必要そうです。

詳細な手順については・・・そのうち書きます。
メモがhistoryなもので分からない!!

SSL証明書作ります!

./letsencrypt-auto certonly -w /var/www/html -d hoge.fuga.com -m hogehoge@mail.com --agree-tos --webroot

この1コマンドでおしまい!
ね、簡単でsh(ry

後は /etc/letsencrypt/live/hoge.fuga.com/ の下に出来上がった

  • cert.pem を SSLCertificateFile に
  • privkey.pem を SSLCertificateKeyFile に
  • chain.pem を SSLCertificateChainFile に

指定してあげて再起動でOKです。

Googleさんもhttpsを優先付けるとか、検索キーワードをSSLサイトにしか渡さないとかになってきましたので、
これらの対策にもいいのではないかと思いますー。

おまけ(SANsについて)

市販のSSL証明書のサービスでは、SANsというものに対応しているものがあります。
これは、wwwありなし両方ともOKな証明書を生成するサービスです。
https://www.hoge.com でも https://hoge.com でも使えちゃうアレです。

サーバーのVirtualHostにServerAliasとして指定していたり、wwwなしをwwwありに転送かける設定をしてたりするサーバーは多いのではないでしょうか。
このSANsの設定がSSL証明書にないと、例えば、www.hoge.comで証明書作った場合、
1. https://hoge.com にアクセスする
2. 証明書はあるがFQDNが違うので証明書エラー画面が出る
3. 証明書のエラーを無視して進むと、晴れて https://www.hoge.com がエラーなしで表示される
となってしまい、1.の時にちょっとカッコ悪いです。

さて、今回のLet's encryptですが、ちゃんとこれに対応してます!

./letsencrypt-auto certonly -w /var/www/html -d www.hoge.com,hoge.com -m hogehoge@mail.com --agree-tos --webroot

って -dの後を , 区切りで追記するだけです!
これ別ドメインでも書けちゃうんじゃなかろうか。

ちょっとしたSSL証明書が欲しいというときには非常に便利なのでぜひ!

おまけ(wordpress)

wordpressのサーバーの場合、-w が [wordpressのインストール先] になるのでご注意です。
私の場合は、/var/www/wordpress 以下にwordpressがセットアップされていたので、
-w /var/www/wordpress でした。
まぁ、DocumentRoot を入力しましょうね、というおまけでした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away