を実装することができコンテキストどうすればServerCertificateValidationCallback
クライアントコードは、リモートのWeb APIに接続する必要があります。 SSLは、有線で交換される機密情報のため必須です。私たちは自ら発行した証明書を持っています 現在、リモートIISに適切に設定されているものはありません。証明書が信頼されていないことを除いて、すべてが正常にテストされています。
ローカルマシンに証明書をインストールして信頼することができます。しかし、何らかの理由で(例えば、XamarinのAndroidクライアントもあります)、それは適切な解決策ではありません。
現在の問題を回避するには、単にデスクトップ上の両方のAndroid Xamarinの両方取り組んでいるコードで証明書エラー、無視することです:
ServicePointManager.ServerCertificateValidationCallback =
(s, certificate, chain, sslPolicyErrors) =>
{
// Here I would like to check against that the certificate
// is the specific one I issued, and only that case return with true
// if (what is the most suitable to write here?)
return true;
};
質問を
注:これは、開発/テスト段階です。プロダクションでは、信頼できる認証局によって作成された証明書がインストールされます。
今私は何かを受け入れることについて悪い気持ちがあるので、私はそれを絞りたいと思います。 証明書が発行された特定のものであることを確認する方法は、そのケースだけが真で返されます。 これは、コードを実行し、ブレークポイントを配置し、証明書を取得する作業アイデアですか?サムプリント?
...またはそれ以上... PublicKeyStringを取得して確認しますか?
証明書の拡張子[Subject Key Identifier](https://knowledge.symantec.com/support/registrar-name/index?page=content&actp=CROSSLINK&id=SO18140#SKI)をチェックして、別個の値を許可することができます。 –
拇印を使用すると、1つの証明書に絞ることができます。公開鍵またはSubject Key Identifierを使用すると、同じ鍵ペアに限定されますが、同じ証明書には限定されません。 – pepo
識別子をハードコードしたら、証明書全体を 'byte []'として埋め込み、それを 'cert.RawData'と比較するだけです。 – bartonjs