ヘルプ:Webサーバー間通信内容暗号化にRapidSSLを導入(CentOS7)
メインページ > ヘルプ:目次 > ヘルプ:自宅サーバー構築(CentOS7) > Webサーバー間通信内容暗号化にRapidSSLを導入(CentOS7)
SSLを導入しないとなぁと思っていたので、自宅サーバーにRapid-SSL 年額4300円(税込み)を導入してみました。(Apache+mod_SSL+RapidSSL)
Rapid-SSL から SSL サーバー証明書を取得する
まず、申請に必要な CSR ファイルの作成から行います。
秘密キーの生成
SSL サーバー証明書に必要な秘密鍵を生成する。
[root@host4 ~]# mkdir ssl-key [root@host4 ~] openssl genrsa -des3 -out ./ssl-key/ssl-site2.key 2048 ・ ・ Enter pass phrase for ./ssl-key/ssl-site2.key: ← 任意のパスワードを応答※表示はされない Verifying - Enter pass phrase for ./ssl-key/ssl-site2.key: ← 任意のパスワードを応答※表示はされない
Webサーバー起動時にパスワードを要求されないようにするためサーバー用秘密鍵からパスワード削除。
[root@host3 ~]# openssl rsa -in ./ssl-key/ssl-site2.key -out ./ssl-key/ssl-site2.key Enter pass phrase for ./ssl-key/ssl-site2.key: ← サーバー用秘密鍵・証明書作成時のパスワード応答※表示はされない writing RSA key
このようにすることで、SSL サーバー証明書に必要な秘密鍵を "./ssl-key/ssl-site2.key" として生成することができました。秘密鍵が生成できたら、それを用いて CSR ファイルを生成します。
CSRファイルを生成
秘密鍵が生成できたら、それを用いて CSR ファイルを生成します。
[root@host4 ~]# openssl req -new -key ./ssl-key/ssl-site2.key -out ./ssl-key/ssl-site2.csr
Country Name (2 letter code) | 日本の場合は "JP" と 2 文字で入力します。 |
State or Province Name (full name) | 都道府県名を入力します。例えば "Tokushima" 等になるのでしょうか。 |
Locality Name (eg, city) [Default City] | 市区町村名を入力します。例えば "Tokushima-shi" となるのでしょうか。 |
Organization Name (eg, company) | 組織名を入力します。個人の場合はドメインの登録者名で良いようです。 |
Organizational Unit Name (eg, section) | 組織の部門名を入力します。不要な場合は入力しなくても良いようです。 |
Common Name | SSL 証明書を設置する Web サイトのドメイン名を入力します。例えば "http://sudachi.jp/" であれば "sudachi.jp" となります。 |
Email Address | 承認メールアドレスを入力します。ここで設定できるのは、ドメイン取得時に公開連絡窓口として設定したアドレスか、または "コモンネーム" に設定したドメインの "webmaster@" や "admin@" や "info@" といった、特定のメールアドレスだけとなるそうなので注意が必要です。 |
A challenge password | 設定しません。 |
An optional company name | 設定しません。 |
これで、先ほど作成した秘密鍵に対応した CSR ファイル "./ssl-key/ssl-site2.csr" の生成できました。これをもって、SSL サーバー証明書の取得申請を行う運びとなります。
SSLサーバ証明書申込
Rapid-SSL.jp の申し込みページへアクセスすると、そこには申請における注意事項が掲載されています。それらに目を通した上で、申込フォームに必要事項を入力します。必要事項は契約期間などといった簡単なものがほとんどでした。
クレジットカード払いの場合だと、すぐに "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-site2.crt -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE-----
秘密鍵コピー
[root@host4 ~]# cp ./ssl-key/ssl-site2.key /etc/pki/tls/certs/ssl-site2.key
SSLサーバ中間証明書
メールで送られてきた 中間証明書(INTERMEDIATE CA) の "-----BEGIN CERTIFICATE-----" を含むそこから "-----END CERTIFICATE-----" を含むそこまで貼り付けます。
[root@host4 ~]# vi /etc/pki/tls/certs/ssl-site2-chain.crt -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE-----
クロスルート仕様の中間証明書
メールに、クロスルート仕様の中間証明書のリンクがあるので、そこから入手するし全文を貼り付ける。
[root@host4 ~]# vi /etc/pki/tls/certs/ssl-site2-chain.crt -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ・ ・ -----END CERTIFICATE-----
パーミッション変更
安全のため所有者以外が読み書きできなくする。
[root@host4 ~]# chmod 600 /etc/pki/tls/certs/ssl-site2*
WebサーバーSSL設定
SSL設定
Apache に SSL設定の設定をします。
[root@host4 ~]# vi /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/pki/tls/certs/ssl-site2.crt ← サーバー用証明書を指定 SSLCertificateKeyFile /etc/pki/tls/certs/ssl-site2.key ← サーバー用秘密鍵を指定 SSLCertificateChainFile /etc/pki/tls/certs/ssl-site2-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 ← SSLv2,SSLv3を無効化 # 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@host3 ~]# 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