絖綛 N@i.jp  昨日:00031073
 今日:00046996
 総計:00078069
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:04/16 19:55


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

Let's Encryptで常時SSL化してみた話(サーバ証明書と秘密鍵をApache2の設定に反映する〜)

悪夢の自己(オレオレ)証明書を置き換えよう


5. サーバ証明書と秘密鍵をApache2の設定に反映する

 Apache2 の "/usr/local/apache2/copnf/extra/httpd-ssl.conf"ファイルを修正し、自己(オレオレ)証明書を使用していた箇所を Let's encrypt から取得した証明書に書き換える。

$ sudo vi /usr/local/apache2/copnf/extra/httpd-ssl.conf
# 変更箇所は以下の部分
SSLCertificateFile "/etc/letsencrypt/live/y-naito.ddo.jp/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/y-naito.ddo.jp/privkey.pem"

6. Apache2の http→https リダイレクト設定

 これまでずっと http で運用してきたので、検索エンジンにヒットする記事や誰かにブックマークされているURLは http ばかりだろう。また、自分が書いた過去記事へのリンクも http だが、これらを全部修正するのには大変な手間がかかる(正直やってられない)。
 そこで、http での接続を httpsに転送してやるようにする。これをリダイレクトと言い、いくつかの方法が存在するが、ここでは mod_rewrite を使用している。

$ sudo vi /usr/local/apache2/conf/httpd.conf
# 先頭の#を削除
#LoadModule rewrite_module modules/mod_rewrite.so
↓
LoadModule rewrite_module modules/mod_rewrite.so

〜
# 以下を追加
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !/.well\-known/acme\-challenge/.*
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,R=301]
</IfModule>

注)「¥」は実際には半角の「\」(バックスラッシュ)。

 http でアクセスして来たら全部 https に書き換えてやれば良いわけだが、".well-known/acme-challenge/"に対する httpアクセスだけは除外している(RewriteCondを複数行続けると、それらはAND条件になる)。この場所は証明書の取得の際に作成したディレクトリで、証明書の更新の際も Let's encrypt が HTTPプロトコルでアクセスして来るので、https にリダイレクトされては都合が悪いからだ。

 また、httpsへリダイレクトできるようになったら、HSTS(HTTP Strict Transport Security)も導入した方が良いだろう。HSTSとは、httpで接続すると httpsへリダイレクトし、以降そのドメインへの接続はすべて httpsとする機能で、主要なWebブラウザでは殆どサポートされている。

 Apache2 での設定は"/usr/local/apache2/conf/extra/httpd-ssl.conf"に以下のように"Header set"を追加する。

<VirtualHost _default_:443>
〜
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
〜
</VirtualHost>

7. Apache再起動

 設定を反映するため、Apache2 を再起動する。

$ sudo /usr/local/apache2/bin/apachectl configtest
Syntax OK
$ sudo /usr/local/apache2/bin/apachectl restart
$ 

 この後、"http://y-naito.ddo.jp/" にアクセスし、"https://y-naito.ddo.jp/"の方へリダイレクトされてSSL通信になるか、証明書が正しいかを確認する。
 ウチのホームページの証明書は以下のとおり Let's Encryptによって認証されたものになり、これで自己(オレオレ)証明書のようにWebブラウザにシバかれることも無くなった。


< 過去の記事 [ 1月の 自宅サーバ リスト ] 新しい記事 >

2019 calendar
1月
12345
6789101112
13141516171819
20212223242526
2728293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.