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

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

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

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

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

Linux機能の操作

Linux機能の操作

はじめにLinux機能は、プロセスおよびバイナリ実行可能ファイルに通常の特定の特権を付与するLinuxカーネルの特別な属性です

Apache Web Serverを実行しているCentOS 7にSSLを暗号化してインストールする方法

Apache Web Serverを実行しているCentOS 7にSSLを暗号化してインストールする方法

はじめにこのチュートリアルでは、Apache WebサーバーにTLS / SSL証明書をインストールする手順を学習します。終了したら、すべてのトラフィック

MongoDBの保護

MongoDBの保護

MongoDBはデフォルトでは安全ではありません。MongoDBをインストールし、認証用に構成せずにMongoDBを起動する場合は、時間がかかります

Ubuntuにrkhunterをインストールする方法

Ubuntuにrkhunterをインストールする方法

Rkhunterは、Linuxサーバー上のルートキットを見つけるソフトウェアです。ルートキットはハッカーによってインストールされるため、サーバーに常にアクセスできます。このドキュメントでは、youll b

CentOS 6またはCentOS 7でマスター/クライアントモデルを使用するためのIcinga2の変更

CentOS 6またはCentOS 7でマスター/クライアントモデルを使用するためのIcinga2の変更

Icinga2は強力なモニタリングシステムであり、マスタークライアントモデルで使用すると、NRPEベースのモニタリングチェックの必要性を置き換えること���できます。マスタークリエン

Google認証システムを使用してUbuntu 14.04でSSHの2要素認証(2FA)を設定する方法

Google認証システムを使用してUbuntu 14.04でSSHの2要素認証(2FA)を設定する方法

別のシステムを使用していますか?SSHを介してサーバーにログインする方法はいくつかあります。メソッドには、パスワードログイン、キーベースのログイン、2つの要素が含まれます。

Apacheでmod_evasiveを有効にする

Apacheでmod_evasiveを有効にする

Mod_evasiveは、HTTP DoS攻撃またはブルートフォース攻撃が検出されたときに自動的にアクションを実行するApache用のモジュールです。Mod_evasiveは、

SSHキーを使用して非rootユーザーにログインする

SSHキーを使用して非rootユーザーにログインする

Vultrには、新しいインスタンスを作成するときにSSHキーをプレインストールできる機能があります。これにより、サーバーのrootユーザーにアクセスできますが、

Google Authenticatorを使用してCentOS 6でSSHの2要素認証(2FA)を設定する方法

Google Authenticatorを使用してCentOS 6でSSHの2要素認証(2FA)を設定する方法

SSHポートを変更し、ポートノッキングを設定し、SSHセキュリティのために他の調整を行った後、おそらくあなたを保護するもう1つの方法があるでしょう

CentOSへのLogjam攻撃からのNGINXの保護

CentOSへのLogjam攻撃からのNGINXの保護

さて、実際のところ、別のSSL脆弱性があります。技術的にはそれは実際には脆弱性ではなく、私たちが依存しているプロトコルの内部の単なる穴です

Ubuntu 16.04にOpenVAS脆弱性スキャナーをインストールする方法

Ubuntu 16.04にOpenVAS脆弱性スキャナーをインストールする方法

はじめにOpenVASは、脆弱性スキャンと脆弱性管理に使用できるオープンソーススイートです。Open Vulnerabilitの略

CentOS 7でSELinuxを無効にする方法

CentOS 7でSELinuxを無効にする方法

Security-Enhanced Linuxの略語であるSELinuxは、Linuxオペレーティングシステムのセキュリティ拡張機能です。多くのシステムをブロックするラベリングシステムです。

Ubuntu 16.04での自己署名TLS / SSL証明書を使用したApacheの設定

Ubuntu 16.04での自己署名TLS / SSL証明書を使用したApacheの設定

SSLとその後継であるTLS(Secure Sockets Layer / Transport Layer Security)は、クライアントとサーバーの間に暗号化の層を追加します。なしで

Ubuntu 14.04で複雑でないファイアウォール(UFW)を構成する

Ubuntu 14.04で複雑でないファイアウォール(UFW)を構成する

独自のサーバーを実行する場合、セキュリティは非常に重要です。承認されたユーザーのみがサーバー、構成、およびサービスにアクセスできるようにする必要があります。私

OpenBSD 6.1でLets Encryptを使用する

OpenBSD 6.1でLets Encryptを使用する

Letから独自の無料の有効なSSL証明書を取得できるようになったため、だれもが独自のSSL証明書を作成する必要がなくなりました。

暗号化しましょう:TLS-SNI-01からの移行

暗号化しましょう:TLS-SNI-01からの移行

Lets Encryptは、Webサイトを保護するための証明書を生成する無料のサービスです。さまざまなタイプの証明書の生成をサポートします。

Debian 9のNginxでTLS 1.3を有効にする方法

Debian 9のNginxでTLS 1.3を有効にする方法

別のシステムを使用していますか?はじめにTLS 1.3は、RFで提案された標準として2018年に公開されたトランスポート層セキュリティ(TLS)プロトコルのバージョンです。

IPFWとSSHGuardを使用したFreeBSDのセキュリティの強化

IPFWとSSHGuardを使用したFreeBSDのセキュリティの強化

VPSサーバーは侵入者の標的にされることがよくあります。一般的なタイプの攻撃は、何百もの不正なSSHログイン試行としてシステムログに表示されます。セットアップ

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の未来は、日々成長を続けています。