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

letsencryptで証明書を取得するときにはまったこと

More than 1 year has passed since last update.

letsencryptの成長が目覚ましいですね。

そもそもLet's Encryptだったり、LetsEncryptだったり検索キーワードが複数あるため情報が散らばっているせいで、最新情報を追いにくくはありますが、そんな影響をものともしないくらいの成長具合が見られます。

かつては、letsencryptだった実行コマンドが、letsencrypt-autoになったり、certbotに変わったりして、現在は、certbot-autoで落ち着いたようです。

シェルに書いたり、Dockerで記述したりする記事を見かけますが、実行コマンドが変わっても修正箇所を最小限にしたりと、みんないろんな工夫をしているようです。

実際にはまったこと

以下のようなシェルスクリプトを用意して、その下の手順通り進めたところ、letencrypt側のエンドポイントにステージング環境が採用されて、ルート証明書が「Fake LE Intermediate X1」というフェイク証明書になってしまいました。

letsencrypt.sh
#!/bin/sh

#証明書のドメイン(,区切りで複数のドメインも指定可能)
DOMAIN=<YOUR DOMAIN>

#ドキュメントルート(上のドメインで接続可能である必要がある)
WEBROOT=<YOUR DOCUMENTROOT>

#メールアドレス(トラブル時にメールが届く)
EMAIL=<YOUR MAIL>

/usr/local/certbot/certbot-auto certonly -m $EMAIL /
--agree-tos --non-interactive $* /
--webroot -w $WEBROOT -d $DOMAIN

手順

※前提として、DNSの設定、Webサーバのセットアップ、certbotのインストールは完了していること。

1. 上記のletsencrypt.shを任意の場所に配置する。
2. 下記コマンドでテストサーバに接続して証明書を取得する。(※これが誤り)
sudo ./letsencrypt.sh --test-cert
3. 下記コマンドで、本番用の証明書を取得する。
sudo ./letsencrypt.sh --force-renewal

--force-renewを実行しすぎて、証明書取得の利用制限の閾値を超える

1日で5回、1週間で20回のどちらかの制限にかかって、証明書取得ができなくなりました。(どちらにかかったのか確認するすべがない)

日本語公式ページにも以下のように書いてあり、無効な証明書を取得していました。

--test-cert もしくは --staging
SSL/TLS サーバ証明書の取得時に、ステージングサーバを使用して、無効な証明書を取得します。
オプション --server https://acme-staging.api.letsencrypt.org/directory を指定するのと同じ動作です。
(デフォルト: False)

どうやって解決したか

メインのドメインはEV証明書も必要なため有償の証明書を割り当てていたため、letsencryptのドメインに含めることができず、泣く泣くサブドメインの変更を余儀なくされました。

ところが、変更後のサブドメインの証明書を取得する際には、2.の手順のところで、--dry-runを指定した後で、--force-renewalを指定して再度実行したところ正しいルート証明書を取得することができました。

スクリーンショット 2018-08-07 15.35.11.png

fk_2000
最近の関心事:YouTube、aws、IoT、マイコンボード エンジニア採用、IT導入担当、ブログメディア編集長( https://avatarworld.info/ )、 ↓こちらのYouTubeチャンネルで動画をアップしています。 https://www.youtube.com/channel/UCFM7KsJZC8uGJ1BRMT-4dFg
https://twitter.com/fk_2000
orylab
オリィ研究所は距離や身体的問題を克服し、あいたい人に会え、行きたいところに行ける未来を実現します。
http://orylab.com
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