■やりたい事
 購入したサーバー証明書がサーバーとの通信時に自分のプロジェクトのサーバーから
 送られてきたものである事をチェックたいのですが、
 どのようにすれば良いかがわかりません。

■やってみた事
 手順は下記になり、下記のURLの方のページを参考にしました。
 http://qiita.com/harmegiddo/items/b72ca4f430292251c8a6

1.APIのURLを送信した時に、証明書のハッシュを取得しておきます。
2.このハッシュ値をプログラム内に定数として持ちます。
3.リクエストを投げた時に、サーバーから送られてきた証明書のハッシュと
  定数のハッシュを比較して一致すればTrueとなります。
4.証明書が更新された場合は、ハッシュ値が異なるの定数も更新する必要があります。

SSL Policy Error:のログにはRemoteCertificateChainErrorsと表示されていました。

■定数

private string FingerPrint = "ハッシュ値";

■呼び出し元

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate); 

■デリゲート

public bool ValidateServerCertificate
            (
              object sender,
              System.Security.Cryptography.X509Certificates.X509Certificate certificate,
              X509Chain chain,
              System.Net.Security.SslPolicyErrors sslPolicyErrors)
{

    UnityEngine.Debug.Log("SSL Policy Error: " + sslPolicyErrors.ToString());
    UnityEngine.Debug.Log("Cert. Hash: " + certificate.GetCertHashString());

    if (certificate.GetCertHashString() == FingerPrint)
    {
        UnityEngine.Debug.Log("Correct!");
        return true;
    }
    return false;
}

■質問1
 プログラム上で自分たちのプロジェクトのサーバーから送られてきたものであることを
 どのようにチェックすれば良いでしょうか?

■質問2
 下記URLから購入したサーバー証明書と通信に使用している証明書のハッシュ値は
 一致したのですが、このページは誰でもみれるので誰でもなりすませるのではないかと
 思っています。
 ユニークである事はどのように判断しているのでしょうか?
 https://www.geotrust.co.jp/resources/repository/intermediate.html

■質問3
 RemoteCertificateChainErrorsはサーバーとの認証に失敗しているという事だと
 思うのですが、X509Chain .ChainPolicy.ExtraStoreに
 サーバー証明書もしくは付随する中間証明書を追加すれば良いでしょうか?