none
Microsoft Edgeでのクロスドメイン通信について RRS feed

  • 質問

  • お世話になっております。

    Ajax非同期通信でクロスドメイン通信を行うと、Edgeにて以下のエラーメッセージがコンソールに表示されます。

    ====メッセージ内容====
    このリソースへのアクセスに必要なセキュリティ証明書は無効です。
    ===============

    アクセスするサーバにはオレオレ証明書を使用しておりますが、これを公的なものに変更する
    ことで、上記のエラーは回避できますでしょうか。

    javascriptでは以下のように設定しております。

         $.ajax({
             type:"post",
             url:requestUrl,
             crossDomain: true,
             contentType: "application/x-www-form-urlencoded; charset=UTF-8",
             dataType: "json",
             xhrFields: {
            	 withCredentials: true
             }

    また、アクセスする側のApacheには以下の通り設定しております。

    SetEnvIf Origin "^https?://(アクセス元のドメイン)$" ORIGIN=$0
    Header append Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
    Header append Access-Control-Allow-Credentials true
    Header append Access-Control-Allow-Headers "Content-Type, Accept, X-Requested-With, Origin"
    Header append Access-Control-Allow-Methods "GET, POST, HEAD, OPTIONS, CONNECT"

    ※IE11では発生しないことを確認済みです。




    2017年2月17日 5:39

回答

  • SurferOnWww様

    tmori3y2様

    情報頂きありがとうございます。

    結論から申しますと、自己証明書を公的な証明書へ変更することによってEdgeでも通信可能となりました。(Microsoftのサポートへも質問してみました。)

    サーバ側で使用していた自己証明書が有効期限が切れており、その結果Edgeでメッセージが表示されていたようです。

    試しにOSの時間を有効期間内に変更し、かつ証明書のインポートを行ってみるとクロスドメイン通信が可能になりました。

    公的なものをだと基本的にインポートは不要になるため、公的な証明書で実現できるとの回答をサポートから頂いています。

    Edgeというよりも証明書の基本的な問題だったようです。

    情報提供いただきありがとうございました。

    • 回答としてマーク jimmy178504 2017年2月21日 4:59
    2017年2月21日 4:59

すべての返信

  • Ajax (XHR) ではなく、普通にそのドメインの HTTPS スキームに Edge / IE からアクセスするとどうなりますか(コンテンツが返されるものとして)?

    またこのエラーはプリフライトリクエストに対して出ているという事でしょうか?

    IE と Edge では同じ証明書ストアを使うので、IE でエラーにならず Edge でエラーが出るというのはちょっと間尺に合わない気がするのですが。


    hebikuzure

    2017年2月17日 7:03
    モデレータ
  • hebikuzure様

    回答ありがとうございます。

    ブラウザからアクセスしますと、Edge/IEともに期待するJsonが返却されます。(アクセス時に証明書に関する表示はどちらもあります)

    プリフライトリクエストではないようです。

    Edgeの開発者ツールで確認しますと、CONNECTメソッドを投げてestablishedが返ってきて以降、OPTIONSやPOSTが投げられた形跡はありませんでした。


    2017年2月17日 7:18
  • > アクセス時に証明書に関する表示はどちらもあります

    これって「オレオレ証明書」の警告ですね。

    そうだとすると、Edge が警告を出すというより、IE が証明書の検証を無視する(ように見える)という問題なのかも。

    ちなみに

    > これを公的なものに変更する
    > ことで、上記のエラーは回避できますでしょうか。

    は、例えば Azure などで HTTPS サーバーを立てて検証すれば、費用をや手間をかけずにわかるのではないでしょうか?


    hebikuzure


    2017年2月17日 7:30
    モデレータ
  • hebikuzure様

    Edge が警告を出すというより、IE が証明書の検証を無視する(ように見える)という問題

    なるほど、この可能性もありそうですね。。

    Azure などで HTTPS サーバー

    ご提案ありがとうございます。

    ただHTTPSサーバを立ててからの環境構築に時間がかかるため、少し検討してみます。

    2017年2月17日 8:28
  • 自己署名入り証明書(いわゆる、オレオレ証明書)でないサーバー証明書と CA 証明書を 発行してインストールして試してみてはいかがですか?

    Active Directory 証明書サービスを利用できるのであれば、以下の記事に書いてあるようにして入手できます。

    Active Directory 証明書サービス
    http://surferonwww.info/BlogEngine/post/2012/02/05/Active-Directory-Certificate-Service.aspx

    それがダメなら、Symantec(旧 Verisign)から試験用の証明書を入手して使うという手もあります。

    テスト用無料 SSLサーバ証明書
    https://www.symantec.com/ja/jp/page.jsp?id=ssl-trial

    SSL も認証も不要な試験用のページで試した限りですが、基本的に Edge は CORS に対応しているようで、プリフライトリクエストは必要な場合も、そうでない場合も問題なかったです。

    なので、やはり自己署名入り証明書が怪しそうな気がします。


    • 編集済み SurferOnWww 2017年2月17日 11:07 脱字追加
    2017年2月17日 11:06
  • 今年のsha1から256への移行措置は自己証明書は関係ないのかと思っていましたが、

    https://social.technet.microsoft.com/Forums/ja-JP/5dd97901-e60c-4aad-9e94-ee402cecec2e?forum=w7itprogeneralja

    では変更してエラーメッセージが出なくなったという報告がありますが、該当しないでしょうか?


    • 編集済み tmori3y2 2017年2月20日 9:32
    2017年2月20日 9:30
  • SurferOnWww様

    tmori3y2様

    情報頂きありがとうございます。

    結論から申しますと、自己証明書を公的な証明書へ変更することによってEdgeでも通信可能となりました。(Microsoftのサポートへも質問してみました。)

    サーバ側で使用していた自己証明書が有効期限が切れており、その結果Edgeでメッセージが表示されていたようです。

    試しにOSの時間を有効期間内に変更し、かつ証明書のインポートを行ってみるとクロスドメイン通信が可能になりました。

    公的なものをだと基本的にインポートは不要になるため、公的な証明書で実現できるとの回答をサポートから頂いています。

    Edgeというよりも証明書の基本的な問題だったようです。

    情報提供いただきありがとうございました。

    • 回答としてマーク jimmy178504 2017年2月21日 4:59
    2017年2月21日 4:59