ubuntuでSSL設定するのが初めてだったのでまとめました
前提
(1) httpで設定したドメインにアクセスできる状態にあること
(2) ubuntuのバージョンは18.04であること
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
(3) apacheのバージョンは2.4.29であること
$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2018-10-10T18:59:25
手順
ファイアウォールの穴あけ
ubuntuではファイアウォールの穴あけが必要らしいので、port443をあける。
$ sudo ufw status
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
3306 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
3306 (v6) ALLOW Anywhere (v6)
$ sudo ufw allow 443
$ sudo ufw reload
$ sudo ufw status
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
3306 ALLOW Anywhere
443 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
3306 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
これでファイアウォールの設定は完了。
Let's Encryptで証明書発行
インストールする。
$ sudo apt install certbot
証明書等の作成をする。以下のコマンドを叩けばおk。ドキュメントルートやドメイン、メールアドレスは自分の環境に合わせてください。
www.sample.jpも必要であれば-d www.sample.jpも-d sample.jpの後に入れてください。
$ certbot certonly --webroot --webroot-path /var/www/html/ -d sample.jp -m yourmail@info
このコマンドの後に2,3問質問されるので答えていけば、/etc/letsencrypt/live/sample.jp以下に必要なファイル群が生成されます。
$ ls /etc/letsencrypt/live/sample.jp/
cert.pem chain.pem fullchain.pem privkey.pem README
これでLet's Encryptの設定は終わりです。
ちなみにこの証明書は90日間しか有効じゃないので、90日たったら更新してください。
apacheの設定変更
apacheのsslの設定ファイルを設定する
$ vi /etc/apache2/sites-available/default-ssl.conf
<VirtualHost _default_:443>
ServerAdmin webmaster@sample.jp ←変更
DocumentRoot /var/www/html
ServerName sample.jp ←変更
ServerAlias www.sample.jp ←wwwも必要であれば
SSLCertificateFile /etc/letsencrypt/live/sample.jp/cert.pem ←変更
SSLCertificateKeyFile /etc/letsencrypt/live/sample.jp/privkey.pem ←変更
SSLCertificateChainFile /etc/letsencrypt/live/sample.jp/chain.pem ←変更
上記設定変更を完了後にssl有効化して、apacheを再起動する。
$ a2enmod ssl
$ a2ensite default-ssl
$ service apache2 restart
うまくいっていればこれでhttpsアクセスできるようになっています。
Let's Encryptの自動更新についてはまた今度〜