バーチャルホストの通信内容暗号化にCertbotを導入(AlmaLinux)
提供: すだちWiki
メインページ > Category:自宅サーバー > AlmaLinux 8 で自宅サーバー構築 > バーチャルホストの通信内容暗号化にCertbotを導入(AlmaLinux)
- すでに稼働しているWebサーバー(Apache)にバーチャルホストの設定を行ったので忘れないために書いておく。
バーチャルホスト設定
バーチャルホスト用ドキュメントルートディレクトリ作成
- 全ての、ドメイン名で作成。
[root@host4 ~]# mkdir /var/www/html/sudachi.jp [root@host4 ~]# mkdir /var/www/html/awajp.com
ディレクトリの所有者変更
- 全ての、ドメイン名の所有者変更。
[root@host4 ~]# chown -R sysop. /var/www/html/
未定義ホスト用バーチャルホスト設定ファイル作成
※バーチャルホスト未定義ホスト名でアクセス時にアクセスを拒否する
[root@host4 ~]# vi /etc/httpd/conf.d/virtualhost-00.conf
<VirtualHost _default_:80>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>
メインホスト用バーチャルホスト設定ファイル作成
[root@host4 ~]# vi /etc/httpd/conf.d/virtualhost-sudachi.jp.conf
<VirtualHost *:80>
ServerName sudachi.jp
ServerAlias www.sudachi.jp
DocumentRoot /var/www/html/sudachi.jp
</VirtualHost>
追加ホスト用バーチャルホスト設定ファイル作成
[root@host4 ~]# vi /etc/httpd/conf.d/virtualhost-awajp.com.conf
<VirtualHost *:80>
ServerName awajp.com
ServerAlias wwww.awajp.com
DocumentRoot /var/www/html/awajp.com
ErrorLog logs/awajp.com-error_log
CustomLog logs/awajp.com-access_log combined env=!no_log
</VirtualHost>
「httpd.conf」の文法チェック
[root@host4 ~]# apachectl configtest Syntax OK
Webサーバー再起動
[root@host4 ~]# systemctl restart httpd
ドメイン名に対するサーバー証明書取得
Certbotではサーバー名の認証をWeb経由で行うため、サーバー証明書に指定するサーバー名で外部からWebアクセスできるようにしておく必要がある。
ドメイン名に対する SSL/TLS サーバ証明書を取得する場合。
Certbotクライアントインストール
証明書を取得するためのツール Certbot クライアントをインストールします。
[root@host4 ~]# yum --enablerepo=epel -y install certbot
テスト用のサーバ証明書取得
Let's Encrypt 認証局では、ドメイン名あたりの SSL/TLS サーバ証明書の発行枚数について、制限を設けています。そのため、試験段階においては --test-cert オプションを付けて、テスト用のサーバで使ってみることをお勧めします。
※テスト用のサーバで発行したテスト用の証明書は、ブラウザにおいてセキュリティ警告が表示され、信頼された証明書として扱われません。
[root@host4 ~]# certbot certonly --webroot -w /var/www/html/awajp.com -d awajp.com -m *****@awajp.com --test-cert
サーバー証明書取得
[root@host4 ~]# certbot certonly --webroot -w /var/www/html/awajp.com -d awajp.com -m *****@awajp.com --agree-tos ・ ・ ・ What would you like to do? ------------------------------------------------------------------------------- 1: Keep the existing certificate for now 2: Renew & replace the cert (limit ~5 per 7 days) ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 ← 2を選択(証明書を更新し、交換する)
暗号化通信用バーチャルホスト設定
メインホスト用バーチャルホスト設定
ファイル編集
[root@host4 ~]# vi /etc/httpd/conf.d/virtualhost-sudachi.jp.conf
<VirtualHost *:80>
ServerName sudachi.jp
ServerAlias www.sudachi.jp
DocumentRoot /var/www/html/sudachi.jp
# SSL通信にリダイレクト
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
/etc/httpd/conf.d/ssl.confの<VirtualHost _default_:443>~</VirtualHost>をコピーしてここに貼り付けて下記のみ修正
<VirtualHost *:443> ← *に変更 DocumentRoot "/var/www/html/sudachi.jp" ← メインホスト用ドキュメントルートを指定 ServerName sudachi.jp:443 ← メインホストサーバー名を指定
追加ホスト用バーチャルホスト設定
設定ファイル編集
[root@host4 ~]# vi /etc/httpd/conf.d/virtualhost-awajp.com.conf
<VirtualHost *:80>
ServerName awajp.com
DocumentRoot /var/www/html/awajp.com
ErrorLog logs/awajp.com-error_log
CustomLog logs/awajp.com-access_log combined env=!no_log
# SSL通信にリダイレクト
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
Protocols h2 http/1.1
ServerName awajp.com:443 ← 追加ホストサーバー名を指定
DocumentRoot "/var/www/html/awajp.com" ← 追加ホスト用ドキュメントルートを指定
ErrorLog logs/awajp.com-error_log ← 追加ホスト用SSLエラーログファイル名を指定
CustomLog logs/awajp.com-access_log combined env=!no_log ← 追加ホスト用SSLアクセスログファイル名を指定
Alias /awstatsreport /var/www/html/awajp.com/awstatsreport
<Location "/awstatsreport">
Require all denied
Require ip 127.0.0.1
Require ip 192.168.1.0/24
</Location>
# SSL Engine Switch:
SSLEngine on
## SSL Protocol support:
# SSLv2, SSLv3, TLSv1, TLSv1.1 を無効化
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
## SSL Cipher Suite:
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
## Speed-optimized SSL Cipher configuration:
SSLHonorCipherOrder on
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
## Server Certificate:
SSLCertificateFile /etc/letsencrypt/live/awajp.com/cert.pem ← 追加ホスト用公開鍵を指定
## Server Private Key:
SSLCertificateKeyFile /etc/letsencrypt/live/awajp.com/privkey.pem ← 追加ホスト用秘密鍵を指定
## Server Certificate Chain:
SSLCertificateChainFile /etc/letsencrypt/live/awajp.com/chain.pem ← 追加ホスト用中間証明書を指定
## SSL Protocol Adjustments:
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>
ssl.conf編集
[root@host4 ~]# vi /etc/httpd/conf.d/ssl.conf --削除(ここから)-- <VirtualHost _default_:443> ・ ・ ・ </VirtualHost> --削除(ここまで)--
「httpd.conf」の文法チェック
[root@host4 ~]# apachectl configtest Syntax OK
Webサーバー再起動
[root@host4 ~]# systemctl restart httpd
動作確認
[root@host4 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2017-05-06 13:45:58 JST; 46s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 29305 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 29311 (httpd)
Status: "Total requests: 9; Current requests/sec: 0.111; Current traffic: 1.3KB/sec"
CGroup: /system.slice/httpd.service
├─29311 /usr/sbin/httpd -DFOREGROUND
├─29312 /usr/sbin/httpd -DFOREGROUND
├─29313 /usr/sbin/httpd -DFOREGROUND
├─29314 /usr/sbin/httpd -DFOREGROUND
├─29315 /usr/sbin/httpd -DFOREGROUND
├─29316 /usr/sbin/httpd -DFOREGROUND
├─29317 /usr/sbin/httpd -DFOREGROUND
├─29318 /usr/sbin/httpd -DFOREGROUND
├─29322 /usr/sbin/httpd -DFOREGROUND
├─29323 /usr/sbin/httpd -DFOREGROUND
└─29324 /usr/sbin/httpd -DFOREGROUND
5月 06 13:45:57 host3.sudachi.jp systemd[1]: Starting The Apache HTTP Server...
5月 06 13:45:58 host3.sudachi.jp systemd[1]: Started The Apache HTTP Server.
