KUSANAGIのlet's encrypt証明書が取得できず。さくらVPS独自ファイアウォールに注意

最新の更新日
Dec 7, 2021 10:03 AM
Target Keywords
vol.

さくらVPSでKUSANAGi導入後、Let’s EncryptによるSSL証明書が取得できずにつまづきました。同時にブラウザからも接続できず、WordPressのインストール作業も困難に。

結果、SSL証明書の問題は解決できなかったのですが、さくらVPS独自のファイアウォール機能である「パケットフィルタ」の設定を行うことでブラウザからの接続はクリアすることができまいsた。下記、過程を共有します。

image

さくらVPSでKUSANAGIのセットアップを順調に進めるが…!

さくらVPSでKUSANAGIイメージにて初期インストール。その後、SSHにてサーバへ入り

$ yum update
$ kusanagi init
$ kusanagi provision [provision name]

と無事に進めていっていました。

let's encryptが取得できないエラー

しかし、SSL化の部分が取得に失敗。下記コマンドで再度の取得を実行します。

$ kusanagi ssl --email youremail.com [設定したプロビジョン名]

今回、テスト環境にて立ち上げたこともあり、wwwサブドメインでドメインのAレコードを設定していませんでした。しかし、let's encryptは(条件によって)wwwサブドメインの情報を取得しにいくようです。

$ kusanagi ssl --email [email protected] provision-name

(略)
Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: 
   Type:   connection
   Detail: Fetching
   
   Timeout during connect (likely firewall problem)

   Domain: www.
   Type:   connection
   Detail: Fetching
   http://www.
   Timeout during connect (likely firewall problem)

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

Cannot get Let\'s Encrypt SSL Certificate files.
Failed.

ファイアウォールのポートが開放されているか確認

httpsのポート(443)が開放されていない場合はiptablesで適宜開放するようにします。

下記コマンドで、80, 443番ポートが空いているか確認。

$ ss -tln

State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128    127.0.0.1:9000                    *:*                  
LISTEN      0      128         *:111                     *:*                  
LISTEN      0      128         *:80                      *:*                  
LISTEN      0      128         *:22                      *:*                  
LISTEN      0      100    127.0.0.1:25                      *:*                  
LISTEN      0      128         *:443                     *:*                  
LISTEN      0      128    127.0.0.1:2812                    *:*                  
LISTEN      0      128      [::]:3306                 [::]:*                  
LISTEN      0      128      [::]:111                  [::]:*                  
LISTEN      0      32       [::]:21                   [::]:*

うーん、80番も443番も空いていますね…!

さくらVPSには、Firewalldやiptablesとは別にさくらVPS側でのファイアウォール機能「パケットフィルタ」がある

さくらのVPSには「パケットフィルタ」という機能があります。 サーバのFirewalldやiptablesとは別に、さくらのVPS側でファイアウォール機能を提供しています。こちらで許可をしていない可能性があります。 パケットフィルタは、以下の手順で確認できます。 「さくらのVPS上のサーバ一覧から該当のサーバをクリック」 → 「パケットフィルタタブ」 初期設定では、SSH接続用の22番のみ許可になっており、それ以外は拒否されます。

いや、そんなこと知りませんでした…!神回答です。

サーバー選択 > グローバルネットワークタブに「パケットフィルタ」がありました…!

image

接続可能ポートを追加

image

image

追加の後、「設定」を押すのを忘れないようにしましょう。

サーバー画面で下記のように、接続可能ポートが追加されていたらOKです。

image

それでもSSL証明書が取得できない問題は解決せず…。ただしブラウザ経由でのアクセスは可能に

結局、Let’s encryptによってSSL証明書が取得できない問題は解決しませんでした。 もはやプロファイルを作成しなおす方がいいかも?

ただ、さくらVPSのパケットフィルタにWebを追加したことで、ブラウザからも接続確認できなかった問題は解決。

ほか参考: