Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2018-02-19 22:05:31

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 110

Webサイトのhttps化

Webサイトのhttps化

★ 2018年7月から一部のブラウザでhttp://アドレスは、アドレスバーで、文字による「安全でない接続」表示がされるようになります。
A secure web is here to stay
Google「Chrome」ブラウザ、7月から全てのHTTPサイトをURLバーで「Not secure」と表示

7月からは、chromeブラウザの「安全でない接続」表示に起因する風評被害によるアクセス減がどの程度でるか予測できませんが、
記事によるともう6割以上のサイトがhttpsに移行しているそうなので、
https化を無視できない状況になってきています。

● サーバーのhttpsを有効にする
httpsに必要なSSLサーバー証明書は、有償と無償があります。
設定が有効になるまで数分から数時間程度、有償証明書の場合は数日かかることもありますので事前にサーバーのhttpsを有効にします。
営利を伴わない個人のホームページでしたら有償を使うメリットはないので無償のSSLサーバー証明書でいいと思います。
国内大手のほとんどのレンタルサーバーは、無償の認証局 Let's Encryptに対応していると思います。

◆ 新規サイト
・事前にssl証明書を有効にしておく
・.htaccess http
(例)  トップページ http -> httpsリダイレクト設定
       それ以外のurl 404 not found 設定にするなど
・インストールする

◆ 既存サイト
・事前にssl証明書を有効にしておく
・データベースのバックアップは必須。(誤操作によるデータの破損の恐れあり)
・サイトや管理画面のアドレスを httpsに変更する
・https://のアドレスでサイトへいき正常に表示されるか確認をする
・http https混在コンテンツだとブラウザに警告が出るので、アイテムの内容やスキン・テンプレートなどのhttp://もhttps://に変更します。
これらの作業は、基本的に手作業では拉致があかないので、専用のプラグインもしくは専用のSQLを準備してSQLを発行して一括置換することになります。
Chrome、firefoxの場合は、F12キー「コンソール」をクリックで問題のあるファイル名が表示されます。
・修正が完了したら .htaccessで http -> httpsリダイレクト設定をします
・サイトの登録を行ったサイト(サーチエンジンや広告サイトなど)で登録urlをhttpsに修正します。

オフライン

#2 2018-02-19 22:07:39

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 110

Re: Webサイトのhttps化

◆ 既存サイト

● config.php
   http://の記述があれば https://に書き換える

● グローバル設定 (nucleus_config)
管理画面:グローバル設定から変更します。
面倒な場合はSQLで発行すると瞬時に終わります。
一括置換例

UPDATE nucleus_config SET value = REPLACE(value, 'http://','https://')
   WHERE name LIKE '%URL%' AND value LIKE 'http://%'

● ブログ設定
管理画面:ブログ設定から変更します。
面倒な場合はSQLで発行すると瞬時に終わります。
一括置換例

UPDATE nucleus_blog SET burl = REPLACE(burl, 'http://','https://')
   WHERE burl LIKE 'http://%'

● itemテーブルの ibody,imore
これは、個別にサイトにあったSQLを発行するしかないです

UPDATE nucleus_item SET ibody = REPLACE(ibody, 'http://対象ドメイン','https://対象ドメイン')
   WHERE ibody LIKE '%http://対象ドメイン%'
UPDATE nucleus_item SET imore = REPLACE(imore, 'http://対象ドメイン','https://対象ドメイン')
   WHERE imore LIKE '%http://対象ドメイン%'

サイトのドメイン以外にも、https化したい外部画像などのアドレスも一緒に処理するといいかもしれません。

間違うとコンテンツが全破損しますので、作業前に必ずデータベースをバックアップしておく必要があります。


● スキン、テンプレート
管理画面から変更できます

スキン変数を使わずに 直接 URLアドレスを書き込んでいる場合は変更する必要があります。

SQLで一括置換する場合は、データは、nucleus_skin.scontent, nucleus_template.tcontentに格納されています。

● skin/フォルダのファイル
   プラグイン - スキンファイル - 管理からファイルを編集できます

● その他のコンテンツ
・インストールしてあるプラグインのURLが入っているものがあればデータ書き換えます
NP_ExtraSkinJP など

● URLカスタマイズ系プラグイン
NP_CustomURLなど

他の方法
・プラグインで出力前に処理して src="http:// や href="http:// を書き換えるという方法もあります
見落とした、もしくは、どこに記述があるのかわからない処理しきれなかったhttp://が専用プラグインでhttpsに修正できます。

