Ubuntu 19.04のNginxでLets Encryptからワイルドカード証明書をインストールする

2018年3月、Let's Encryptにワイルドカード証明書のサポートが追加されました。ワイルドカード証明書を使用すると、ドメインのすべての第1レベルのサブドメインを単一の証明書で保護できます。ワイルドカード証明書は、ACMEプロトコルの更新バージョンであるACMEv2を介してのみ取得できます。ワイルドカード証明書または非ワイルドカード証明書にACMEv2を利用するには、ACMEv2をサポートするように更新されたクライアントが必要です。そのようなクライアントの1つはacme.shです。これは、依存関係のない純粋にシェル(Unixシェル)言語で記述されたACME / ACMEv2プロトコルクライアントです。さらに、ワイルドカードドメインはDNS-01チャレンジタイプを使用して検証する必要があります。つまり、ドメインの制御を証明してワイルドカード証明書を取得するには、DNS TXTレコードを変更する必要があります。

このガイドでは、Vultr APIを使用してDNSレコードを自動操作するためのLexiconツールであるacme.shクライアントを使用して、Ubuntu 19.04のLet's Encryptから無料のワイルドカード証明書を取得してデプロイし、証明書をNginx Webサーバーにデプロイする方法について説明します。

必要条件

  • 新しく展開されたUbuntu 19.04 Vultrクラウドサーバー。
  • 登録済みのドメイン名があります。このガイドではexample.com、例としてドメインを使用します。
  • 完全修飾ドメイン名(FQDN)のA / AAAAおよびCNAME DNSレコードが設定されていることを確認してください。DNSの概念に慣れる必要がある場合は、Vultr DNS入門チュートリアルを参照してください。
  • VultrアカウントのコントロールパネルでVultr APIアクセスが有効になっています。

あなたが始める前に

Ubuntuのバージョンを確認してください。

lsb_release -ds
# Ubuntu 19.04

sudoアクセス権と希望するユーザー名で新しいユーザーアカウントを作成し、それに切り替えます。使用していますjohndoe

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

をユーザー名に置き換えjohndoeます。

タイムゾーンを設定します。

sudo dpkg-reconfigure tzdata

Ubuntuシステムが最新であることを確認します。

sudo apt update && sudo apt upgrade -y

必要なパッケージをインストールします。

sudo apt install -y git wget curl socat

Nginxをインストールする

Nginx Webサーバーをインストールします。

sudo apt install -y nginx

バージョンを確認してください。

sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)

PythonとLexiconをインストールする

acme.shとVultr APIを使用してLet's Encryptからワイルドカード証明書を取得するプロセスの最初のステップとして、PythonLexiconをインストールする必要があります。Lexiconは、複数のDNSプロバイダーのDNSレコードを標準化された方法で操作する方法を提供するPythonパッケージです。

システムにまだインストールされていない場合は、Pythonをインストールします。

sudo apt install -y python3

バージョンを確認して、インストールを確認します。

python3 --version
# Python 3.7.3

辞書ツールをインストールします。辞書とは、さまざまなDNSプロバイダーのDNSレコードを標準化された方法で操作できるPythonツールです。

sudo apt install -y lexicon

辞書のバージョンを確認してください。

lexicon --version
# lexicon 3.0.8

acme.shクライアントをインストール

Acme.shLet's Encryptを介して署名付き証明書を取得するプロセスを自動化する、純粋にシェル(Unixシェル)言語で記述されたACMEプロトコルクライアントです。ACME v1とACME v2をサポートしています。最も重要なのは、ACME v2ワイルドカード証明書をサポートしています。このセクションでは、Acme.shスクリプトをインストールします。

注: / アクセスは必要ありませんが、user を使用rootしてインストールすることをお勧めします。acme.shrootsudo

root作成している場合は、通常のユーザーからユーザーに切り替えます。

sudo su - root

をダウンロードしてインストールしacme.shます。

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd

バージョンを確認してください。

acme.sh --version
# v2.8.2

Let's Encryptからワイルドカード証明書を取得する

ワイルドカード証明書を取得するには、DNS検証方法のみを使用できます。レキシコンとVultr DNS APIを使用して、TXT DNSレコードを操作します。

ドメインのRSAおよびECCワイルドカード証明書を取得します。

# Configure your API key and username
export PROVIDER=vultr
export LEXICON_VULTR_USERNAME="[email protected]"
export LEXICON_VULTR_TOKEN="XXXXXXXXXXXXXXX"

# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256

ドメイン名に置き換えることexample.comを忘れずに、Vultr APIプレースホルダー値を独自のものに置き換えてください。

上記のコマンドを実行すると、証明書とキーは次の場所にあります。

  • RSAの場合:~/.acme.sh/example.comディレクトリ。
  • ECC / ECDSAの場合:~/.acme.sh/example.com_eccディレクトリ。

フォルダー内の証明書ファイルは使用しないで~/.acme.sh/ください。これらは内部でのみ使用され、ディレクトリ構造は将来変更される可能性があります。

証明書を一覧表示するには、次を実行します。

acme.sh --list

本番環境で証明書を保存するためのフォルダーを作成します。/etc/letsencryptディレクトリを使用しています。

sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

サーバーに本番用の証明書をインストール/コピーします。

# RSA
acme.sh --install-cert -d example.com \
        --cert-file /etc/letsencrypt/example.com/cert.pem \
        --key-file /etc/letsencrypt/example.com/private.key \
        --fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
        --cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
        --key-file /etc/letsencrypt/example.com_ecc/private.key \
        --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

Let's Encryptからワイルドカード証明書を取得できたので、Nginx Webサーバーを構成する必要があります。すべての証明書は60日ごとに自動的に更新されます。

希望する場所に証明書を取得してインストールしたら、rootユーザーから通常のsudoユーザーにログアウトしてsudo、必要に応じてサーバーを引き続き管理できます。

exit

Nginx Webサーバーを構成する

実行sudo vim /etc/nginx/sites-available/example.com.confして、ファイルに次の内容を入力します。出現箇所をすべてexample.com独自のドメイン名に置き換えます。

server {

  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com *.example.com;
  root /var/www/example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

}

example.com.confファイルをsites-enabledディレクトリにリンクして、新しい構成をアクティブにします。

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Nginx構成をテストします。

sudo nginx -t

Nginxをリロードします。

sudo systemctl reload nginx.service

それでおしまい。acme.sh、Lexicon、Vultr APIを使用して、ワイルドカード証明書をNginxにデプロイしました。ワイルドカード証明書は、動的に生成される複数の第1レベルのサブドメインを保護する場合に役立ちます。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。