DDNSのアドレスでSSL証明書をLet’s Encryptから取得する

自宅サーバーのSSL(TLS)化に必要なサーバー証明書を、Let’s Encryptから取得します。対象となるURLはNoIP.comの有料プランで取得したDDNS(ダイナミックDNS)のもので、myhome.ddns.net  のような形式です。DDNSのアドレスで取得できるのか不安でしたが、問題なくできたのでまとめておきます。

環境

特筆すべき点のない、普通の自宅サーバーです。
OS
Ubuntu Server 18.04.2 (64bit)
nginx
1.14.0 (Ubuntu)
certbot
0.23.0

手順

nginxをセットアップし、インターネットからTCP 80ポートでnginxのドキュメントルートにアクセスできるようにしておきます。

NoIP.comなどでDDNSのアドレスを取得し、IPを設定します。

ここからはサーバーでの作業です。

Let’s Encryptの証明書取得ツールである「certbot」をインストールします。

sudo apt update
sudo apt install certbot

あとは以下のコマンドを実行するだけ(当然ですが my-home-server.ddns.net をご自分のものに置き換えて)

sudo certbot certonly --webroot -w /var/www/html/ -d my-home-server.ddns.net

-w オプションでnginxのドキュメントルートを指定しています。環境に合わせて変えてください。
問題なければ、-w オプションで指定したディレクトリに認証用ファイルが作成され、それをネットからHTTPでLet’s Encryptのサーバーが読みに来て、確かにこのアドレスの持ち主であると確認するようです。

完了すると「Congratulations! Your certificate and chain have been saved at:~」と表示されるので、表示された証明書の保存先をメモっておきます。

あとはその証明書をサーバーで使用する設定をするだけです。私の場合はこんな感じ。

nginx.conf
server {
  ssl on;
  listen 443;
  server_name my-home-server.ddns.net;
  root /var/www/html;

  ssl_certificate     /etc/letsencrypt/live/my-home-server.ddns.net/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/my-home-server.ddns.net/privkey.pem;

  ~~以下略~~

以上、Let’s EncryptでDDNSのアドレス用のサーバー証明書を取得する手順でした。

コメント