programing

CryptographicException이 처리되지 않았습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

procenter 2021. 1. 16. 10:41
반응형

CryptographicException이 처리되지 않았습니다. 시스템이 지정된 파일을 찾을 수 없습니다.


SSL 통신의 신비를 받아들이려고 노력하고 있으며이 사이트 에서 훌륭한 자습서를 찾았습니다 . 내 인증서를 테스트하려고했습니다. Visual Studio 2012를 사용하여 기존 파일 (.pfx 형식의 내 인증서)을 추가 한 다음 app.config에서 "인증서"및 "암호"설정을 변경했습니다. 그러나 실행하려고 할 때 오류가 발생했습니다.

CryptographicException이 처리되지 않았습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

그런 다음 웹 서비스에서 똑같이 시도했습니다. 오류에 대한 자세한 내용이 있습니다.

System.Security.Cryptography.CryptographicException: System cannot find specified file.

   at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
   at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName)
   at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)
   v System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
   v TestServer.DataService.LoadSoap() v c:\Users\Administrator\Documents\Visual Studio 2012\Projects\TestServer\TestServer\DataService.asmx.cs:line 48

나는이 질문을 기사의 저자에게 썼지 만 그의 마지막 답변이 2012 년 3 월 이었기 때문에 그가 대답 할 것인지 확실하지 않다. 누군가가이 문제를 도와 줄 수 있다면 매우 감사 할 것입니다.

추신 : 인증서를 .cer에서 .pfx로 내보낼 때 내 보낸 파일의 제목을 변경했습니다. 문제에 미치는 영향은 의심 스럽지만 오히려 언급하고 싶습니다.


IIS의 응용 프로그램 풀에 다음을 설정 했습니까?

  1. IIS 관리자로 이동
  2. 응용 프로그램 풀 인스턴스로 이동
  3. 고급 설정을 클릭하십시오.
  4. 프로세스 모델에서 사용자 프로필로드를 true로 설정합니다.

자세한 내용은이 스택 질문을 참조하십시오. IIS 풀의 LoadUserProfile을 설정하면 정확히 어떻게됩니까?


Import 메서드를 사용하여 X509Certificate2를 가져 오려고 할 때 Cryptographic Exception을받은 사람들을 위해 MachineKeySet에 대한 Enum 옵션을 사용하면 IIS에서 userContext를 만들 필요가 없으므로 구현하기가 더 쉽다는 것을 알았습니다.

X509Certificate2 cert = new X509Certificate2();
cert.Import(certificateFilePath, certPasshrase, 
X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);

이 질문은 검색 순위가 높기 때문에 X509Certificate2에 ASP.net 응용 프로그램에서 상대적으로 위치한 pxf 키 파일에 대한 절대 경로 (허용 만 허용)를 제공하는 방법을 제시하고 싶습니다.

    string path = HttpContext.Current.Server.MapPath("~") + "..\keys\relative_key.pfx";

    X509Certificate2 cert = new X509Certificate2(path, "", X509KeyStorageFlags.DefaultKeySet);

csdMachineKeyKeyStore 플래그와 함께 CspParameters를 전달하면 IIS는 예외를 발생시키는 제한을 무시할 수 있습니다.

CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = Guid.NewGuid().ToString().ToUpperInvariant();
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(cspParams);

여기에 솔루션을 설립했습니다.

정보 자원 링크


상대 경로 대신 절대 경로를 지정해야합니다.

AppDomain.CurrentDomain.BaseDirectory +"/Certificate/cer.PFX"

참조 URL : https://stackoverflow.com/questions/17840825/cryptographicexception-was-unhandled-system-cannot-find-the-specified-file

반응형