SSL接続の申請をしたので以前ダウンロードしたTeraTermでサーバーに接続して
サーバーの設定をします。
おっさんはChatGPTに最初から手伝ってもらうつもりでした。
しかし、この全てChatGPT頼りというのはあまり良くなかったですね。
長くなりすぎない程度にChatGptとのやり取りも含めながら解説していこうと思います。
VPSサーバーにログインする
サーバーにログインする
TeraTermを立ち上げます。
ログインするまではこちらを確認してください。ここからはログインしていることを前提に進めていきます。
Ubuntuのアップデートをしてcertbotのインストール
certbotは
sudo apt update
sudo apt install certbot
sudo certbot --nginx -d example.com
今思えばこの辺から既にドツボにハマっていたんですよね。
だって、XserverVPSはcertbotではSSL証明書取れないから。
知らなかったんだから仕方ない。
>>余談
sudo apt update
を実行すると
「〇〇個のパッケージがアップデートできます。
sudo apt upgradeを実行してください」
ってubuntuが教えてくれます。
ChatGPTにそれを伝えると、
構成がかわるとめんどいから、このまま勧めたいって超遠回しに教えてくれました。
なので、素直に従います。
ですが、本来はまっさきに一般ユーザーを作ってサーバー構築するのがおすすめみたいです。
わたしは後からChatGPT君にユーザー追加しなの??
って聞いたらやったほうがいいよ。なんでやってないの?みたいな感じでやり方教えてくれました。
余談ここまで<<
でコマンドの結果がこちら
Running kernel seems to be up-to-date. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@x:~# sudo certbot certonly –nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log The requested nginx plugin does not appear to be installed Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
つまりですね、nginxというアプリケーションをインストールしてないのに、nginx動けよ!みたいな命令を出したみたいです。
でこのお知らせをGPT君にお知らせしました。
以下GPT君の解答です。
nginxをインストールする
エラーが表示されていますね。エラーメッセージによれば、リクエストされたNginxプラグインがインストールされていないようです。
Ubuntu 20.04では、CertbotのNginxプラグインは通常python3-certbot-nginxというパッケージに含まれています。しかし、エラーが発生しているため、まずはこのプラグインを再度インストールしてみましょう。
bashCopy code
sudo apt install python3-certbot-nginx
このコマンドでpython3-certbot-nginxパッケージがインストールされ、それから再度Certbotの証明書発行コマンドを試してみてください。
bashCopy code
sudo certbot certonly --nginx
できないことを知らずにcertbotでSSL証明書を取ろうとしてただただ時間を無駄にする。
ここからはしばらくグダグダですが少しだけ意味の有りそうなGPT君との会話をかいつまんで載せておきます。
最後に必用な事をまとめますね。
上記コマンドを実行するとcertbotがLet’sEncryptのサイトまで証明書を取りに行ってくれます。
certbotを実行して、証明書を取りに行くといくつか質問が来ますのでそれに答えるとSSL証明書が発行される仕組みです。
途中で2回ほどyって入力するとOKです。
おっさんはタイムアウトエラーで怒られています。
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must agree in order to register with the ACME server. Do you agree?
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Y)es/(N)o: y – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let’s Encrypt project and the non-profit organization that develops Certbot? We’d like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Y)es/(N)o: y
Account registered. Please enter the domain name(s) you would like on your certificate (comma and/or space separated) (Enter ‘c’ to cancel): blog.rikimaru.xyz Requesting a certificate for blog.rikimaru.xyz Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems: Domain: blog.rikimaru.xyz Type: connection Detail: ipaderss: Fetching https://blog.smilebridge.xyz/.well-known/acme-challenge/EkaBqQWokD1KaSUmP4p4juFbqsTnKgJtdJliuCufo0U: Timeout during connect (likely firewall problem) Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet. Some challenges have failed. Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.
でGPTくんの解答
エラーメッセージを見る限り、Certbotが https://blog.smilebridge.xyz/.well-known/acme-challenge/ にアクセスできず、タイムアウトしているようです。これは、おそらくファイアウォールやネットワークの問題によるものです。
次にいくつかのアプローチを試してみてください。
- ファイアウォールの確認: サーバーのファイアウォールがアクセスを妨げている可能性があります。CertbotのHTTP認証が通るように、一時的にファイアウォールを無効にしてみてください。
- ポート 80 のリッスン確認: Nginxがポート 80 でリッスンしていることを確認してください。Certbotは通常、ポート 80 を使用して Let’s Encrypt サーバーと通信します。
- Nginx の確認: Nginxの設定が正しく、
blog.rikimaru.xyzのリクエストがサーバーに届くようになっているか確認してください。 - ドメインの確認:
blog.rikimaru.xyzが正しいIPアドレスを指していることを確認してください。ドメインが正しく解決されていない場合、Certbotが正しいサーバーにリクエストを送ることができません。
これらのステップを確認した後、再度 sudo certbot certonly --nginx を実行してみてください。もし同じエラーが発生する場合は、エラーメッセージに新しい情報が含まれている可能性がありますので、その内容をお知らせいただけますか?
おっさんもGPT君もXserverVPSではcertbotではSSL証明が取れないことを知らずここでファイアーウォール設定の確認を始めます。
Ubuntuでは、ufw(Uncomplicated Firewall)が一般的に使われています。以下は、ufwを使用してファイアウォールの状態を確認する基本的なコマンドです。
まず、ufwがインストールされていることを確認します:
bashCopy code
sudo apt-get update sudo apt-get install ufw
次に、ufwのステータスを確認します:
bashCopy code
sudo ufw status
もしufwが有効になっている場合、一時的に無効にするには以下のコマンドを使用します:
bashCopy code
sudo ufw disable
無効にした後で、再度Certbotを実行してみてください。ファイアウォールが問題の原因だった場合、無効にすることで通信が可能になります。ただし、セキュリティ上の理由から無効にしたままにするのは望ましくありません。ファイアウォールの設定を再検討し、必要に応じて許可ルールを設定してください
ファイアーウォールは設定されていませんでした。また、http通信に必用な80番ポートは開いていました。
そのため、nginxの状態確認をすることにしました。
Nginxの状態を確認する方法はいくつかあります。以下は一般的な方法です。
systemctlを使用する方法:
bashCopy code
sudo systemctl status nginx
このコマンドはNginxのサービスステータスを表示します。起動している場合、”Active: active (running)”と表示されます。
Nginxのプロセスを確認する方法:
bashCopy code
ps aux | grep nginx
このコマンドはNginxのプロセス一覧を表示します。プロセスが表示されないか、または正常に動作しているか確認してください。
Nginxのバージョンを表示する方法:
bashCopy code
nginx -v
このコマンドはNginxのバージョン情報を表示します。正常にインストールされていれば、バージョン番号が表示されます。
これらのコマンドを実行して、Nginxが正常に動作しているか確認してください。もし問題があれば、エラーメッセージやステータス情報を教えていただけると助かります。
ひとまず、今回はここまでで。
この後2週間ほどcertbotのエラーと言いますか、
証明書が取れなくて苦しみました。
しばらくGPT君とも、nginxの設定、ファイアーウォールの設定を何度も何度も繰り返し、
結局GPT 君にはXserverに問い合わせてくださいとさじを投げられました(笑)