«Внутренняя ошибка цепочки сертификатов произошла» при подписании электронной почты в C # - PullRequest
1 голос
/ 25 января 2011

Я пытаюсь поставить цифровую подпись некоторого контента, включая всю цепочку сертификатов в подписи (чтобы получатель мог проверить подпись без проблем).Я получаю следующую ошибку: «Произошла внутренняя ошибка цепочки сертификатов» при вызове метода ComputeSignature () .

Установлены сертификаты как корневого, так и промежуточного ЦСв моей машине.Я пытаюсь подписать содержимое с помощью сертификата электронной почты Verisign.

Промежуточный сертификат CA Сертификат: VeriSign Class 1 Отдельный подписчик CA - G3

Root CA сертификат: VeriSign Class 1 Public Primary Certification Authority - G3

Вот код, который я использую:

public static byte[] GetSignature(
    string message, 
    X509Certificate2 signingCertificate)
{
    byte[] messageBytes = Encoding.ASCII.GetBytes(message);

    SignedCms signedCms = new SignedCms(new ContentInfo(messageBytes), true);

    CmsSigner cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, signingCertificate);
    cmsSigner.IncludeOption = X509IncludeOption.WholeChain;

    Pkcs9SigningTime signingTime = new Pkcs9SigningTime();
    cmsSigner.SignedAttributes.Add(signingTime);

    signedCms.ComputeSignature(cmsSigner, false); 

    return signedCms.Encode();
}
...