0
서명 된 PDF를 생성하기 위해 iTextSharp 5.5.10을 사용하고 있습니다. 특히 LTV 서명이 필요합니다. LTV는 CRL 및 OCSP 요청으로 수행 할 수 있습니다.어떻게 iTextSharp (LTV 서명)로 OCSP 응답을 캐시 할 수 있습니까?
나는 그런 코드로했다 :
IOcspClient ocspClient = new OcspClientBouncyCastle();
ICrlClient crlClient = new CrlClientOnline(myCert.Chain);
List<ICrlClient> lstCrlClients = new List<ICrlClient> { crlClient };
MakeSignature.SignDetached(sap, signature, this.myCert.Chain, lstCrlClients, ocspClient, null, 0, CryptoStandard.CMS);
문제는 : 난 (동일한 인증서와 함께 항상) 많은, 많은 PDF에 서명하고있다. 그래서, 나는 CRL과 OCSP 요청을 매번 만들고 싶지 않다. 나는 그들을 "캐쉬 (cache)"해야한다.
나는 이러한 종류의 코드 (이 C# MemoryCache에 의존)으로 CRL을 캐시 관리 : 나는 그러나 OCSP 응답을 캐시 할 수있는 솔루션을 찾을 수 없습니다private List<ICrlClient> GetCachedListCrlClient()
{
var key = "LstCrlClient";
List<ICrlClient> lstCrlClients = MyGlobalCachingProvider.GetItem<List<ICrlClient>>(key);
if (lstCrlClients == null)
{
lstCrlClients = new List<ICrlClient>();
for (int i = 0; i < myCert.Chain.Length; i++)
{
String crlUrl = CertificateUtil.GetCRLURL(myCert.Chain[i]);
if (crlUrl != null)
{
byte[] crlDownloaded = new System.Net.WebClient().DownloadData(crlUrl);
ICrlClient crlClient = new CrlClientOffline(crlDownloaded);
lstCrlClients.Add(crlClient);
}
}
MyGlobalCachingProvider.AddItem(key, lstCrlClients, DateTime.Now.AddHours(2));
}
return lstCrlClients;
}
. 아무도 단서가 있습니까?
OCSP 응답은 일반적으로 살 수있는 단지 아주 짧은 시간이있다. 따라서 일반적으로 캐싱은 가치가 없습니다. 짧은 시간 내에 매우 많은 PDF에 서명하는 경우,'CrlClientOffline'와 비슷한'OcspClientOffline'을 구현하는 것이 좋습니다. 코드를 보아라, 그것은 사소하다. – mkl
고맙습니다. 당신의 해결책은 괜찮습니다. 그러나 OCSP 응답은 항상 단명하지는 않습니다 : 몇 분에서 며칠입니다. 제 경우에는 10 일입니다! 그래서 iText는 우리에게이 문제에 대한 표준 솔루션을 제공해야한다고 생각합니다 ... – AEC
10 일 OCSP 응답? 와우! 좋습니다, 그 경우에 나는 당신이 캐싱하기를 원한다는 것을 이해합니다. 나는 단 몇 분을 넘지 않는 생활 시간에만 익숙합니다. – mkl