如何让Abcpdf使用自签名证书通过SSL呈现内容

时间:2014-03-26 09:32:06

标签: pdf-generation ssl-certificate self-signed abcpdf9

我们的Dev / QA环境使用自签名ssl证书,我们正在试用Abcpdf将html转换为pdf,但呈现html的站点是在自签名SSL证书下运行的。

    Doc theDoc = new Doc();
    theDoc.AddImageUrl("https://mysite/Test");
    theDoc.Save(@"c:\tmp\htmlimport.pdf");
    theDoc.Clear();

结果

WebSupergoo.ABCpdf9.Internal.PDFException : Unable to render HTML. Unable to access URL.
COM error 800c0019. Security certificate required to access this resource is invalid.

TimeStampServiceUrl的手册说明:

  

ABCpdf使用System.Net.WebRequest发送时间戳请求。   您可以使用   System.Net.ServicePointManager.ServerCertificateValidationCallback to   连接到一个时,自定义信任关系建立   SSL / TLS频道。

但AddImageUrl()没什么相似之处,我还是试过了,回调从来没有被击中:

public class PdfTester
{
    public void Test()
    {
        ServicePointManager.ServerCertificateValidationCallback = ServerCertificateValidation;

        Doc theDoc = new Doc();
        theDoc.AddImageUrl("https://mysite/Test");
        theDoc.Save(@"c:\tmp\htmlimport.pdf");
        theDoc.Clear();
    }


    private static bool ServerCertificateValidation(
        object sender,
        X509Certificate certificate,
        X509Chain chain,
        SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }
}

在这种情况下如何绕过此验证的任何想法?

1 个答案:

答案 0 :(得分:1)

尝试通过fiddler运行此操作,您可能会遇到由http://support.microsoft.com/kb/2677070

引起的此问题

此问题的症状会导致您专注于目标网址,但可能会对该知识库文章中列出的Windows更新网址以及对证书中的网址的请求提出多个子请求。我们遇到了这个问题,fiddler能够在导致800C0019错误的路上暴露502错误。

我们通过将fiddler公开的所有网址添加到客户的例外列表中来解决此问题,但Microsoft已修复了here

当然这只是一种可能的决议。