2013-05-18 4 views
0

x509certificates 클래스에 문제가 있습니다.제발 도와주세요

이 코드는 usb 스틱에서 작동합니다. 그러나 ".cer"파일은 작동하지 않습니다.

공공 기능 signString (ByVal의 MSG 문자열, 문자열로 ByVal의의 imzasahibi로) 문자열로

Dim unicode As Encoding = Encoding.UTF8 
    Dim msgBytes As Byte() = unicode.GetBytes(msg) 

    Dim signerCert As X509Certificate2 = GetSignerCert(imzasahibi) 
    Dim encodedSignedCms As Byte() = SignMsg(msgBytes, signerCert) 

    Dim result As String = Convert.ToBase64String(encodedSignedCms) 

    If Not VerifyMsg(msgBytes, encodedSignedCms) Then 
     Throw New Exception("Any problems") 
    End If 

    Return result 
End Function 

공공 기능 MesajImzala (ByVal의 MSG 문자열, 문자열로 ByVal의의 imzasahibi로) 문자열로

Dim sertifikamiz As String = HttpContext.Current.Server.MapPath ("certificateFiles/testFile.cer")

딤 서명자로 X509Certificate2 = X509Certificate2.C reateFromCertFile (sertifikamiz) 당신은 내가 파일을 전송하려면

Dim unicode As Encoding = Encoding.UTF8 
    Dim msgBytes As Byte() = unicode.GetBytes(msg) 

    Dim encodedSignedCms As Byte() = SignMsg(msgBytes, signerCert) 

    Dim result As String = Convert.ToBase64String(encodedSignedCms) 

    If Not VerifyMsg(msgBytes, encodedSignedCms) Then 
     Throw New Exception("Any problems") 
    End If 

    Return result 
End Function 

. 모두에게 감사 ...

설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.InvalidCastException : 'System.Security.Cryptography.X509Certificates.X509Certificate'türündeki의 nesne 'System.Security.Cryptography.X509Certificates.X509Certificate2'türüne의 atılamadı.

답변

0

.CER 파일에는 일반적으로 개인 키가없는 인증서 만 포함됩니다. 데이터에 서명하려면 개인 키가 있어야합니다. 따라서 .cer 파일로만 데이터에 서명 할 수 있습니다.

+0

대단히 감사합니다. 파일에서이 작업을 수행 할 수있는 방법이 있습니까? 어떤 제안이라도 괜찮습니까? – tuncgulec

+0

@ user2396436 CER 파일 만있는 경우 개인 키가 없으므로 서명을 수행 할 수 없습니다. 개인 키 (예 : 별도의 파일)가 있으면 CER + 키를 PFX로 변환 한 다음 PFX를로드하고 서명에 사용할 수 있습니다. 이 주제들은 이미 여러 차례에 걸쳐 이미 여기에서 논의되었습니다. –

+0

친애하는 친구, 정말 고마워요. "pfx as"시도. 당신 것. – tuncgulec

관련 문제