前回 はLet's Encryptを使い単一ドメインのHTTPS化を行いました。
サブドメインの異なる複数サイトを保有している場合は、1枚ずつ証明書を発行するか、ワイルドカード証明書を発行するか、SANs証明書を利用する必要があります。
SANs は Subject Alternative Names の略で、この証明書を利用すると複数ドメインに対応した1枚の証明書が発行できます。
例えば、
という3つのドメインを管理している場合、通常は3枚証明書を発行しますが、SANs証明書を使えば1つにまとめることができます。
Nginxの設定は以下のようにして、全てのドメインでLet's Encryptにトークンを返せるようにしておきます。
server {
listen 80;
server_name example.com www.example.com api.example.com;
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt-challenge;
}
}
certbot-auto コマンドを利用して証明書を発行します。 単純に -d オプションの後に複数ドメインを指定するだけです。
./certbot-auto certonly \
--no-self-upgrade \
-n \
--webroot \
--agree-tos \
--email your-email-address@examle.com \
-w /var/www/letsencrypt-challenge/ \
-d example.com
-d www.example.com
-d api.example.com
Let's encryptから
宛にアクセスがきます。Let's Encryptからのアクセスを正しく返せればSANs証明書が /etc/letsencrypt/live/example.com/ 配下に置かれます。
densan-labs.net (2018-02-05現在) の場合、Let's Encrypt で以下のSANs証明書を発行しています。 Chromeなどのブラウザで証明書をみて、DNS名が複数存在していればSANs証明書が発行できています。