【Let’s Encrypt】certbot renew で Type: unauthorized エラーを解決した

certbot renewでエラーが出るドメインがありました。
いろいろと試すたびにエラーの種類が変わり、最終的に

このエラーに落ち着きました。
いろいろ調べて試しても解決できなかったのですが、
私の場合、ウェブルートをオプションで明示的に指定すると解決しました。

一度手動で成功すれば、後日

で一括更新してもうまくいきました。

【Linux】CentOS6にPython2.7をインストールして自動的に有効にする

先日Let’s EncryptのログにWarningが出ていました。

証明書の更新はできていますが、
Let’s Encrypt自身のアップグレードでWarningが出ていたようです。
アップグレードするには、現在インストールされているPython2.6はサポートが廃止される予定なので
まずはPythonをアップグレードしろとのこと。

しかしCentOS6の標準では2.6までしか入りませんのでリポジトリのインストールから始めます。

リポジトリのインストール

Python2.7のインストール

これだけではpythonコマンド使用時のバージョンは2.7になりません。
2.7が自動的に有効になるように設定しましょう。

これで~/certbot-auto renewを実行すれば
Let’s EncryptのrenewコマンドでLet’s Encrypt自身のアップグレードもされるようになりました。

しかし、自動更新はたいていの場合、cronで設定されているかと思います。
cronで実行される場合はまだpython2.7が有効になっていません。

cronで実行するコマンドでpython2.7を有効にするには
crontabでの記述を次のようにします。

(毎日AM5時にrenewを実行する場合)

【Linux】Let’s Encryptで取得した証明書を削除して更新対象からはずす

SSL証明書を無料で取得できるLet’s Encryptで、
サーバー移行やサイト閉鎖などによって証明書が不要になった場合は
revokeオプションで対象のドメインの証明書を削除する必要があります。
証明書の更新はcronで自動更新していると思いますので
ある日ログを確認したらエラーが出続けていたということがないよう、忘れずに証明書を削除しましょう。

certbot-autoのrevokeオプションを実行するだけです。

certbotの古いバージョンではfullchainなどのファイルに対してもrevokeが必要でしたが
最新のcertbotではcert1.pemを削除するだけでOKです。この状態で

を実行すれば
revokeしたドメインは更新対象から外れています。

あとは、Apacheなどのバーチャルホストの設定の変更も忘れないようにしましょう。
そのままだと削除した証明書をロードしようとしてエラーとなり
ウェブサーバーが起動できないという事態になってしまいます。

【Linux】CentOS5でLet’s Encryptを使ってマルチドメインのSSL証明書を発行する

CentOS5でシステムを運用しています。2010年にリリースしたシステムです。
新しいOSに乗り換えるべきなんですが、いろいろと複雑な事情があり、もう少し延命しなければなりません。

このシステムのSSL証明書を、無料のLet’s Encryptで取得することになりました。
Let’s Encryptについての記事はこちら

SSL証明書は無料で取得できる時代に

また、同じサーバー上で、
本番環境の「www.ドメイン名」とステージング環境の「stage.ドメイン名」が動いており、
マルチドメイン証明書を取得することにしました。

しかし、OSが古いことが原因で、途中さまざまな壁にあたり、都度、対処が必要でした。

以下、備忘録です。

まず、Let’s Encryptを利用するために公式の「certbot」というツールがあるのですが、
これがCentOS6以降でないと使えません。
いきなりの壁です。

しかし、CentOS5でも使える「dehydrated」という非公式のツールがありますので
こちらを使ってSSL証明書を取得することにします。

dehydratedはgitでインストールしますが、
CentOS5では標準でgitはありません。
そこでgitのインストールから始めます。

CentOS5にgitをインストールするため、EPELリポジトリを追加します。

しかし、ここでまた問題が。
CentOS5は2017年3月31日でサポートが終了したため
公開していたミラーサイトからリポジトリが削除されています。

そこで、古いOSをyumリポジトリとして公開している

http://vault.centos.org/

というサイトがありますので
そこをyumリポジトリに追加してgitをインストールします。

を開きます。

という行がいくつかあります。
この行をコメントアウトし、代わりに次の行を追加します。

6箇所くらいあるので、それぞれ、上記の変更を行います。
私の環境はCentOS5.5ですので上記のディレクトリに「/5.5/」とありますが、
ここはバージョンによって適宜変更してください。

これでリポジトリが登録できたことになっているので、
yumでgitをインストールします。

gitがインストール出来たら、やっと目的のツール「dehydrated」のインストールです。

インストールできたら、さっそくdehydratedを使ってSSL証明書を取得してみます。

まず、一時ディレクトリを作成します。

次にApacheの設定ファイルを作成します。

dehydrated.confの内容は下記のとおりです。

ここまででApacheを再起動します。

次に、dehydratedの設定ファイルを作成します。
dehydratedをインストールした場所に移動し、

同じディレクトリにdomains.txtというファイルを作成します。

このファイルには、SSL証明書を発行するドメインを記述します。
このとき、行を分けて複数のドメインを記述すると
ドメインごとに証明書が発行されますが、
1行にスペース区切りで複数のドメインを記述すると
1つのマルチドメイン証明書として発行されます。

今回は目的だったマルチドメイン証明書の記述を行います。

最初に記述したドメインがコモンネームとなります。

そして、証明書発行の前に、アカウントを登録する必要があります。

Done!と表示されたら完了です。

いよいよ証明書の発行です。

Done!と表示されたら証明書の発行完了です。
準備が大変でしたが、あっけなく発行できました。

あとは、ApacheのVirtualHostの設定で
複数のドメインに対して証明書ファイルを設定します。

いろんな書き方があると思いますが
私はssl.confにすべて記述しています。

ssl.conf(一部)

Apacheを再起動して完了です。

あとは、自動更新の設定ですが、cronで以下のようなコマンドを実行するだけです。

これで証明書の更新も勝手にやってくれます。たまにログは確認しましょう。

これでCentOS5でもLet’s Encryptでマルチドメイン証明書が利用できました。
無料ってのがすごいですね。

【Linux】とうとうSSL証明書は無料で取得できる時代に

昔はSSL証明書は個人が気軽に導入できるような安いものはありませんでした。
今は千円くらいで取得できるものがあるので個人でも気軽に取得できますよね。

そしてとうとう、SSL証明書は無料で取得できる時代になったようです。

Let’s Encrypt 総合ポータル(日本語)

開発サーバー(CentOS6.5)で取得してみました。
(上記の公式サイトで環境ごとに導入方法の説明があります)

まず、EPELリポジトリの追加が必要だそうです。

これはすでに追加済みでした。

次に、公式サイトからクライアントソフトを直接ダウンロードします。

ダウンロードしたファイルに実行権限をつけて実行します。

ドメイン名とメールアドレスを聞かれるので答えます。

もうこれで証明書が取得できたようです。
認証メールが来ていたのでメール内のURLをクリックしておきます。

を見ると、たしかに証明書ファイル等があります。

ではApacheの設定を編集して、取得した証明書に切り替えてみます。

Apacheを再起動して、ブラウザでアクセスして証明書を確認すると、

おお、できてる!
こんなに簡単だとは思いませんでした。

有効期限が90日と短いようですが、定期的に

をすればいいみたいですね。
cronに設定しておけば、もうSSL証明書更新作業に煩わされることはありません。たぶん。