IT サーバー構築

ブログをSSL化する方法を詳しく紹介

投稿日:2016年10月6日 更新日:

どうも、こんにちわ。
管理人のfaiと申します。

前回アニメの話をしたので今日はICT側の話をしたいと思います。
先にサーバーを建てた話をしようと思いましたが、昨日ブログをSSL化致しまして少々つまずいてしまいました。なので、躓かずスムーズにSSL化出来るよう、ここに出来るだけ詳しく記しておきたいと思います。バックアップ等は各自でなさってください。

同じ環境であればここのコピペを行うだけで、ダウンロード等で時間がかからない限り30分ほどで終わると思います。
また、私はwordpressを用いていますがwordpressでなくても方法は変わらないのでご安心を。
コマンド部分をトリプルクリックしてサクサク進めちゃってください。

ブログ(サイト)をSSL化する手順

条件

  • レンタルサーバー: さくらVPS
  • OSバージョン: CentOS 6.8(Final)
  • サーバー: Apache2.2、PHP5.6
  • WordPress: 4.6.1
  • SSL: さくらのRapidSSL
  • SSH蔵: RLogin

手順1 必要なソフトのDL

まずはアパッチ

yum -y install httpd mod_ssl

CSRの作成

私はここから行いました。
これからCSRを作成しますが、自分のブログ(サイト)の独自ドメインを用意してください。
そうでないと正しく認証されない可能性があります。
ドメイン取得はお名前.comがおすすめです。

まずは秘密鍵から作成

cd /etc/pki/tls/certs/

openssl genrsa -des3 -out server.key 2048

~省略~

Enter pass phrase for server.key: (←パスフレーズを入力)
Verifying - Enter pass phrase for server.key: (←パスフレーズを再入力)

 

次にCSR(署名要求)作成
一番上のコマンドを入力すると入力画面が次々出てきます

openssl req -new -key server.key -out server.csr

Enter pass phrase for server.key:(←秘密鍵のパスフレーズを入力)

~省略~

Country Name (2 letter code) [XX]:JP (←国名)

State or Province Name (full name) :Tokyo (←都道府県)

Locality Name (eg, city) [Default City]:Shibuya-ku (←市区町村)

Organization Name (eg, company) [Default Company Ltd]: example (←組織名)

Organizational Unit Name (eg, section) : - (←部署名)

Common Name (eg, your name or your server's hostname) :www.example.info (←ドメイン名)

Email Address : - (←メールアドレス)

Please enter the following 'extra' attributes<

to be sent with your certificate request

A challenge password : (←空Enter)

An optional company name : (←空Enter)

 

上から順に説明を行いたいと思います。
国名ですがこれはJPで。
次に都道府県市区町村ですが、サイトを運営する個人又は組織の所在地でOKです。もし間違えても今の段階ならもう一度コマンド打てば作り直し出来ます。
組織名も分かりやすいもので問題ありません。(ドメイン名など)
部署名ですが私は個人ブログなので-(ハイフン)にしておきました。
次にドメイン名ですがこれは自分のブログと合っていないといけません。間違いのないように入力しましょう。間違ってしまった場合はもう一度作り直しで。
メールアドレス以降は空Enterでも構いません。私は念のためメアドは-にしておきました。

CSRの確認をします。

openssl req -text -noout -in server.csr

server-crt

表示された4行目のSubject: の行が入力内容と合っていることと、7行目のPublic-Key: の行が 2048 bitであることを確認します。

SSL購入

次に、さくらのSSLからラピッドSSLを購入します。
CSRの入力を求められるので、先ほど作成したserver.csrの中身をコピペします。

cat server.csr

BEGIN行とEND行も全て貼り付けること。

 -----BEGIN CERTIFICATE-----
 (略)
 -----END CERTIFICATE-----

 

メールが届けば購入完了です。

認証

会員メニュー より、「契約情報」タブ→「契約サービスの確認」で、「SSL ラピッドSSL」の「サーバ証明書」を開きます。
「認証ファイルDL」をクリックして、認証ファイルをダウンロード。
次に、Webサーバのルート(/var/www/html)へDLした認証ファイルをそのままFTP。
1分置きにルートの認証ファイルへリクエストがあり、認証ファイルが返されることで認証が完了するようです。
リクエストはアクセスログで確認可能。

サーバー証明書

しばらく待つと(5分くらいかな?)先ほど会員メニュー で「認証ファイルDL」だった箇所が「サーバ証明書DL」になっているのでDL。
テキストでサーバ証明書開いて、サーバに張り付ける。当初notepadで開きサーバーにvimでコピペしたのですが、この方法ではserver.crtが正常に読み込めませんでした。
そのためFTPファイルを用いて/etc/pki/tls/certs/に直接アップロードすることをオススメします。

Apache再起動の度に確認が来るためパスフレーズ応答を削除する。

openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: (←秘密鍵のパスフレーズ入力)
writing RSA key

 

中間CA証明書の取得して、サーバへ

「ジオトラスト SSLサーバ証明書発行のお知らせ」というメールが、さくらインターネットに登録してあるメアド宛に届くので、中段あたりにある「ジオトラスト ラピッドSSL」のリンクを開きます。
2016年3月1日(火) 仕様変更適用に発行された証明書:の -----BEGIN CERTIFICATE-----から -----END CERTIFICATE-----までをコピーします。(1クリックで範囲選択されます)

そして、rapidssl-chain.crtという名前(名前は任意)で中間CA証明書ファイルを作成し、コピーした内容を貼り付けます。

vim rapidssl-chain.crt

 -----BEGIN CERTIFICATE-----
(略)
 -----END CERTIFICATE-----

Apacheの設定変更

Apacheの設定を変更します

vim /etc/httpd/conf.d/ssl.conf

~以下を編集(左側の数字は行数)~
77: DocumentRoot "/var/www/html" (#をはずす)
78: ServerName www.example.info:443(←自分の環境のドメイン名を書く)
93: SSLProtocol all -SSLv2 -SSLv3
105: SSLCertificateFile /etc/pki/tls/certs/server.crt
112: SSLCertificateKeyFile /etc/pki/tls/certs/server.key
121: SSLCertificateChainFile /etc/pki/tls/certs/rapidssl-chain.crt (+ #をはずす)

Apache再起動

service httpd configtest

syntax OK

service httpd restart

httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

 

上記でサイトのSSL化は完了です。

HTTP→HTTPSへのリダイレクト

http://でサイトへ飛んできた際にhttps://に転送させる方法です。

cd /var/www/html

vim .htaccess

以下をコピペします。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

これでhttp://への接続がhttps://に変わります。

(WordPressを使っている場合)Wordpressの一般設定を変更

WordPress管理画面の「設定」→「一般」でWordpressアドレスとサイトアドレスの先頭(プロトコル)をhttps://に変えます。

wp_site_address

以上でサイトのSSL化は全て完了です。
お疲れ様でした。

お気軽にコメントどうぞ。

参考サイト

さくらVPSでApache+SSL環境の構築(CentOS6.5+Apache+RapidSSL)
SSL証明書をインストールする(自分でやればこんなに激安!)
WordPressをhttpからhttpsにSSL化した全手順まとめ(エックスサーバー環境)

-IT, サーバー構築

Copyright© testブログ , 2017 AllRights Reserved.