search
LoginSignup
20
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

【apache】conohaのUbuntu18.04にLet's EncryptでSSL設定するまで

ubuntuでSSL設定するのが初めてだったのでまとめました

前提

(1) httpで設定したドメインにアクセスできる状態にあること
(2) ubuntuのバージョンは18.04であること

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であること

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の自動更新についてはまた今度〜

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
20
Help us understand the problem. What are the problem?