質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

6884閲覧

Let's Encrypt のSSL証明書が更新できず解決したい

stakezo

総合スコア43

さくらのVPS

さくらのVPSは、さくらインターネット社が提供するVPS(仮想専用サーバー)です。高速なSSDの選択や複数台構成も可能。利用者に応じた柔軟なプランが用意されています。大規模システムにも対応可能なスケーラビリティを備えたホスティングサービスです。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

2クリップ

投稿2023/02/19 01:46

編集2023/02/19 02:13

実現したいこと

よろしくお願いします。

Let's EncryptのSSL証明書発行ができず解決法を探しております。

さくらサーバのVPSを借りています。
OS:CentOS Stream 8

現在、私が構築していたサイトはSSL証明書の期限が切れており
https://abc.xyz.jp にアクセスすると「この接続ではプライバシーが保護されません」と出ている状態です。

コマンドを試し、エラーが出た結果は以下となっています。(一画面で見やすいように■■改行■■というところで改行を編集しています)

[root@abc123 html]# certbot certonly --webroot -w /var/www/html -d abc.xyz.jp Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - An RSA certificate named abc.xyz.jp already exists. Do you want to update its key type to ECDSA? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (U)pdate key type/(K)eep existing key type: K Renewing an existing certificate for abc.xyz.jp Certbot failed to authenticate some domains (authenticator: webroot). The Certificate ■■改行■■ Authority reported these problems: Domain: abc.xyz.jp Type: unauthorized Detail: The key authorization file from the server did not match this challenge ■■改行■■ "ABcdEFgHIjKlmnABcdEFgHIjKlmn-ABcdEFgHIjKlmn_ABcdEFgHIjKlmn.ABcd1EF ■■改行■■ 2gH3Ij4Klmn_ABCDEF" != "<h1>Test</h1>" Hint: The Certificate Authority failed to download the temporary challenge files ■■改行■■ created by Certbot. Ensure that the listed domains serve their content from the ■■改行■■ provided --webroot-path/-w and that files created there can be downloaded 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.

この

"ABcdEFgHIjKlmnABcdEFgHIjKlmn-ABcdEFgHIjKlmn_ABcdEFgHIjKlmn.ABcd1EF ■■改行■■ 2gH3Ij4Klmn_ABCDEF" != "<h1>Test</h1>"

の照合しようとしている部分が、間違ってHTMLになってしまっているのが原因かなと思っています。
後述の「集めた情報」にもある、

[root@abc123 ~]# vi /etc/httpd/conf.d/vhost.conf ■■vhost.confの中身 ここから■■ <VirtualHost *:80> DocumentRoot /var/www/html ServerName abc.xyz.jp RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L] </VirtualHost> ■■vhost.confの中身 ここまで■■

に、ポート80のアクセスは、httpsでアクセスを行うようにする記述が原因かなと思っています。
.
.
サーバを構築して初めてSSL証明書を発行したときにはエラーが出ず、
https://abc.xyz.jp
へのアクセスは正しく表示されていました。
(Windows10のChromeで確認)
(AndroidのChromeから確認)
(iPhoneのSafariから確認)
SSL証明書は定期的に自動更新するように設定していたけど、素人技術で一度も成功しておらず今回も自動更新せず、証明書の有効期限が切れてから今回、手動での更新に至っています。そして上記の様なトラブルが発生中です。

調べる過程で必要と思われる情報について、以下のような情報を集めています。

集めた情報

[root@abc123 ~]# cd /etc/httpd/conf.d/ [root@abc123 conf.d]# ls README php.conf userdir.conf welcome.conf autoindex.conf ssl.conf vhost.conf [root@abc123 conf.d]# vi vhost.conf ■■vhost.confの中身 ここから■■ <VirtualHost *:80> DocumentRoot /var/www/html ServerName abc.xyz.jp RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L] </VirtualHost> ■■vhost.confの中身 ここまで■■
[root@abc123 conf.d]# cd /etc/nginx [root@abc123 nginx]# ls conf.d default.d [root@abc123 nginx]# cd default.d [root@abc123 default.d]# ls php.conf [root@abc123 default.d]# vi php.conf ■■php.confの中身 ここから■■ # pass the PHP scripts to FastCGI server # # See conf.d/php-fpm.conf for socket configuration # index index.php index.html index.htm; location ~ \.(php|phar)(/.*)?$ { fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php-fpm; } ■■php.confの中身 ここまで■■ [root@abc123 default.d]# cd ../ [root@abc123 nginx]# ls conf.d default.d [root@abc123 nginx]# cd conf.d [root@abc123 conf.d]# ls php-fpm.conf ■■php-fpm.confの中身 ここから■■ # PHP-FPM FastCGI server # network or unix domain socket configuration upstream php-fpm { server unix:/run/php-fpm/www.sock; } ■■php-fpm.confの中身 ここまで■■
[root@abc123 conf.d]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: cockpit dhcpv6-client ftp http https ssh ports: 52863/tcp 49162/tcp 5432/tcp protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
[root@abc123 conf.d]# cd /etc/letsencrypt/renewal/ [root@abc123 renewal]# ls abx.xyz.jp.conf [root@abc123 renewal]# vi abx.xyz.jp.conf ■■abx.xyz.jp.confの中身 ここから■■ # renew_before_expiry = 30 days version = 1.32.0 archive_dir = /etc/letsencrypt/archive/abx.xyz.jp cert = /etc/letsencrypt/live/abx.xyz.jp/cert.pem privkey = /etc/letsencrypt/live/abx.xyz.jp/privkey.pem chain = /etc/letsencrypt/live/abx.xyz.jp/chain.pem fullchain = /etc/letsencrypt/live/abx.xyz.jp/fullchain.pem # Options used in the renewal process [renewalparams] account = 1a234b567c8d901e2f3ab45c6de78901 authenticator = webroot webroot_path = /var/www/html, server = https://acme-v02.api.letsencrypt.org/directory key_type = rsa [[webroot_map]] abx.xyz.jp = /var/www/html ~ ■■abx.xyz.jp.confの中身 ここまで■■

