1

私の Web サーバーは、自己署名 SSL 証明書を使用しています。自分で検証チェックを実装することで接続できます。

private static Boolean ValidateCertificate(object sender,
     X509Certificate certificate, X509Chain chain,
     SslPolicyErrors sslpolicyerrors)
{
  return certificate.GetCertHashString().equals("ABCDEF");
}

private void Connect(String requestUrl)
{
    ServicePointManager.ServerCertificateValidationCallback = ValidateCertificate;
    var request = (HttpWebRequest) WebRequest.Create(requestUrl);
    var response = request.GetResponse();
    //...
}

によって返されたハッシュをハードコードされた値と比較してGetCertHashString()、これが実際に期待されている証明書であることを確認するのは安全ですか?

「本物の」証明書はチェーンの一部であり、自己署名されたルート証明書まで検証する必要があります。そのルート証明書の検証可能な部分が各アプリケーションにハードコードされていると思います。これにより、ハードコードされた値が改ざんされない限り、自己署名証明書は他の証明書と同じくらい安全であると信じるようになります。これは、マシン自体へのアクセスを意味し、その場合、標準のルート証明書が改ざんされる可能性があります。それも。あれは正しいですか?

4

0 に答える 0