LoginSignup
3
3

More than 3 years have passed since last update.

Apache2のSSL対応

Posted at

Apacheの準備

$ sudo a2enmod ssl rewrite
$ sudo a2ensite default-ssl
$ sudo systemctl restart apache2
$ nmap localhost

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-18 21:00 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000064s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
80/tcp   open  http
443/tcp  open  https

上から順に解説していく。
1. SSL通信モジュール、リダイレクトモジュールの適用
2. SSLの設定ファイル有効化
3. Apache2のリスタート
4. SSL通信のチェック

https://[サーバIP]でアクセスしてindex.htmlが表示されることを確認する。

もし表示されなかったら

  • sudo ufw statusで443ポートが開放されているか確認する
  • ドキュメントルートを変更していないか確認する
    • 変更している場合はdefault-ssl.confのドキュメントルートを修正する

サーバ証明書の取得

ここではLet's Encryptというサイトで無料のサーバ証明書を取得して、使用する。

# apt install -y certbot openssl
# certbot certonly --webroot -w [ドキュメントルート] -d [ドメイン名]

同様に各行の解説をしていきます
1. certbot(Let's Encrypt用)、openssl(OpenSSL用)のインストール
2. certbotを利用してサーバ証明書を取得

certbot certonly --webroot -w [ドキュメントルート] -d [ドメイン名]で入力する情報の解説である
1. 連絡用メールアドレスの入力
2. 規約への同意
3. メーリングリストへの登録

ファイルができているか確認

/etc/letsencrypt/live/[ドメイン名]
# ls -l
合計 4
-rw-r--r-- 1 root root 692  9月 18 18:48 README
lrwxrwxrwx 1 root root  37  9月 18 18:50 cert.pem -> ../../archive/disk.mydns.jp/cert2.pem
lrwxrwxrwx 1 root root  38  9月 18 18:50 chain.pem -> ../../archive/disk.mydns.jp/chain2.pem
lrwxrwxrwx 1 root root  42  9月 18 18:50 fullchain.pem -> ../../archive/disk.mydns.jp/fullchain2.pem
lrwxrwxrwx 1 root root  40  9月 18 18:50 privkey.pem -> ../../archive/disk.mydns.jp/privkey2.pem

Apache2の設定

SSL証明書の適用

/etc/apache2/sites-available/default-ssl.conf
32 SSLCertificateFile      /etc/letsencrypt/live/disk.mydns.jp/cert.pem
33 SSLCertificateKeyFile /etc/letsencrypt/live/disk.mydns.jp/privkey.pem
34 SSLCertificateChainFile /etc/letsencrypt/live/disk.mydns.jp/chain.pem

上記のように各行を変更する。
https://[サーバIP]でアクセスしてindex.htmlが表示されることを確認する。

HTTPからHTTPSへのリダイレクト

/etc/apache2/sites-available/000-default.conf
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[ドメイン名]
RewriteRule ^/(.*)$ https://[ドメイン名]/$1 [R=301,L]

上記を追記することでHTTPSのページに必ずリダイレクトさせることができる。

Let's Encryptの自動更新

/etc/crontab
* * * /10 * * root certbot renew

10日ごとに確認する場合は上記のように追記する。

設定の適用と確認

$ sudo systemctl restart apache2
$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-09-18 19:17:30 JST; 2h 40min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 13140 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 13159 (apache2)
      Tasks: 8 (limit: 9388)
     Memory: 15.4M
     CGroup: /system.slice/apache2.service
             ├─13159 /usr/sbin/apache2 -k start
             ├─13160 /usr/sbin/apache2 -k start
             ├─13161 /usr/sbin/apache2 -k start
             ├─13162 /usr/sbin/apache2 -k start
             ├─13163 /usr/sbin/apache2 -k start
             ├─13164 /usr/sbin/apache2 -k start
             ├─13168 /usr/sbin/apache2 -k start
             └─13234 /usr/sbin/apache2 -k start

 9月 18 19:17:30 hostname systemd[1]: Starting The Apache HTTP Server...
 9月 18 19:17:30 hostname systemd[1]: Started The Apache HTTP Server.

上記のようになれば成功

あとはhttps://[ドメイン名]http://[ドメイン名]にアクセスして両方ともhttps://[ドメイン名]に接続できていることが確認できればOK

3
3
0

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
  3. You can use dark theme
What you can do with signing up
3
3