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

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

新規登録して質問してみよう
ただいま回答率
85.48%
DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3713閲覧

certbotでのSSL化の際、sudo certbot --nginxでのエラー

yasso

総合スコア6

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

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

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2022/02/09 08:32

編集2022/02/09 08:34

前提・実現したいこと

現在こちらの記事を参考に、AWS:EC2上のDjangoアプリを独自ドメイン、SSL対応させようとしています。
ドメインはお名前.comで取得、Route53でDNSの設定をし、http://ドメイン名/admin
でDjangoで管理画面が出るのでDNS設定はうまくいっていると思います。

その後、SSL化をcertbotで行おうとした際にエラーが発生しました。

発生している問題・エラーメッセージ

certbot公式でNginx、Ubuntu20を選択し手順通りに進め、

sudo certbot --nginx

で証明書の取得と、Nginxの編集を行おうとしたところ、

sudo certbot --nginx Saving debug log to /var/log/letsencrypt/letsencrypt.log Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: pmakeh.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 Requesting a certificate for pmakeh.com Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems: Domain: pmakeh.com Type: connection Detail: Fetching http://pmakeh.com/.well-known/acme-challenge/rhmiRk9Ng6Y7UCYLvrFtxZqR64aGe3Of7tQK9fofjxs: 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.

というエラーがでてきました。

試したこと

Nginx側ではserver_nameがpmakeh.comとなっていることが確認できました。

listen 80  server_name pmakeh.com;

また、EC2内のサーバー側も、80と443ポートが解放されていることを確認しました。

一点疑問に思うことが、ブラウザ上でhttp://IPアドレス/admin
と打つと、404 Not Foundの表示が出ます。

これは、Nginx側のserver_nameにIPアドレスがないからだと思うのですが、証明書発行の際にはIPアドレスもserver_nameの欄に記入しないといけないなどの決まりがあるのではと、疑問に思いました。

初歩的ですが、エラー解決にご協力いただけると幸いです

補足情報(FW/ツールのバージョンなど)

EC2: Ubuntu20.04
Nginx: 1.18.0

Nginx、gunicornともsystemctl statusコマンドで起動は確認済みです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

certbotの証明書検証のやり方は2つあります。

  1. 実際にドメインの特定のパスにアクセスしてアクセスできることを確認する
  2. DNSのレコードによって確認する

今回でいうとやっているのは1.のほうです。
このやり方だとDocumentRoot配下に.well-known/acme-challenge/xxxxxxxみたいなアクセスポイントを作ってアクセスさせ、そこに正常にアクセスできることを確認することをもって証明書を検証します。
記憶ではアクセスポイントはcertbotが作ってくれるはずなので、セキュリティグループ等でアクセスを弾いてるのではないでしょうか。

80と443ポートが解放されている

と書いてありますが、実際の設定を貼ってみてください。
試しに自分もそのドメインにアクセスしてみましたが、タイムアウトする感じです。
自分のIPとかに絞ってませんか?

Nginx側のserver_nameにIPアドレスがないから

server_nameにIPやホスト名を記載すると、その部分の設定はリクエストのホスト名がそのserver_nameに一致した際に適用されます。
今回でいうとIPでアクセスして404になるのはserver_nameがどれにも一致しなかった際の挙動を特に適切に定義していないからでしょうね。

証明書発行の際にはIPアドレスもserver_nameの欄に記入しないといけないなどの決まりがあるのでは

ドメインによるアクセスなので関係ありません。

投稿2022/02/09 09:12

yu_1985

総合スコア7445

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

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

yu_1985

2022/02/09 09:14

この質問に対する回答とはずれるのでこちらに書きますが、個人的にはそもそも2.のDNSにレコードを登録する方を推奨したいですね。
yasso

2022/02/09 10:22

ご回答ありがとうございます。ご指摘の通り、セキュリティのHTTPを自分のIPにしぼっていました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問