ヘルプ:Webサーバー間通信内容暗号化にFujiSSLを導入(AlmaLinux)

提供:あわ自由帳

メインページ > ヘルプ:目次 > ヘルプ:自宅サーバー構築(AlmaLinux)  > Webサーバー間通信内容暗号化にFujiSSLを導入(AlmaLinux)

SSLを導入しないとなぁと思っていたので、自宅サーバーに格安の FujiSSL を導入してみました。

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

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

秘密キーの生成

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

[root@host4 ~]# mkdir ssl-key 

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

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

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

このようにすることで、SSL サーバー証明書に必要な秘密鍵を "./ssl-key/ssl-sudachi.jp.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) 組織の名称(個人の場合はドメインの登録者名) sudachi.jp
Organizational Unit Name (eg, section) 組織の部門名(入力しなくても良い) System
Common Name Webサーバーのコモンネイム sudachi.jp
Email Address 入力不要
A challenge password 入力不要
An optional company name 入力不要

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

SSLサーバ証明書申込

FujiSSLストアフロント へアクセスすると、そこには申請における注意事項が掲載されています。それらに目を通した上で、申込フォームに必要事項を入力します。必要事項は契約期間などといった簡単なものがほとんどでした。

クレジットカード払いの場合だと、すぐに "SSL 証明書発行承認依頼通知" が送られてきます。

送られてきたメールの URL をクリックして承認画面を表示して、内容事項に間違いなければ 【承認します】 ボタンをクリックします。すると、SSL サーバー証明書が記されたメールが届くので、これで SSL サーバー証明書の発行手続きは完了となります。

サーバー証明書設定

SSL サイト設定の "SSLCertificateFile" と "SSLCertificateKeyFile" と "SSLCertificateChainFile" とに、それぞれ "SSL サーバー証明書" と "秘密鍵" と "中間証明書" とを設定すれば、これで SSL サイトの運営準備が完了します。

SSLサーバー証明書

メールで送られてきた SSLサーバ証明書(X.509形式)の "-----BEGIN CERTIFICATE-----" を含むそこから "-----END CERTIFICATE-----" を含むそこまで貼り付けます。

[root@host4 ~]# vi /etc/pki/tls/certs/ssl-sudachi.jp.crt
-----BEGIN CERTIFICATE-----
・
・
-----END CERTIFICATE-----

秘密鍵コピー

[root@host4 ~]# cp ./ssl-key/ssl-sudachi.jp.key /etc/pki/tls/certs/ssl-sudachi.jp.key

SSLサーバ中間証明書

メールで送られてきた 中間証明書(INTERMEDIATE CA) の "-----BEGIN CERTIFICATE-----" を含むそこから "-----END CERTIFICATE-----" を含むそこまで貼り付けます。

[root@host4 ~]# vi /etc/pki/tls/certs/ssl-sudachi.jp-chain.crt
-----BEGIN CERTIFICATE-----
・
・
-----END CERTIFICATE-----

パーミッション変更

安全のため所有者以外が読み書きできなくする。

[root@host4 ~]# chmod 600 /etc/pki/tls/certs/ssl-sudachi.jp*

WebサーバーSSL設定

mod_sslインストール

[root@host4 ~]# dnf -y install mod_ssl

SSL設定

Apache に SSL設定の設定をします。

[root@host4 ~]# vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/ssl-sudachi.jp.crt ← サーバー用証明書を指定

SSLCertificateKeyFile /etc/pki/tls/certs/ssl-sudachi.jp.key ← サーバー用秘密鍵を指定

SSLCertificateChainFile /etc/pki/tls/certs/ssl-sudachi.jp-chain.crt ← サーバー用中間証明書を指定

SSL Server Test対応

SSL Server TestでA+評価を得るための設定を行う。

[root@host4 ~]# vi /etc/httpd/conf.d/ssl.conf ← SSL設定ファイル編集
#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 ← SSLv2, SSLv3, TLSv1, TLSv1.1 を無効化

#   Speed-optimized SSL Cipher configuration:
#   If speed is your main concern (on busy HTTPS servers e.g.),
#   you might want to force clients to specific, performance
#   optimized ciphers. In this case, prepend those ciphers
#   to the SSLCipherSuite list, and enable SSLHonorCipherOrder.
#   Caveat: by giving precedence to RC4-SHA and AES128-SHA
#   (as in the example below), most connections will no longer
#   have perfect forward secrecy - if the server's key is
#   compromised, captures of past or future traffic must be
#   considered compromised, too.
#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
#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 ← 追加
SSLHonorCipherOrder on ← 追加


Header always set Strict-Transport-Security "max-age=15768000" ← 追加
</VirtualHost>

「httpd.conf」の文法チェック

[root@host4 ~]# apachectl configtest
Syntax OK

Apache設定反映

  • Apache再起動
[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 月 2016-01-11 11:20:19 JST; 23s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 7419 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 7425 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─7425 /usr/sbin/httpd -DFOREGROUND
           ├─7427 /usr/sbin/httpd -DFOREGROUND
           ├─7428 /usr/sbin/httpd -DFOREGROUND
           ├─7429 /usr/sbin/httpd -DFOREGROUND
           ├─7430 /usr/sbin/httpd -DFOREGROUND
           └─7431 /usr/sbin/httpd -DFOREGROUND