We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33488
    • 429 Posts
    XREAとCORESERVERの共有SSLっていうのは、SSL専用WEBサーバからローカル接続でそれぞれお使いのWEBサーバに接続されるので、MODxのPHPからすると接続してきてるのはデータセンター内のローカルIPからHTTPでアクセスしてるように見えるだけなのです。
    なので、プログラムで動的にSSLかどうかをチェックするっていうのはIPがローカルIPかどうかで認識してURLを故意に変更するように仕組みにしないとなりません。

    ということで・・・EncriptionのPluginを改造して前使ってたりしました。
    修正箇所についてはすぐさま出てこないんで申し訳ないですが・・・(もしかすると消しちゃったかも・・・今、使ってたサイトはないので)
    そうしさんのSSL Switherでも基本的に動作しているサーバ上でHTTPSかどうかをチェックしているので、XREAだとそのままでは駄目でしょう・・・た、たぶん。

      • 6350
      • 421 Posts
      とりあえず、今時分の中で問題となっている箇所をまとめると

      config.inc.php でセットされる内容
      1.$base_url ドメインルートからのパスが返される
        この $base_url にはたとえば /modx/ と入っている。
        ただしこのままでは SSL でアクセスした場合にhtmlヘッダの <base href= (※$site_url) が基準となるため
        $base_url を利用している WayFinder Diito などののリンクアドレスが https://ss1.coressl.jp/modx/~ となってしまう。
        それでは都合が悪いので $base_url はつねに http://xxx.s78.coreserver.jp/modx/ を返すように
        config.inc.php を変更した。

        ただし 画像認証にまで base_url をつけられるので困っている。
        -------------------------------------------------------------------------------------
          if($vericode) {
          $_SESSION[’eForm.VeriCode’] = $fields[’vericode’] = substr(uniqid(’’),-5);
          $fields[’verimageurl’] = $modx->config[’base_url’].’manager/includes/veriword.php?rand=’.rand();
         }
        ------------------------------------------------------------------------------------
        html 内での画像参照アドレスはすべて <base href= を基準にした相対アドレスするべきだと思うので赤字部分を削除
        するのが一番の方法。その基準を無視して modx ソースコード内でむやみに base_url が使われている。

      2.$site_url 現在アクセスしているドメインが返される
        そのため、そのままでは共有SSLサーバでアクセスした場合に
        https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/contact-us.html でアクセスした場合
        https://ss1.coressl.jp/ が返される

        ここで返してほしいのは $site_url = http://xxx.s78.coreserver.jp/modx/ と変更。
        といまは固定にしているが http:// でのアクセスか https:// でのアクセスかで $site_url のセットする変数を
        https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/
        http://xxx.s78.coreserver.jp/modx/
        のようにしたい。

        いまは自作スニペットでContact Us のページで http:// https:// を切り替えている

      3.Encryption を検討してみたが内部では
        https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/~url
        http://xxx.s78.coreserver.jp/modx/~url
        へリダイレクトしているので上記の問題の一部は解決されそうだが、これをつかうと「自動転送がループしています」
        のエラーになりいまだに設定できない。

        modx に限った問題ではないが html で組んだときにはないこのような別の苦労がたくさんある。

      ZeRo さん。思い出したらまた教えてください。
        • 26012
        • 324 Posts
        Zeroさん、情報ありがとうございます。

        これですか・・・
        http://sb.xrea.com/showthread.php?threadid=6646
        XREAは初心者で・・・大変勉強になります。
        IPがローカルかグローバルかを判定・・・仕方ないのかもしれませんが、何といいますか、こう、
        横車を押してる感じがしますね。

        >dainitiさん
        話全く違いますが、こんな記事出てたんですね(出たてのホヤホヤ)。
        意外に早くSSL + MySQL5やるようで・・・
        http://www.47news.jp/topics/prwire/2009/01/089132.html
        さくらの共有SSLの仕組みが気になります(結局、SSLモードで起動されたApacheを経由して暗号化されるから一緒?)。
          • 33488
          • 429 Posts
          まあ、共有SSLの仕組み上致し方ないってことなんですけど・・・こういうところはさすがに分かってる人じゃないとなんでそうじゃなきゃ駄目なのかとかわかんないですよねぇ。
          しっかりしたいときには、専用サーバとか独自SSLとかにした方が無難ではあります。

          ちょっと、データが残っていたら報告します。そんなにすっごいことをしてるわけじゃなくてかなり場当たり的な対処だったような気がします
          (^^;;

          けど、そのときはCAPTCHA認証は使ってなかったので、この辺りはeFormというか画像表示の部分は直さないといけないですねぇ。
          共有SSLだとURLが変わっちゃんで・・・結構面倒かも知れません。
          あと実際には、そうしさんのSSLSwitcherをベースに修正したと思うので、ちょっと探してみますが、CAPTCHA部分は・・んーー、ちょっとeFormかその表示部分の修正が可能かどうかで検討してみますが、最悪はCAPTCHAなしで・・・SSLでガードってことで(^^;
            • 6350
            • 421 Posts
            Quote from: sama55 at Jan 26, 2009, 09:23 AM

            http://sb.xrea.com/showthread.php?threadid=6646
            XREAは初心者で・・・大変勉強になります。
            IPがローカルかグローバルかを判定・・・仕方ないのかもしれませんが、何といいますか、こう、
            横車を押してる感じがしますね。
            coreserver のSSLサーバーはよくとまります。たぶん XREAも、一度とまると半日くらい復旧しません。
            Quote from: sama55 at Jan 26, 2009, 09:23 AM

            >dainitiさん
            話全く違いますが、こんな記事出てたんですね(出たてのホヤホヤ)。
            意外に早くSSL + MySQL5やるようで・・・
            http://www.47news.jp/topics/prwire/2009/01/089132.html
            さくらの共有SSLの仕組みが気になります。
            案内メールはまだ届いてないですね。
            共有SSLの仕組みはたぶんどこも同じはずですが。MySQL5 への移行うれしいですがまた苦労しそうです。
            いまでもさくらと coreserverで import export まともにできないので :’(
            バージョン間のコンバートプログラムのようなものはないでしょうか
              • 26012
              • 324 Posts
              Quote from: dainiti at Jan 26, 2009, 09:51 AM

              coreserver のSSLサーバーはよくとまります。たぶん XREAも、一度とまると半日くらい復旧しません。
              それじゃ、折角苦労して捕まえたうなぎが、かごの穴からスルスル逃げちゃいますね。
                • 6350
                • 421 Posts
                Quote from: sama55 at Jan 26, 2009, 01:12 AM

                幾つかのアプローチが試されてるようですが、特定なページをSSL対応にする必勝パターンは、
                soushiさん作「sslSwitcher 1.02」なんでしょうかね?(フォーラム内の記事がうまくまとまりません)
                soushiさん作「sslSwitcher 1.02」 使ってみました。前にも一度ためし的に使ってみたのですがそれほど使い込んでないので問題点はないと思っていたのですが。

                ssl のページにアクセスした後 Wayfinder のメニューリンクがすべて https:// になってしまう件についてはこのプラグインでは解決していません。すなわち Wayfinder にわたす base_url に関しては自分で解決する必要があります。

                独自ドメインSSL のみなのでメニューをクリックしてもアドレスが見つからないというエラーが出ないだけのようです。
                さらに現在の 0.9.6.3では「SwitchHTTP to HTTPS」オプションをチェックしても http:// から https:// への強制リダイレクトがされず、ページが見つからないというエラーになります。

                結果から言えば 特定のページを https に切り替える方法 htaccess を利用する とおなじことのようです。
                  • 6350
                  • 421 Posts
                  config.inc.php の動作確認をしていたところ coreserver では SERVER_HTTPS が取得できないことがわかりました。

                  そのため 41行目でセットされる $site_url が ’http://’ となってしまうようです。

                  したがって coreserver の共有SSLでは、どうにか呼び出しページから切り替えてやる必要があるようです。

                  Encryption も SERVER_HTTPS で判定しているようなのでまともに動かない理由がようやくわかりました。

                  このあたりから、もう一度見直してみることになりそうです。 :’(

                  先頭の ’https’ 5文字を取ってくる方法は他にないもんでしょうか。 IP で判断するって言うのはこうゆう事だったんですね > ZeRo さん

                  未改造の config.inc.php ではいまやって見ると HTTP_HOST も https://ss1.coressl.jp/ ではなく http://xxx.s78.coreserver.jp/modx/ になってる。いつからそうなったんだろう(・・?
                  Quote from: ZeRo at Jan 26, 2009, 09:29 AM

                  最悪はCAPTCHAなしで・・・SSLでガードってことで(^^;
                  CAPTCHA と SSL は目的が違うんで (^^ゞ
                    • 26012
                    • 324 Posts
                    Joomla!方式で対応できませんかね。
                    (実際にコードを書いたわけではないので色々障害があると思います。一つの対応プランとして・・・)

                    1.テンプレート変数の追加

                     (1) http: と https: を切り替えるテンプレート変数を定義 (デフォルト:http:)
                     (2) SSLサーバのURI (デフォルト:SSLサーバのURI)

                    2.makeURL関数の改造

                     document.parser.class.inc.php のmakeURL関数を改造

                     (1) フルパス出力

                       schemeパラメータを常に"full"として処理し、常に絶対パスを生成 (多少性能が犠牲になるがやむなし)

                     (2) SSLサーバにリダイレクトしたいページのパスの組み立て

                      上記(1)がhttps:の場合、SERVER変数のありように関係なく、強制的に(1)+(2)+自サーバ内のドキュメントパス にする

                    コアの深い部分の変更になるので、かなりおっかないですが、SSLサーバと自サーバとの間をいったりきたり
                    するためには、パスは常に絶対パスでないとダメな気がするので、やむを得ないことかと。。。
                    また、WayFinderは、ドキュメントのパスを生成する際、スタートドキュメントにはsite_urlをアサインするが、
                    他のドキュメントのパスはmakeURLで生成しているようなので、SSLで暗号化したいページがスタートドキュメント
                    でなければ、特に問題はないように感じます。

                    時間をかけて検証してないので、軽く流してやってください。
                      • 6350
                      • 421 Posts
                      Quote from: ZeRo at Jan 26, 2009, 09:29 AM

                      最悪はCAPTCHAなしで・・・SSLでガードってことで(^^;
                      (^^;すんません。ZeRo さんの顔文字で(^^;ってどうやったら入力できますか。

                      目のところがmsimeの顔文字変換、または¥記号左のキーボードからの入力ではどうしても(^^ゞのように目の部分の大きさが違うんです。

                      気になって、仕事がはかどりません。 undecided

                      ・
                      ・

                      わかりました。変換モードで ^ を入力すると ^ になるようです。(^^ゞ なんで全角文字の方が小さいんだろう(・・?