もし、必要な情報が抜け落ちていましたら、申し訳ありません、すぐに提示したいと思います。
どのような情報でも嬉しいです。ご指導をお願いします。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

何をやったかのまとめ
この解決に至った経緯の詳細は、can110様のコメントのやり取りに記載されております。can110様、ありがとうございました!
.
.
.
☆☆☆☆☆☆ベストな解決法☆☆☆☆☆☆
この方法だと、Webサーバーを停止せず、SSL証明書の更新ができました。

[root@abc123 html]# cd /etc/httpd/conf.d
[root@abc123 conf.d]# vi vhost.conf

■■vhost.confの中身 ここから■■
<VirtualHost :80>
DocumentRoot /var/www/html
ServerName abc.xyz.jp
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/ ■■この行を追加し上書き保存■■
RewriteRule ^(.
)$ https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L]
</VirtualHost>
■■vhost.confの中身 ここまで■■
[root@abc123 html]# certbot certonly --webroot -w /var/www/html -d abc.xyz.jp
.
.
.
☆☆☆☆☆☆もう一つの解決法☆☆☆☆☆☆
この方法は、Webサーバーを停止してからSSL証明書を更新、そしてサーバを起動します。
[root@abc123 html]# systemctl stop httpd
[root@abc123 html]# certbot certonly --standalone -d abc.xyz.jp
(省略)~~更新処理~~
[root@abc123 html]# systemctl start httpd

投稿2023/02/19 05:23

編集2023/02/19 05:31
stakezo

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下、参考になりそうな情報提供のみの回答です。
Let's encryptの証明書取得(認証)が失敗するようになってしまった
Let's Encryptの自動更新が失敗する原因はなんですか?

/.well-known/acme-challenge/へのリクエストが適切に返されていないようです。
エラー中の<h1>Test</h1>というメッセージからドキュメントルート上のトップページの内容を返しているように思えますが、そのような動作が行われているリダイレクト設定がおかしい?ような気がします。

なお/.well-known/acme-challenge/については公式のHTTP-01 チャレンジに記載があります。

また、同様事例Let's Encrypt SSL証明書の更新に失敗してしまいます。では
「/.well-known宛の接続だけはhttpsにリダイレクトしないように」することで解決したようです。

投稿2023/02/19 02:26

編集2023/02/19 03:11
can110

総合スコア38339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stakezo

2023/02/19 02:49

回答をいただき、感謝しますm(_ _)m 紹介していただいたURLの1つ目なのですが、解決法が「 nginx の conf のせい」となっており、私も確認をしたのですが、 nginx については、手動で編集をしておらず、私がサーバ構築のときに記録していたログだと 以下のコマンド [root@abc012 /]# dnf install -y php php-xml php-xmlrpc php-json php-mbstring php-gd php-pdo php-pgsql で、phpをインストールした際に nginx が生成されていました。そして中身が本文のほうに記載してあるもので、 原因となりそうな 回答URLの記述、 return 200 http://$host$request_uri;** ←これが原因 は見当たりませんでした。 2つ目のURLについて >SSL証明書を取得するホスト名が、名前解決できない  →URLからアクセスすることができました >80番(http)、443番(https)ポートで通信ができない  →[root@abc123 conf.d]# firewall-cmd --list-all のコマンドから  → services: cockpit dhcpv6-client ftp http https ssh  →を確認できて、ポートは開放されていると思います。 >SSL証明書を取得するホスト名のドキュメントルートに自動的に生成される「/.well-known/acme-challenge」へアクセスできない  →[root@abc012 /]# cd /var/www/html  →[root@abc012 html]# ls -a  →. favicon.ico aaa bbb  →.. index.html ccc ddd  →.htaccess eee fff  →隠しファイルも表示してみましたが、該当のファイルは見当たりませんでした。正常時も  →見かけなかったと思います・・・。 >SSL証明書を取得するホスト名でリダイレクトの設定がおこなわれている  →これが一番心当たりがあります。本文にある  →vi /etc/httpd/conf.d/vhost.conf  →内の記述に問題があるのかな、と思っています。 ありがとうございました。
stakezo