(v3.70-ja~)PostSkinParseイベントに対応したプラグインで対応可能

編集者 ピヨピヨbird (2018-02-24 21:47:34)

オフライン

#3 2018-02-19 22:10:43

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 110

Re: Webサイトのhttps化

既存サイト http -> https リダイレクト

nucleusのトップフォルダの.htaccessを下記のようにします
.htaccess

RewriteEngine On

# http -> https : 301 permanent redirect
RewriteCond %{HTTPS} !on
RewriteRule ".?" https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# ここから下は既存のコード

オフライン

#4 2018-02-19 22:13:25

ピヨピヨbird
メンバー
登録日: 2015-04-05
投稿: 110

Re: Webサイトのhttps化

さくらインターネット(共有サーバー)対応

(1) www付きのドメインへのアクセスがwwwなしと区別できない問題点
マルチドメインをwww付きで設定してある場合:

マルチドメインとして使用する(推奨)

を選択してマルチドメインをwww付きで共存させると%{HTTP_HOST}は、常にwwwなしドメインで設定され、www付きであることを検出する方法がないようです。
www付きドメインが必要な場合は、

wwwを付与せずマルチドメインとして使用する(上級者向け)

を選択して、wwwなしドメインのみで設定し、別途「新しいドメインを追加」で、www.のドメインをサブドメインとして登録することでHTTP_HOSTの問題は解決します。
wwwからwwwなしへのすべて転送のみでしたら、マルチドメインの対象のフォルダの設定は別のフォルダに分離したほうがいいでしょう。
(※wwwあり/なしを同じフォルダに指定した場合は下位階層の.htaccessにもwwwの転送を記述しないといけなくなり面倒なことになります。)

---------------------
「04/19 追記」
2018年3月のさくらサーバー更新で 以下の不具合が修正されました

レンタルサーバの仕様変更について(2018年3月)

・リダイレクトするとhttps情報がなくなる不具合
(さくらインターネットのSSLアクセラレータの設定ミスに起因すると思われる現象)

X_SAKURA_FORWARDED_FOR を確認する必要はなくなりました。

環境変数 HTTPS を参照してください

--------------
2018年3月以降は
以下の設定は 不要になりました
--------------

さくらインターネット(共有サーバー)では、rewriteするとHTTPS=onが欠落する現象が発生します。そのため

RewriteCond %{HTTPS} !on

だけの条件式の場合にリダイレクトの無限ループが発生します。
HTTPS=onが欠落する現象は、ユーザ側ではどうすることもできませんので、.htaccessで対処します。
(1) 下記のコードを /home/ユーザー名/www/.htaccess に追加してください。
/home/ユーザー名/www/.htaccess

# SetEnvIf X-SAKURA-FORWARDED-FOR  !^$   HTTPS=on
# SetEnvIf REDIRECT_HTTPS on HTTPS=on

(2) Nucleus サイトトップフォルダの .htaccess を下記のようにしてください。

RewriteEngine On
# http -> https : 301 permanent redirect
RewriteCond %{HTTPS} !on
RewriteCond %{ENV:HTTPS} !on
#RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
RewriteRule ".?" https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

(3) phpの設定 さくらインターネット(共有サーバー)
通常のままだとphpでhttpsを検出できませんので以下の対応を取ります。
php.iniにauto_prepend_fileを追加しそのファイルに以下を追加します。
ファイル名は好きな名前で保存可能です。ファイルの場所は、絶対パスで指定したほうがいいと思います。
/home/ユーザー名/www/php.ini

auto_prepend_file=/home/ユーザー名/my_auto_prepend_file.php

my_auto_prepend_file.php

<?php
//if ( !empty($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) )
if ( !empty($_ENV['HTTPS']) &&  $_ENV['HTTPS'] == 'on' )
{
      $_SERVER['HTTPS'] = 'on';
      $_ENV['HTTPS']    = 'on';
      $_SERVER['REQUEST_SCHEME'] = 'https';
      $_ENV['REQUEST_SCHEME']    = 'https';
}

編集者 ピヨピヨbird (2018-06-08 23:15:49)

オフライン

#5 2018-02-22 07:17:26

yama
Administrator
登録日: 2005-07-07
投稿: 1,295
ウェブサイト

Re: Webサイトのhttps化

情報ありがとうございます。こういうのはupgradesフォルダ内に支援プログラムを同梱してあげるといいかもしれませんね。もしできれば考えてみます。

オフライン

Board footer