Как заставить Abcpdf отображать контент через SSL с помощью самозаверяющего сертификата

В наших средах 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 для настройки установления доверительных отношений при подключении к каналу 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;
    }
}

Любые идеи, как обойти эту проверку в этом сценарии?


person chrisp_68    schedule 26.03.2014    source источник


Ответы (1)


Попробуйте запустить это через fiddler, вы можете столкнуться с этой проблемой, вызванной http://support.microsoft.com/kb/2677070

Симптомы этой проблемы заставляют вас сосредоточиться на целевом URL-адресе, но может быть несколько подзапросов к URL-адресам обновления Windows, перечисленным в этой статье базы знаний, а также к URL-адресу в сертификате. У нас была эта проблема, и fiddler смог выявить ошибки 502, что привело к ошибке 800C0019.

Мы исправили это, добавив все URL-адреса, открытые fiddler, в список исключений клиента, но есть исправление от Microsoft здесь< /а>.

Конечно, это всего лишь возможное решение.

person reckface    schedule 22.05.2014
comment
Теперь я реструктурировал код, чтобы создать PDF-файл из строки HTML вместо того, чтобы переходить по URL-адресу. В любом случае спасибо за ответ. - person chrisp_68; 22.05.2014