特定のXMLドキュメントが改ざんされていないことを検証しようとしています。System.Security.Cryptography.Xml.SignedXmlで.NetのCheckSignatureを使用すると、テストサーバーでは失敗しますが、開発マシンではありません。
私の開発マシンではこれは問題なく動作しますが、テストサーバーでは常に失敗します。開発マシンは、Windows 10で、テストサーバーでは、私はSignedXMLのデバッグログを作成するためのWindows Server 2008 R2およびWindows Server 2012
管理しているが、これは、それは次のようになります。
開発:
System.Security.Cryptography.Xml.SignedXml Information: 1 : [SignedXml#03d410d5, BeginCheckSignatureFormat] Checking signature format using format validator "[System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
System.Security.Cryptography.Xml.SignedXml.DefaultSignatureFormatValidator".
System.Security.Cryptography.Xml.SignedXml Information: 6 : [SignedXml#03d410d5, FormatValidationResult] Signature format validation was successful.
System.Security.Cryptography.Xml.SignedXml Information: 1 : [SignedXml#03d410d5, BeginCheckSignatureFormat] Checking signature format using format validator "[System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
System.Security.Cryptography.Xml.SignedXml.DefaultSignatureFormatValidator".
System.Security.Cryptography.Xml.SignedXml Information: 6 : [SignedXml#03d410d5, FormatValidationResult] Signature format validation was successful.
System.Security.Cryptography.Xml.SignedXml Information: 2 : [SignedXml#03d410d5, BeginCheckSignedInfo] Checking signature on SignedInfo with id "(null)".
System.Security.Cryptography.Xml.SignedXml Information: 7 : [SignedXml#03d410d5, NamespacePropagation] Propagating namespace xmlns="<namespace here>".
など。
System.Security.Cryptography.Xml.SignedXml Information: 1 : [SignedXml#00e65efe, BeginCheckSignatureFormat] Checking signature format using format validator "[System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
System.Security.Cryptography.Xml.SignedXml.DefaultSignatureFormatValidator".
System.Security.Cryptography.Xml.SignedXml Information: 6 : [SignedXml#00e65efe, FormatValidationResult] Signature format validation was successful.
System.Security.Cryptography.Xml.SignedXml Information: 1 : [SignedXml#00e65efe, BeginCheckSignatureFormat] Checking signature format using format validator "[System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]
System.Security.Cryptography.Xml.SignedXml.DefaultSignatureFormatValidator".
System.Security.Cryptography.Xml.SignedXml Information: 6 : [SignedXml#00e65efe, FormatValidationResult] Signature format validation was successful.
System.Security.Cryptography.Xml.SignedXml Information: 2 : [SignedXml#00e65efe, BeginCheckSignedInfo] Checking signature on SignedInfo with id "(null)".
しかし、それはただそこで終了:それはほとんど同じを開始し、テストサーバーで
。情報なし:7が記録され、関数はfalseを返します。
テストサーバーには、少なくとも.Net 4.5.2がインストールされているため、SHA-256署名に問題がないと推定されています。
私はここで何が欠けていますか?
どのように失敗しますか? falseを返すか、例外をスローしますか? 'CheckSignature'の呼び出しでコードはどのように見えますか?具体的には、証明書の有効性をチェックしますか? SHA-256が利用できない場合、例外が発生します。 –
@AndersAbelただfalseを返します。私は週末にそれを把握することができた、私の答えを以下に掲載するだろう。 – Drak