2023/02/19 02:53

/.well-known/acme-challenge/ についてこれから情報を集めて行こうと思います。 ありがとうございました。
can110

2023/02/19 03:17

回答に追記しました。 Let's Encryptは使っていましたが、いまは環境がないので何ともいえませんが いっそのこと一時的にWebサーバを止めて(リダイレクトなどの動作を止めて) certbot実行するとうまくいくかもしれません。
stakezo

2023/02/19 03:53

can110さん、ありがとうございます!ご指導いただいた方法で解決しました! ■■■■■■■ここからコマンド [root@abc123 html]# systemctl stop httpd [root@abc123 html]# certbot certonly --standalone -d abc.xyz.jp Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - An RSA certificate named abc.xyz.jp already exists. Do you want to update its key type to ECDSA? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (U)pdate key type/(K)eep existing key type: K Renewing an existing certificate for abc.xyz.jp Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/abc.xyz.jp/fullchain.pem Key is saved at: /etc/letsencrypt/live/abc.xyz.jp/privkey.pem This certificate expires on 2023-05-20. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [root@abc123 html]# systemctl start httpd ■■■■■■■ここまでコマンド これによって、アクセスしたサイトの「この接続ではプライバシーが保護されません」の表示は消え、目的のWebページが表示されるようになりました! 本当は、SSL証明書90日の有効期限のうち、30日毎に自動更新、が最終目標ですが、この解決法をつかい、5週間毎の土・日曜日に  サーバ停止、SSL更新、サーバ起動 のメンテナンスで乗り切ろうと思います。 大変有り難うございました!
stakezo

2023/02/19 04:06 編集

追記です。can110さんに教えてもらった「>回答に追記しました。」のサイトを確認し [root@abc012 html]# cd /etc/httpd/conf.d [root@abc012 conf.d]# vi vhost.conf ■■vhost.confの中身 ここから■■ <VirtualHost *:80> DocumentRoot /var/www/html ServerName abc.xyz.jp RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !^/\.well\-known/acme-challenge/ ■■この行を追加■■ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L] </VirtualHost> ■■vhost.confの中身 ここまで■■ を上書き保存し、問題となったコマンドを打つと、正常に通るようになりました!! [root@abc012 conf.d]# certbot certonly --webroot -w /var/www/html -d abc.xyz.jp Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - An RSA certificate named abc.xyz.jp already exists. Do you want to update its key type to ECDSA? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (U)pdate key type/(K)eep existing key type: K Certificate not yet due for renewal You have an existing certificate that has exactly the same domains or certificate name you requested and isn't close to expiry. (ref: /etc/letsencrypt/renewal/abc.xyz.jp.conf) What would you like to do? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: Keep the existing certificate for now 2: Renew & replace the certificate (may be subject to CA rate limits) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Renewing an existing certificate for abc.xyz.jp Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/abc.xyz.jp/fullchain.pem Key is saved at: /etc/letsencrypt/live/abc.xyz.jp/privkey.pem This certificate expires on 2023-05-20. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 大変感謝します!ありがとうございました!
stakezo

2023/02/19 05:19 編集

何をやったかのまとめ ☆☆☆☆☆☆ベストな解決法☆☆☆☆☆☆ この方法だと、Webサーバーを停止せず、SSL証明書の更新ができました。 [root@abc123 html]# cd /etc/httpd/conf.d [root@abc123 conf.d]# vi vhost.conf ■■vhost.confの中身 ここから■■ <VirtualHost *:80> DocumentRoot /var/www/html ServerName abc.xyz.jp RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !^/\.well\-known/acme-challenge/ ■■この行を追加し上書き保存■■ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URL} [R=301,L] </VirtualHost> ■■vhost.confの中身 ここまで■■ [root@abc123 html]# certbot certonly --webroot -w /var/www/html -d abc.xyz.jp ☆☆☆☆☆☆もう一つの解決法☆☆☆☆☆☆ この方法は、Webサーバーを停止してからSSL証明書を更新、そしてサーバを起動します。 [root@abc123 html]# systemctl stop httpd [root@abc123 html]# certbot certonly --standalone -d abc.xyz.jp  (省略)~~更新処理~~ [root@abc123 html]# systemctl start httpd
can110

2023/02/19 04:52

解決してよかったです。なおこのコメント欄は目立たないので 記載されている内容を自己回答として転記し解決マークを付けることをおススメします。 のちの人にも役に立つので。
stakezo

2023/02/19 05:21

ありがとうございます!早速やってみます
stakezo

2023/02/19 05:28

すみません、これでいいでしょうか? can110様がベストアンサーではなくなってしまって、ベストアンサー数が+1にならないと思い、コメントしています。 よろしくお願いします。
can110

2023/02/19 05:38

コメントありがとうございます。 全然問題ありません。
stakezo

2023/02/19 05:49

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問