サーバーに SSLの設定をしてみる。
サーバーにSSLの設定をしたのでメモです。
脆弱性のこととかセキュリティー関連のことはまだちゃんとまとめられてないので
また書きたいなあ、なんて思ってます。。。
SSLって?
SSL(Secure Socket Layer)とは、インターネット上で情報を暗号化し、送受信できるプロトコル(一般にhttps://と表記されるもの)。 顧客情報やクレジットカード情報、その他、管理情報などを扱う際はこのSSLを利用してセキュアに通信する必要があります。
1. mod_sslをインストール
ApacheからOpenSSLを利用するためには、ApacheとOpenSSLと連携させるモジュールが必要なので、mod_sslをインストールします。
まずは入っているか確認。
yum list installed | grep mod_ssl
入ってなかったら
yum -y install mod_ssl
でインストールします。
2. 秘密鍵の作成
秘密鍵の作成をします。
SSLのCSRの発行は最初に秘密鍵を作ってその文字列からCSRを発行します。
openssl genrsa -out user_key.pem 2048
user_key部分は自由に変えてください。
※パスフレーズ(パスワード)なしで設定する時のコマンド
3. CSRの作成
CSR(Certificate Signing Request)とは、SSL証明書を作成する元になる情報が記載されているものです。 内容は、組織名やサーバのアドレスなどの方法です。
openssl req -new -key user_key.pem -out user_csr.pem
Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) [Default City]:Chiyoda-ku Organization Name (eg, company) [Default Company Ltd]:Example Inc. Organizational Unit Name (eg, section) []:(※省略可) Common Name (eg, your name or your server's hostname) []:example.com Email Address []:(※省略可) A challenge password []:(※省略可) An optional company name []:(※省略可)
間違えないように気をつけて入力します。 作成した後は以下のようなサイトで確認します。
https://sstool.cybertrust.ne.jp/support_tool/index02.php
※コマンドでも確認できますが、今回は省略します。。。
4. 証明書ファイルの作成
証明書発行メール本文中にある(-----BEGIN CERTIFICATE-----) から (-----END CERTIFICATE-----) までをコピーし、テキストエディタに貼り付け、証明書ファイルとして任意のファイル名で保存します。
証明書ファイル:example_crt.pem
中間証明書のファイル:example_chn.pem
この2つのファイルと秘密鍵ファイルを
/etc/httpd/conf.d/ssl/
に置きます。
※このファイルを置く場所は任意の場所でよいです。
5. ssl.confの編集
Apacheの設定では、通常のhttp(ポート:80)の設定とは別に、https(ポート:443)の設定を行う必要があります。(SSLではポート番号は443)
mod_sslをインストールをすると/etc/httpd/conf.dにssl.confという新しいファイルが作成されるので編集します。
DocumentRoot、ServerName、秘密鍵、証明書、中間証明書の設定をします。
vi /etc/httd/conf.d/ssl.conf
<VirtualHost *:443> ... DocumentRoot "/home/user/www" # 77,78行目辺り ServerName example.com:443 SSLCertificateFile /etc/httpd/conf.d/ssl/example_crt.pem #106行目辺り 証明書ファイル SSLCertificateKeyFile /etc/httpd/conf.d/ssl/example_key.pem #112行目辺り 秘密鍵の設定 SSLCertificateChainFile /etc/httpd/conf.d/ssl/example_chn.pem #123行目辺り 中間証明書のファイル ... </VirtualHost>
次にApache再起動です。
service httpd restart
https://example.comをブラウザで確認してちゃんと設定されていたら成功です。
最後にSSLのテストをして終わりです!