Blog スタッフブログ

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

Category | Blog
Tag | / /
/ 2,001views

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 / 2,001views

Company information

〒651-0087
神戸市中央区御幸通 8-1-6 神戸国際会館 22F

Contact us

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