kokoichi206 / routines

0 stars 0 forks source link

sub domain [mydns + apache] #19

Open kokoichi206 opened 1 year ago

kokoichi206 commented 1 year ago
kokoichi206 commented 1 year ago

証明書の問題で https にならなかった → 証明書をワイルドカードにしたよ → 解決してなさそう

$ sudo certbot certonly --manual --preferred-challenges dns-01 -m me@kokoichi0206.mydns.jp -d '*.kokoichi0206.mydns.jp' -d kokoichi0206.mydns.jp
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/kokoichi0206.mydns.jp.conf)

It contains these names: kokoichi0206.mydns.jp

You requested these names for the new certificate: *.kokoichi0206.mydns.jp,
kokoichi0206.mydns.jp.

Do you want to expand and replace this existing certificate with the new
certificate?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(E)xpand/(C)ancel: E
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for kokoichi0206.mydns.jp

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.kokoichi0206.mydns.jp with the following value:

3g9Xso-PPqarcvnqy5cRooScpbHTAc0muoPEroYxXVM

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/kokoichi0206.mydns.jp/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/kokoichi0206.mydns.jp/privkey.pem
   Your cert will expire on 2023-05-27. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - 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
kokoichi206 commented 1 year ago

crontab は変更しなくていいかな?

大丈夫そ?

0 0 1 * * certbot renew
kokoichi206 commented 1 year ago

なんか勝手にメインのドメインのところの DocumentRoot をみてそう

sites-available/000-default-le-ssl.conf での設定を変えたらサブの方も変更された。

最終的な設定

$ cat sub-domaini-ssl.conf 

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin tee
                ServerName example.kokoichi0206.mydns.jp
        ServerAlias www.example.kokoichi0206.mydns.jp

                DocumentRoot /var/www/example

                SSLEngine on

                SSLCertificateFile      /etc/letsencrypt/live/kokoichi0206.mydns.jp/fullchain.pem
                SSLCertificateKeyFile /etc/letsencrypt/live/kokoichi0206.mydns.jp/privkey.pem

     ProxyPreserveHost On
     ProxyRequests Off
    <Directory /var/www/example>
        AllowOverride All
    </Directory>

         Protocols h2 h2c http/1.1
        </VirtualHost>

</IfModule>

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/example

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.kokoichi0206.mydns.jp
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    ProxyPreserveHost On
    ProxyRequests Off
</VirtualHost>
kokoichi206 commented 1 year ago

完了

kokoichi206 commented 1 year ago

サブドメインを追加するときに、A レコードを指定するのと DELEGATE を使うのとどんな違いがありますか?

A レコードと DELEGATE は、それぞれ異なる方法でサブドメインを追加する方法です。

A レコードを使用する場合、サブドメインをホストするサーバーの IP アドレスを指定します。つまり、サブドメインに対する DNS クエリがリゾルバから受信されると、A レコードに指定された IP アドレスに向けてトラフィックがルーティングされます。A レコードを使用する場合、サブドメインに対する DNS クエリの応答として、サブドメインの IP アドレスが返されます。

DELEGATE を使用する場合、サブドメインの DNS 権限を、別の DNS サーバーにデリゲートすることができます。つまり、サブドメインに対する DNS クエリがリゾルバから受信されると、デリゲートされた DNS サーバーにクエリが転送されます。DELEGATE を使用する場合、サブドメインに対する DNS クエリの応答として、デリゲートされた DNS サーバーからの NS レコードが返されます。

したがって、A レコードを使用する場合は、サブドメインの IP アドレスが固定されていることが必要ですが、DELEGATE を使用する場合は、サブドメインの DNS 権限を変更することができます。どちらの方法が最適かは、特定の状況によって異なるため、状況に応じて適切な方法を選択する必要があります。

A レコードや DELEGATE 以外にサブドメインを追加する方法はありますか?

はい、他にも DNS のレコードタイプとして CNAME レコードがあります。CNAME レコードを使用すると、既存のドメイン名に別名を割り当てることができます。

例えば、既存のドメイン example.com に対して subdomain.example.com というサブドメインを追加する場合、CNAME レコードを使って以下のように設定することができます。

objectivec Copy code subdomain.example.com. IN CNAME example.com. これにより、subdomain.example.com へのクエリは、example.com の IP アドレスに対して行われるようになります。ただし、CNAME レコードを使用する場合、サブドメインのDNSクエリーは必ず親ドメインのDNSクエリーを経由するため、レスポンスの遅延が生じる可能性があります。

また、CNAME レコードはドメイン名の別名を定義するため、IPアドレスを直接定義することはできないため、A レコードや AAAA レコードを併用して設定することが一般的です。

kokoichi206 commented 1 year ago

A レコードに追加

nslookup example.kokoichi0206.mydns.jp

DELEGATE

nslookup xyz.kokoichi0206.mydns.jp

DELEGATE したやつがうまく名前解決できてない

子 ID でログインしてみたら、IPv4 の方のみアドレスが 0.0.0.0 だった → うまく通知できてないものと思われる。

以下のように、IPv4 専用で通知するコマンドを叩いたら解決し、名前解決はできるようになった気がする。

/usr/bin/wget -O - 'https://mydns<ID>:<PASSWORD>@ipv4.mydns.jp/login.html'