Ubuntu日本語フォーラム
ログインしていません。
お世話になっております。
質問:
Let'sEncryptでSSL証明書を取りたいですが、エラーが出てしまいます。証明書を取得したいです。
環境:
PC: lenovo ThinkpadEdge E430c
Ubuntuバージョン: 20.04.1 LTS (Focal Fossa)
ルータ: バッファローWSR-2533DHPL
経緯:
Linuxサーバーがゼロから作れる本 (日経BPパソコンベストムック)
https://info.nikkeibp.co.jp/media/LIN/atcl/books/061900009/
↑こちらの本を参考にLinuxサーバを構築しています。
・Ubuntuインストール
・OpenSSHを通して他のPCとやり取り
・NO-IP(https://www.noip.com/)からドメインを借り、ドメイン名でインターネットからLinuxPCにアクセス
というように、段階を踏みながら(こちらのお力も借りつつ)なんとか進められました。
SSL証明書をLet'sEncryptで取得してくださいとのことですので、本の手順通りに進めましたがエラーで進めなくなりました。
こちらのお力をまたお借りさせていただけたらと思います。
現状:
Apacheはすでにインストール済みです。その後、
$ sudo apt -y install letsencrypt python3-certbot-apache
と記載されているのでこちらでcertbotをインストール。
その後、設定ツールを起動して必要事項を入力していきます。
$ sudo certbot --apache
・メールアドレス
・同意の(A)
・メールを受け取るか(Y)
・ドメイン名
・リダイレクトするか否か(2)
と、この時点でエラーが出ました。No-IPで取得したドメインが通りません。
再度$ sudo certbot --apacheとして
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter 'c' to cancel):
と出るので〇〇.〇〇.netと実際のNo-IPで取得したドメイン名を入力しました。すると、次のエラーが出ます。
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for 〇〇.〇〇.net
Enabled Apache rewrite module
Waiting for verification...
Challenge failed for domain 〇〇.〇〇.net
http-01 challenge for 〇〇.〇〇.net
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: 〇〇.〇〇.net
Type: unauthorized
Detail: Invalid response from
http://〇〇.〇〇.net/.well-known/acme-challenge/xKomeSz8N_VSlsbInLb4sfjM8_7a8F_uo13QfkdW_Pk
[***.**.***.***]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not
Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
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.
http://〇〇.〇〇.net/.well-known〜〜にアクセスしたが、できませんでした…という旨かと理解しています。
この辺りが↓参考になるかな?と思い80、443ポートの開放を確認しました。開放されていてもやはり同じエラーが出ます。
https://www.blog.danishi.net/2019/08/05/post-2076/
http://***.***.*.**(IPアドレス)としたらApache2のit works!画面が出ます。
しかし、http://〇〇.〇〇.net/とブラウザに打ち込んでも「ページが見つかりません」というエラーが出ます。
この辺り、自分の知識が大変中途半端な所です。てっきりit works!の画面が出ると思っていましたが…
この辺りの知識をお持ちの方がいらっしゃいましたら何卒お力を貸していただけたらと思います。
オフライン
* 名前解決は出来ますか?
NO-IP で設定しても、その名前でアドレス解決できるようになるまで、少し時間がかかります(昔は30分ぐらいと言われてました)。
確認は、dig コマンドで出来ます
* ルータの設定は正しく行こなわれていますか?
外部からのアクセスを、LinuxPCへ振り向ける設定は済んでますか?
また、ルータの80.443 ポートは開いてますか?
オフライン
Apache の wwwroot ディレクトリはどこにしていますか?
とりあえず wwwroot ディレクトリに適当な内容で作った index.html ファイルを置いて、そのサーバーの IP アドレスに http (https ではない) でアクセスして正しく表示されますか。
同様にインターネット側からそのサーバーのグローバル IP アドレスにアクセスして正しく表示されますか。
さらにインターネット側からそのサーバーの FQDN (Let's encrypt で証明書を発行したい FQDN) に http (https ではない) でアクセスして正しく表示されますか。
以上を確認した上で、sudo certbot --apache --webroot <wwroot ディレクトリ> も試してください。
オフライン
si様
返信誠にありがとうございます。
* 名前解決は出来ますか?
digコマンドを使って調べてみました。status: NOERRORとあるので、おそらく問題ないかと思われます。
また、別PC(windows)とssh通信を行ってssh *****@〇〇.〇〇.netとして通信ができています。
digコマンドの結果も貼っておきます↓
==
; <<>> DiG 9.16.1-Ubuntu <<>> 〇〇.〇〇.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36085
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;〇〇.〇〇.net. IN A
;; ANSWER SECTION:
〇〇.〇〇.net. 300 IN A 208.91.197.208
;; Query time: 168 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: 日 4月 25 11:07:50 JST 2021
;; MSG SIZE rcvd: 61
* ルータの設定は正しく行こなわれていますか?
外部からのアクセスを、LinuxPCへ振り向ける設定は済んでますか?
はい、バッファローのルータですので、
https://www.buffalo.jp/support/faq/detail/15022.html
こちらで言うところの「ポート変換」に当たるところかと理解しています。
22番ポートからの通信を インターネット側IPアドレス←→linuxのIPアドレスとしています。
また、ルータの80.443 ポートは開いてますか?
はい、こちら、$ sudo ufw status とすると80、443共にアクティブとなっております。
自分の認識違いなどございましたら忌憚なくご指摘くださいませ。
引き続き、何卒お知恵をいただけたらと思います。
オフライン
ry様
ご返信誠にありがとうございます。
>Apache の wwwroot ディレクトリはどこにしていますか?
はい、設定を調べたところこちらはデフォルトのままの
var/www/htmlのようです。
>とりあえず wwwroot ディレクトリに適当な内容で作った index.html ファイルを置いて、そのサーバーの >IP アドレスに http (https ではない) でアクセスして正しく表示されますか。
はい、デフォルトのアパッチのindex.htmlがあったので、自作の適当なindex.html(テストですとだけ出る)に差し替えて見ました。
http://***.***.*.*とブラウザに打つとしっかり「テストです」という表示が出ました。
>同様にインターネット側からそのサーバーのグローバル IP アドレスにアクセスして正しく表示されますか。
https://qiita.com/ksugawara61/items/887ddd1792d7d5dabb25
↑こちらを参考に、
$ curl inet-ip.info
としまして、サーバ(このlinux)のグローバルIPアドレスが帰ってきました。
(この解決法の認識で正しいでしょうか?)
>さらにインターネット側からそのサーバーの FQDN (Let's encrypt で証明書を発行したい FQDN) に http (https ではない) でアクセスして正しく表示されますか。
http://〇〇.〇〇.net(NO-IPで取得したアドレスです)とブラウザに入力すると、
「SRSplus」というドメイン販売か何かのサイトが表示されます(汗
おそらくこの辺りのどこかが間違っているのかもなどと思えますが…
>以上を確認した上で、sudo certbot --apache --webroot <wwroot ディレクトリ> も試してください。
こちら、certonlyコマンドを使うようにと指示が出たので
$ sudo certbot certonly --webroot -w /var/www/html
としてみましたが、結果は同じくでした…
自分の認識違いなどございましたら忌憚なくご指摘くださいませ。
引き続き、何卒お知恵をいただけたらと思います。
オフライン
mozmoz による投稿:
はい、こちら、$ sudo ufw status とすると80、443共にアクティブとなっております。
この結果は、LinuxPCの結果なので、ルータの結果ではありません。
外部からポートにアクセスし結果を調べるサービスがありますので、通常はそれを使います。
オフライン
si様
お早い返信有難うございます。
>この結果は、LinuxPCの結果なので、ルータの結果ではありません。
なるほど…!こんな基本的なことすらもできておらず申し訳ございません。
せっせと開け閉めしていたのはPC側のみだったわけですね。確かにルータ側のポートも開けてあげないと。
早速バッファローの
https://www.buffalo.jp/support/faq/detail/15022.html
こちらを見ながら設定しました。
現在までに22ポートは開けていたのでもう2つ。設定を追加しました。80と443。
ここで問題が。バッファローのルータ側の設定は問題なく行きました。
確認サイトを利用してグローバルIPから80は開いていると出ますが、443が何故か開きません。
利用したサイトはこちらです↓
https://www.akakagemaru.info/port/tcpport.php
https://www.cman.jp/network/support/port.html
本題であるcertbotも相変わらず同じエラーを履きます。
時間を開けてみます。また明日再度確認をして、結果をご報告いたします。
オフライン
mozmoz による投稿:
確認サイトを利用してグローバルIPから80は開いていると出ますが、443が何故か開きません。
確認サイトは、レスポンスを見ていると思うので、web server の設定をしないと、443が開いているか確認できないのでは?
手順としては、
1.web server 立ち上げ、ポート開放
2. SSL証明書取得
3. https 設定 -> これが終わらなければ、ポート開放確認は出来ない
のではないかと思われます。
オフライン
si による投稿:
mozmoz による投稿:
確認サイトを利用してグローバルIPから80は開いていると出ますが、443が何故か開きません。
確認サイトは、レスポンスを見ていると思うので、web server の設定をしないと、443が開いているか確認できないのでは?
手順としては、
1.web server 立ち上げ、ポート開放
2. SSL証明書取得
3. https 設定 -> これが終わらなければ、ポート開放確認は出来ない
のではないかと思われます。
SSL 証明書を Let's encrypt で取得するところで苦労しているので、現時点では 443 ポートの解放確認は難しいでしょうね。
ここの確認は Let's encrypt で SSL 証明書取得後にすることで、今は無視して構いません。
オフライン
mozmoz による投稿:
>同様にインターネット側からそのサーバーのグローバル IP アドレスにアクセスして正しく表示されますか。
https://qiita.com/ksugawara61/items/887ddd1792d7d5dabb25
↑こちらを参考に、
$ curl inet-ip.info
としまして、サーバ(このlinux)のグローバルIPアドレスが帰ってきました。
(この解決法の認識で正しいでしょうか?)
書き方が分かり難かったかもしれません。
グローバル IP アドレスにアクセスとは、Web ブラウザーで http:<グローバルIP> でアクセスするという意味です。
なお、ルーターの管理画面で割り当てられているグローバル IP が調べられるはずです。
mozmoz による投稿:
>さらにインターネット側からそのサーバーの FQDN (Let's encrypt で証明書を発行したい FQDN) に http (https ではない) でアクセスして正しく表示されますか。
http://〇〇.〇〇.net(NO-IPで取得したアドレスです)とブラウザに入力すると、
「SRSplus」というドメイン販売か何かのサイトが表示されます(汗
おそらくこの辺りのどこかが間違っているのかもなどと思えますが…
dig 〇〇.〇〇.net a を実行して、上で調べたのと同じグローバル IP が得られるかも確認してください。
もし違うようなら NO-IP への登録・更新が正しくできていないと思われるので、ここをもう一度確認してください。
オフライン
si様、ry様
ご返信誠にありがとうございます。
皆様が記載くださっております手順を一つ一つ見せていただきまして、一つ気づきました。
ルータ側のグローバルIPアドレスがころころ(?)変わっているようです。
ルータのグローバルIPをコピーして、Webブラウザーで http:<グローバルIP> とすると
「テストです」(自分で作ったindex.html)の画面が正しく表示されます。
おそらくこれはインターネット側からLinuxサーバへと正しくアクセスできた、と認識しております。
どこかのタイミングで(ルータの再起動?)グローバルIPアドレスが変わったようです。
ry様の
>もし違うようなら NO-IP への登録・更新が正しくできていないと思われるので、ここをもう一度確認してください。
のご指示通り確認してみました。
NO-IPのサイトに登録したグローバルIPアドレス、こちらとももちろん(まったく)違っておりました。これが原因かもしれません。。
グローバルのIPアドレスを固定しなければいけない?とまず考えました。
(以下はは調べまくって情報が錯綜しています汗)
調べると、一般的にこのようにグローバルIPアドレスは変化するようですね。
https://www.tramsystem.jp/voice/voice-3561/
>プロバイダと契約すると与えられるグローバルIPアドレスは、通常動的IPアドレスです。
>・固定IPは別途料金がかかる
>プロバイダによっては、例えばOCN光のように、月額料金に固定IPが1つ含まれているケースもありますが、
OCN光なので色々OCNの自分のサイトで確認しましたがそれらしきのものはなく。
もっと調べるとグローバルIPを固定するにはオプション料金が必要とも。
おそらく固定したグローバルIPはルータのこちらに設定したら良いのかなとも思いました。
https://light.dotup.org/uploda/light.dotup.org692056.jpg
私の調べた認識がどこまで正しいか怪しいです。
知識不足で大変申し訳ございません。
皆様何卒ご指摘いただけたらと思います。
オフライン
si様、ry様
すみません、今、再度立ち戻って
Linuxサーバーがゼロから作れる本 (日経BPパソコンベストムック)
https://info.nikkeibp.co.jp/media/LIN/atcl/books/061900009/
↑こちらの本に目を通しました。
NO-IPでドメインを取得した後、「DDNSのテストとグローバルIPアドレス更新ツール「ddclient」の導入」という項目がありました。
(こちらは質問前にすでに手順通りにインストール、設定を終了しております)
読む限りだと、このddclientがサーバのグローバルIPを定期的にチェックし前回と変わっていればNO-IPのDDNSサーバにアクセスし登録されているグローバルIPアドレスを更新してくれると記載されています。
これが解決法かもしれませんので、もう一度このあたりを深堀りしてみようと思います。
明日再度ご報告いたします。
度々で申し訳ございません。何卒宜しくお願いいたします。
(認識違いございましたらいつでもご記載くださいませ)
オフライン
si様 ry様
お疲れさまです。
すみません、昨日レスをしたのですが、うまくアップできていなかったようです。
皆様のご助力のおかげで、Let'sEncryptよりCongratulation!の文字が出ました。
コロコロ変わるグローバルIPアドレスとドメインを紐付けるDDNSという機能があるのですね。(初心者ですみません)
バッファローのルータなので、
https://aquarius-train.hatenablog.com/entry/%E7%84%A1%E6%96%99%E3%81%AEDDNS%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%AD%E3%83%BC%E3%81%AE%E3%83%AB%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AB%E8%A8%AD%E5%AE%9A
こちらを参考に設定しました。
ここで、ブラウザにhttp://〇〇.〇〇.netとすると「テストです」のindex.htmlが表示されました。
>NO-IP への登録・更新が正しくできていないと思われるので、ここをもう一度確認してください。
こちらが食い違っていたのが原因だっと思われます。
$ sudo certbot --apache
とすると、しっかりSSL証明書が取得できました。
ポート443も確認サイトから確認をしました。正常にポートが開いていることが確認できました。
NO-IP側で止まっていたら確認できるはずはありませんよね。
ddclientはこのドメインーIPアドレスの確認・更新をしてくれるツールなのかな?と認識しています。
これでやっと次の作業に移れそうです。
一人だと解決アイデアがわかずに、ハードです。こちらの方々に毎度、感謝です。
歩みは遅いですが、少しづつUbuntuやネットワークの知識を深めていこうと思います。
オフライン