Snap版Nextcloudの保守とSSL証明書更新

公開 | 更新 

SSL証明書更新サービスの状態

それでは、Nextcloudパッケージの中で、SSL証明書の更新を司る nextcloud.renew-certs サービスの状態を確認します。

サービスは正常に居座っているようですが、直近のログが何やら不穏なので、当該サービスに関連するログを出力してみます。

更新時にLet’s Encrypt側が次のURIへアクセスを試みるもタイムアウトでエラー

これは nextcloud.renew-certsサービスが、Let’s EncryptのSSL証明書を更新する手順であるHTTP-01チャレンジにおいて、httpで認証用トークンファイルへアクセスしようとしているところでした。

Nextcloudパッケージの一部と化している httpd.conf にこのパスへのエイリアスを見ることができます。

ここで ${SNAP_DATA} は、 /var/snap/nextcloud/current/ であることから、その実体は以下のパスを指していることになります。

そしてSSL証明書関連ファイルや更新ログも、この場所付近に以下のツリー構成で存在していました。

証明書ファイルの日付はインスタンス構築当初のままです。

現在のこのSSL証明書をリモートから確かめてみましたが、未だ有効でした。

図1.Firefox 接続の安全性

図1.Firefox 接続の安全性



とは言え期限切れは近いので、早急な対応が必要です。もちろん他の更新手法も無くもないものの、あまり自由度の高くないSnapパッケージ版であることや汎用性も踏まえて、今回はHTTP-01チャレンジを維持すべく、httpポート開放を選びました。

 

httpポート開放手順

Let’s EncryptのHTTP-01チャレンジに必要な http/80tcp ポートを仮想インスタンス内まで疎通させるべく、下図の2箇所、イングレス・ルールとiptablesに穴を開けます。

 

1.イングレス・ルール追加

Oracle CloudのWeb管理画面の左上のハンバーガーメニューを

「ネットワーキング」→「仮想クラウド・ネットワーキング」

と進み、一覧にあるVCNを開いたら、その左にあるリソースメニューの「セキュリティ・リスト」へと辿ります。そして、前回作成したリストを開き、「イングレス・ルールの追加」ボタンを押し、以下の要領でルールを追加します。

図2.Oracle Cloud イングレス・ルールの追加

図2.Oracle Cloud イングレス・ルールの追加

これでイングレス・ルールに http/80tcpが追加されました。

図3.Oracle Cloud イングレス・ルール一覧

図3.Oracle Cloud イングレス・ルール一覧

2.iptablesにルール追加

次にNextcloudが稼働する仮想マシンのファイアウォールiptablesでも、ポートを開放します。 /etc/iptables/rules.v4 を管理者権限で開き、前回追加した 443tcp エントリ付近に 80tcp の許可エントリを挿入します。

以下のコマンドでiptablesへのルールを追加、反映します。

これでポート疎通は完了です。リモートからnmapを使って、当該ポートが適切に開いているか確認します。

 

SSL証明書の更新

更新は手っ取り早く、 nextcloud.renew-certsサービスを再起動させてみることにしました。再起動後、ランダムスタンバイを経て、SSL証明書の更新作業は完走です。

証明書ファイルの格納されているフォルダを確認すると、現行証明書もまだ有効期限まで日が残っているためか、新旧証明書が混在していました。

リモートよりSSL証明書を確認すると、その有効期限が延びていました。

 

http to httpsリダイレクション

この状態でブラウザからhttpでNextcloudへアクセスすると、httpsへリダイレクトされます。これをコマンドラインからwgetを使って確認すると、サーバから 301 Moved Permanently を受け取ると共に、httpsへ導かれていることが分かります。

Nextcloud公式ドキュメントによるとこれは、Nginxに設定してあるEnforce HTTPSによるようです。その際、先ほど実行したLet’s Encryptの認証に使われる、 /.well-known/acme-challenge は除外されていることが見てとれました。

そもそも前回、Nextcloud構築の仕上げに http/80tcp を閉じなくても、Nginxがhttpsを強制してくれるので、安心しました。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA