Blog スタッフブログ

【SSLを導入しよう】Apache+OpenSSLでSSLを導入する方法

Category | Blog
Tag | / /
/ 85,071views

SSL

こんにちは、制作の奥田です。

Googleは2014年に、検索結果でHTTPSのサイトを優遇するロジックを実装しました。
これによって即座に検索結果に反映するわけではないですが、常時SSLのサイトのほうが”信用度が高いサイト”という意味でサイトの順位にも少し影響があるようです。
これを受けて、常時SSL化するサイトが続々と増えてきています。

GoogleのHTTPSサイト優遇方針で待ったなし! Webサイト常時SSL化の効果と実装ポイント
http://web-tan.forum.impressrd.jp/e/2016/06/22/23090

Table of contents

  1. そもそもSSLって何?
  2. メリット・デメリット
  3. SSL化に必要なもの
  4. 設定ファイルの作成
  5. サーバー証明書の発行と中間証明書の保存
  6. SSLサーバ証明書の設定
  7. htaccessの設定
  8. 最後に

そもそもSSLって何?

20160621-img02
アドレスバーを見ていただくと一目瞭然ですが、「https://」から始まっているページはSSL暗号化通信で閲覧しているということになります。
また、証明書の内容によって鍵マークがついていたり、緑色のバーが表示されたりします。
SSL暗号化通信とは、通常HTTPの通信ではフォーム送信時に内容が平文で送信されます。SSL通信ではデータを暗号化して送信するため、悪意のある第三者に「盗聴」やデータの「改ざん」などをされることなく安全に通信することができます。
また、SSLによる暗号化通信では、信頼のある第三者機関である認証局(CA)で発行された「サーバー証明書」を利用することで実在証明ができ、悪意のある第三者による「なりすまし」を防止することができます。
証明書の内容は認証の強度によって違います。認証の強度は大きく分けて3つの種類があります。

認証内容特長
ドメイン認証型(DV)ドメイン所有者の確認のみ暗号化通信のみを手軽に実現するのに向いています。
実在証明型(OV)企業の法的な実在証明、ドメイン所有者の確認暗号化通信に加え、企業の実在証明も提供されます。
EVサーバ証明書(EV)企業の法的な実在証明、企業の物理的な実在証明、ドメイン所有者の確認発行時の審査の厳格化により、企業の実在証明が強化されています。さらにアドレスバーの変色などにより安全性をアピールできます。

メリット・デメリット

実際に常時SSLにすることでのメリット・デメリットは何なのでしょうか?
以下にまとめてみました。

メリット

  • 通信の暗号化でユーザーに安心してご利用いただける。
  • 企業の実在証明が可能。
  • SEO的に優位。

デメリット

  • 費用がかかる。
  • 認証レベルによってはいくつかの手続きが必要。
  • サーバーの知識が必要(※レンタルサーバーなどでは特に知識がなくても導入できます。)
  • WordPressなどのCMSなどで画像などのURLの変更が必要な場合がある。

ざっとこんな感じでしょうか。
CMSの問題はプラグインなどで対処できますし、費用がかかるという事以外、特にデメリットはないように思います。

SSL化に必要なもの

ではVPSやクラウドなどでサーバーを運用されている方向けにApache+OpenSSLでSSLを導入する手順をご紹介したいと思います。
ここからはサーバーをROOT権限でさわれることが条件です。
まず、SSLは以下の3つのものを使用して認証を行います。

SSLサーバ証明書SSLCertificateFile
秘密鍵SSLCertificateKeyFile
中間証明書SSLCertificateChainFile

設定ファイルの作成

まずROOTでログインします。

sudo su

そして、/etc/pki/tls/ディレクトリへ移動してください。

cd /etc/pki/tls/

秘密鍵とCSRを生成します。

openssl req -new -nodes -newkey rsa:2048
-keyout private/willstyle.key # 秘密鍵の保存ディレクトリ/秘密鍵のファイル名
-out  certs/willstyle.csr # CSRの保存ディレクトリ/CSRのファイル名

※ファイル名はわかりやすいように変更してください。
いろいろと質問されるので質問に従って入力していきます。

Country Name (2 letter code) [GB]: JP
State or Province Name (full name) [Berkshire]: Hyogo # 都道府県(登記されている住所)
Locality Name (eg, city) [Newbury]: Kobe # 市区(登記されている住所)
Organization Name (eg, company) [My Company Ltd]: will STYLE Inc. # 組織名(whoisの登録社名)
Organizational Unit Name (eg, section) []: # 部署名(省略可)
Common Name (eg, your name or your server's hostname) []: www.willstyle.co.jp # ドメイン
Email Address []: # メールアドレス(省略可)
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #(省略可)
An optional company name []: #(省略可)

※ワイルドカードタイプは、Common Nameのサブドメイン部分にアスタリスク(*)を入力してください。(*.willstyle.co.jp)
※マルチドメインタイプは、コモンネームからひとつを選び、Common Nameに入力してください。
このようにして入力すると private/willstyle.key と certs/willstyle.csr が生成されます。

生成した秘密鍵を、root権限のみでしか読めないようにパーミッションを変更します。

chmod 400 private/willstyle.key

最後にCSRファイルを表示してコピーします。

cat certs/willstyle.csr # このコマンドで表示された内容をコピーしておいてください。 

サーバー証明書の発行と中間証明書の保存

CSR(要求証明書)ファイルの内容を認証局に送信します。※この手続きは割愛します。
すると、認証ファイルが送られてきます。(認証局や、認証レベルによって手続きが違います。)
.crtという拡張子のこのファイルをテキストエディタなどで開き、内容をコピーします。
以下のコマンドで内容をペーストし保存してください。

vi certs/willstyle.crt # 内容をペーストし、(:wq)で保存して終了

最後に中間証明書を認証局から取得します。(認証局のサイトに中間証明書のページがあるのでそこから取得してください。)
こちらの内容も以下のコマンドで内容をペーストし保存してください。

vi certs/willstyle.ca-bundle # 内容をペーストし、(:wq)で保存して終了

こちらもパーミッションを変更しておきます。

chmod 400 certs/willstyle.crt
chmod 400 certs/willstyle.ca-bundle

これで3つのファイルが揃いました。

SSLサーバ証明書の設定

それではApacheの設定を変更します。
まず、ssl.confファイルを作成します。

vi /etc/httpd/conf.d/ssl.conf

以下の内容を記述し保存してください。

Listen 443
NameVirtualHost *:443
SSLStrictSNIVHostCheck off

バーチャルホストの設定を記述します。

vi /etc/httpd/conf.d/vhost.conf
<VirtualHost *:443>
DocumentRoot "/var/www/html/" # ドキュメントルートのパス
ServerName www.willstyle.co.jp
ServerAlias willstyle.co.jp

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2

SSLCertificateFile /etc/pki/tls/certs/willstyle.crt # SSLサーバ証明書
SSLCertificateKeyFile /etc/pki/tls/private/willstyle.key # 秘密鍵
SSLCertificateChainFile /etc/pki/tls/certs/willstyle.ca-bundle # 中間証明書
</VirtualHost>

最後にサーバーを再起動します。

service httpd restart

htaccessの設定

最後に常時SSL化なのでhttpプロトコルでアクセスがあった際にhttps://へリダイレクトする設定をします。
サイトのドキュメントルートの.htaccessファイルに以下を追記してください。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^willstyle\.co\.jp # wwwありに統一する設定
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ http://www.willstyle.co.jp/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^willstyle\.co\.jp # wwwありに統一する設定@SSL
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ https://www.willstyle.co.jp/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.willstyle.co.jp/$1 [R=301,L]

【補足】さくらのレンタルサーバーでSSLを導入した際にhtaccessの記述が特殊だった為、ここに記しておきます。

RewriteCond %{HTTP_HOST} ^willstyle\co\.jp$ [OR,NC]
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.willstyle.co.jp/$1 [R=301,L]

すでに運用中のWordPressをSSL化する場合は以下のプラグインを使用すると便利です。

最後に

SSLは少しむずかしいイメージをお持ちの方も多いと思いますが、実際やってみるとそれほど難しい作業ではありません。
これを機にぜひSSLを導入してみてください。

参考にさせていただいたサイト

Category | Blog
Tag | / /
Author | Mineo Okuda / 85,071views

Company information

〒650-0024
神戸市中央区海岸通5 商船三井ビルディング4F

Contact us

WEBに関するお問い合わせは
078-977-8760 (10:00 - 18:00)