以下を参考に設定しましたが、家の中のLANからはhttps通信ができたのですが、外部からはできませんでした。
何日も考えましたが、なかなかわかりません。
そして2週間して、ふとルーターの設定をまだしていないことに気づきました。
今まで、通常のネット回線からは我がサーバに届くように設定はしていましたが、https通信がサーバに届くように設定をすることを忘れていました。それをすることで、やっとhttps通信ができるようになりました。めでたしめでたし。
Let’s Encrypt導入について(サーバUbuntuServer16.04)
1 httpsはport443を使用するので、ルータ及びサーバのポート設定を行います。
ルータは、それぞれの機種にあったやり方で、サーバについては ufw allow 443 などで。
2 Certbotインストール
説明書には「sudo apt-get install letsencrypt python-letsencrypt-apache」と書いてあるので、それをしましたが、できませんでした。
なので、
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
によるインストールを行いました。
3 SSL/TLS サーバ証明書の取得
操作の途中で、「メールアドレスの入力」や「利用規約への同意」が求められることもあります。
apache2が動作している環境において、複数のドメイン名に対応する1枚の証明書を取得する場合。
./certbot-auto certonly –webroot -w /var/www/example/ -d www.example.com -d example.com -w /var/www/other -d other.example.net -d another.other.example.net
「-w」にDcumentRootを「-d」にドメイン名を入力していきます。
4 各種証明書及び鍵について
3に成功すると、
サーバ証明書(公開鍵)
実体 /etc/letsencrypt/archive/ドメイン名/certN.pem
リンク /etc/letsencrypt/live/ドメイン名/cert.pem
中間証明書
実体 /etc/letsencrypt/archive/ドメイン名/chainN.pem
リンク /etc/letsencrypt/live/ドメイン名/chain.pem
サーバ証明書と中間証明書が結合されたファイル
実体 /etc/letsencrypt/archive/ドメイン名/fullchainN.pem
リンク /etc/letsencrypt/live/ドメイン名/fullchain.pem
秘密鍵
実体 /etc/letsencrypt/live/ドメイン名/fullchain.pem
リンク /etc/letsencrypt/live/ドメイン名/privkey.pem
に作成されます。
5 サイト設定の切替
cd /etc/apache2/sites-available/
a2enmod ssl モジュール設定を有効に
a2ensite default-ssl サイト設定を有効に
service apache2 restart 設定を再読み込みする
反対に、無効にする場合は「a2dismod」「a2dissite」を使う
※この前に、「default」にバーチャルホスト設定をしておくことを忘れずに。
10 証明書の更新
証明書の有効期限が90日なので、自動更新することにします。
今回はCrontabを使用して1か月ごとに強制的に更新します。
~/certbot-auto renew –force-renewal && systemctl status apache2.service
参考文献
Let’sEncrypt総合ポータル
MyDNSとLet’sEncryptを使って、FreeBSD上のapache24
Dynamic DNS と https化 (ownCloud + Raspberry Pi 続き)をhttps化してみた
Let’s Encryptの無料SSL証明書で、ウェブサイトを安全に公開する
コメント