バーチャルホストの通信内容暗号化にFujiSSLを導入(AlmaLinux)

提供:あわ自由帳

メインページ > Category:自宅サーバー > AlmaLinux 8 で自宅サーバー構築  > バーチャルホストの通信内容暗号化にFujiSSLを導入(AlmaLinux)

FujiSSL から SSL サーバー証明書を取得する

まず、申請に必要な CSR ファイルの作成から行います。

秘密キーの生成

SSL サーバー証明書に必要な秘密鍵を生成する。

[root@host4 ~]# mkdir ssl-key 

[root@host4 ~] openssl genrsa -des3 -out ./ssl-key/ssl-awajp.com.key 2048
・
・
Enter pass phrase for ./ssl-key/ssl-awajp.com.key: ← 任意のパスワードを応答※表示はされない
Verifying - Enter pass phrase for ./ssl-key/ssl-awajp.com.key: ← 任意のパスワードを応答※表示はされない

Webサーバー起動時にパスワードを要求されないようにするためサーバー用秘密鍵からパスワード削除。

[root@host4 ~]# openssl rsa -in ./ssl-key/ssl-awajp.com.key -out ./ssl-key/ssl-awajp.com.key
Enter pass phrase for ./ssl-key/ssl-awajp.com.key: ← サーバー用秘密鍵・証明書作成時のパスワード応答※表示はされない
writing RSA key

このようにすることで、SSL サーバー証明書に必要な秘密鍵を "./ssl-key/ssl-awajp.com.key" として生成することができました。秘密鍵が生成できたら、それを用いて CSR ファイルを生成します。

CSRファイルを生成

秘密鍵が生成できたら、それを用いて CSR ファイルを生成します。

※入力には以下の点にご注意ください。

半角の英数字64文字以内で入力してください 識別名に、以下の文字 は使用できません ! ” # $ % & ( ) * + / ; < > ? @ [ ¥ ] ^ _ ` { | } ~ 「&」が含まれる場合は、半角英字の and 等に置き換えてください スペースのみの入力は控えてください。 スペースのみの入力項目がある場合、 証明書が発行されません CSRは、emailAddressを含めないよう生成ください。 emailAddress を含んだCSRを送付いただいても、 弊社発行の証明書には emailAddress は含まれません。

[root@host4 ~]# openssl req -new -key ./ssl-key/ssl-sudachi.jp.key -out ./ssl-key/ssl-sudachi.jp.csr
フィールド 説明
Country Name (2 letter code) 国を示す2文字のISO略語 JP
State or Province Name (full name) 組織が置かれている都道府県 Tokushima
Locality Name (eg, city) [Default City] 組織が置かれている市区町村 Tokushima-shi
Organization Name (eg, company) 組織の名称(個人の場合はドメインの登録者名) awajp.com
Organizational Unit Name (eg, section) 組織の部門名(入力しなくても良い) System
Common Name Webサーバーのコモンネイム awajp.com
Email Address 入力不要
A challenge password 入力不要
An optional company name 入力不要

これで、先ほど作成した秘密鍵に対応した CSR ファイル "./ssl-key/ssl-mail.csr" の生成できました。これをもって、SSL サーバー証明書の取得申請を行う運びとなります。

バーチャルホスト設定

バーチャルホスト用ドキュメントルートディレクトリ作成

  • 全ての、ドメイン名で作成。
[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
    DocumentRoot /var/www/html/sudachi.jp
</VirtualHost>

追加ホスト用バーチャルホスト設定ファイル作成

[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
</VirtualHost>

Webサーバー再起動

[root@host4 ~]# systemctl restart httpd

暗号化通信用バーチャルホスト設定

サーバー証明書取得

追加ホストについて、サーバー証明書(Certbot)の「サーバー証明書取得」を実施。

メインホスト用バーチャルホスト設定

ファイル編集

[root@host4 ~]# vi /etc/httpd/conf.d/virtualhost-sudachi.jp.conf
<VirtualHost *:80>
    ServerName 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/pki/tls/certs/ssl-awajp.com.crt ← 追加ホスト用公開鍵を指定

    ## Server Private Key:
    SSLCertificateKeyFile /etc/pki/tls/certs/ssl-awajp.com.key ← 追加ホスト用秘密鍵を指定

    ## Server Certificate Chain:
    SSLCertificateChainFile /etc/pki/tls/certs/ssl-awajp.com-chain.crt ← 追加ホスト用中間証明書を指定

    ## 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.