Как получить 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;
}
}
Любые идеи, как обойти эту проверку в этом сценарии?
1 ответ
Попробуйте запустить это через fiddler, возможно, вы столкнулись с этой проблемой, вызванной http://support.microsoft.com/kb/2677070
Симптомы этой проблемы заставляют вас сосредоточиться на целевом URL-адресе, но может быть несколько вложенных запросов к URL-адресам обновления Windows, перечисленным в этой статье базы знаний, а также к URL-адресу в сертификате. У нас была эта проблема, и Fiddler смог выявить ошибки 502 по пути, который привел к ошибке 800C0019.
Мы исправили это, добавив все URL-адреса, предоставляемые fiddler, в список исключений клиента, но здесь есть исправление от Microsoft.
Конечно, это только возможное решение.