SSLサーバー証明書の自動更新がうまくいかなかった件ですが、解決しました。
解決に向けて私が行った作業を記事にしたいと思います。
状況説明の記事をご覧になっていない方はこちらをどうぞ。
サポートから回答が届いた
自動更新が失敗した件についてサポートにメールで問い合わせていたのですが、その回答が届きました。
過去に何度か行われた自動更新は問題なく、その後に設定を変えたわけでもないのになぜ急に失敗するようになったのか気になっていたのですが、サポートからの回答は要約すると「解約予定のサーバーは自動更新されない」というものでした。
確かに数ヶ月前に解約手続きを済ませているサーバーではありますが、そういう切り分け方をしてくるんですね。
仕様なら仕様で構わない
サーバー内で何かしらの不整合が起きていて処理がゴチャゴチャになっている、とかではなくて一安心です。
そういう仕様ならそれで構いません。
「解約予定のサーバーの証明書は自動更新しない」ということが分かっただけでも問い合わせたかいがあったというものです。
「仕様」を持ち出されたらこれ以上サポートとやり取りしても何も解決しそうにないのでこちらで解決策を考えます。
解決策は2つ
1つは解約予定を取り消すこと。
そもそもの原因を取り除くというアプローチです。
もう1つはこちらでSSLサーバー証明書を取得して再度設定すること。
自動更新のためにいろいろ条件を突きつけてくるのならそれには頼らずこちらで全てをやってしまおうというアプローチです。
今回は後者で進めることにします。
SSLサーバー証明書の取得
Let’s Encrypt発行のSSLサーバー証明書は簡単に取得できます。
certbotというACMEクライアントを動かせる環境であればほんの数分の作業です。
私はVPS上で実行しましたが、AWS EC2インスタンスを数分だけ立ち上げるのもありだと思います。
Chromebookを使っている方であればそこにcertbotを入れるのもいいと思います。
簡単ではありますが以下に手順をまとめました。
- certbotコマンドで証明書の取得を行います。
sudo certbot certonly –manual -d {ドメイン名}
初回はメールアドレス(有効期限切れ間近の案内などが届く)を入力する必要があります。
「規約に同意するか」と聞かれるので「A」で同意、「メールアドレスを登録してもいいか」とか聞かれるのでお好みで「y」か「n」、「IPアドレスを記録してもいいか」と聞かれるので「y」を入力します。 - 上記のコマンドを実行すると下記のようなメッセージが出てキー入力待ちとなります。
この状態のまま、認証用のファイルをサーバー上に設置します。Create a file containing just this data:
{下記のファイルの中に書く内容}
And make it available on your web server at this URL:
http://{ドメイン名}/.well-known/acme-challenge/{ファイル名}
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Press Enter to Continue画面に表示されるURLでアクセスできるファイルに、指示された内容を書き込んで配置します。
ファイルを配置後「enter」を押せば証明書ファイル一式が発行されます。
どのパスに出力されたかは画面に表示されるのでそこから取得してください。
(画面に表示されるのはシンボリックリンクで、実体は別にあるのでご注意ください) - コントロールパネルからSSL証明書を設定します。
ホスティング業者によってUIは違うと思いますが、「SSL設定を更新する」的な項目があると思います。
そこで上記で取得したファイルを指定すれば設定は完了します。
秘密鍵(privkey?.pem)とサーバー証明書(fullchain?.pem)を指定すれば多分大丈夫だと思います。
尚、fullchain?.pemはcert?.pem(サーバー証明書)とchain?.pem(中間証明書)を連結したものです。
fullchain?.pemではなく個別で指定する必要がある場合はこれらをお使いください。
また、対象となる方々におかれましても実行に際しては自己責任でお願いいたします。
参考サイト
まとめ
バッチリでした。
今までの経験が役に立ちました。
私と同じ状況で自動更新が失敗する方がどれだけいるかは分かりませんが、この記事が何らかの参考になれば幸いです。
コメント