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의 응용 프로그램 풀에 다음을 설정 했습니까?
- IIS 관리자로 이동
- 응용 프로그램 풀 인스턴스로 이동
- 고급 설정을 클릭하십시오.
- 프로세스 모델에서 사용자 프로필로드를 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"
'programing' 카테고리의 다른 글
정규식 유효성 검사의 10 진수 또는 숫자 값 (0) | 2021.01.16 |
---|---|
Django for 루프 템플릿에서 홀수 및 짝수 값을 얻으려면 어떻게해야합니까? (0) | 2021.01.16 |
iOS 방향 변경 즉시 감지 (0) | 2021.01.16 |
문자열 내에서 문자열이 나타나는 횟수 계산 (0) | 2021.01.16 |
데이터 테이블 온더 플라이 크기 조정 (0) | 2021.01.16 |