집 >백엔드 개발 >C#.Net 튜토리얼 >ASP.NET에서 X509Certificate2를 사용할 때 발생하는 일부 문제에 대한 해결 방법 공유(그림)
본 글에서는 특정 참고값이 있는 X509Certificate2 사용 시 일련의 문제를 해결하는 방법을 ASP.NET에서 자세히 소개합니다. 관심 있는 친구는
을 참조하세요. WeChat 결제를 통해 환불할 때 p12 인증서를 사용해야 하기 때문에 일련의 함정에 직면했습니다. 나중에 쉽게 참조할 수 있도록 여기에 메모해 두세요.
인증서를 로드하는 원본 코드:
코드 복사 코드는 다음과 같습니다.
1 X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);2 Request.ClientCertificates.Add(cert);
테스트가 vs. 하지만 이 문제는 IIS에 배포할 때 계속 보고됩니다.
코드 복사 코드는 다음과 같습니다.
System.Security.Cryptography.CryptographicException: 系统找不到指定的文件。
상세 스택 추적 정보:
System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32hr)
System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFrom파일(String fileName, IntPtr 비밀번호, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
in System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile( 문자열 fileName , Object 비밀번호, ]
xml
, 문자열 url, Boolean isUseCert, Int32 timeout). 재테스트 결과 코드나 파일 경로에는 문제가 없는 것으로 확인되었습니다.
Microsoft 문서를 검색한 후 관련 지침을 찾아 문제를 지적했습니다. 아래에서 작업 과정을 공유하겠습니다.
[시작] -> [실행] -> [mmc]를 입력합니다. "콘솔" 인터페이스로 이동 -> [파일] 선택 -> [추가/
삭제[인증서] -> [컴퓨터 계정] -> [다음] -> [완료]
[인증서] -> [가져오기] 선택 >
인증서 파일 가져오기
2. 인증 인증서
먼저 winhttpcertcfg.exe 도구(Windows HTTP 서비스)를 설치합니다. 인증서 구성 도구). 설치가 완료되면 도구는 C:Program Files (x86)Windows Resource
KitsTools 또는 C:Program FilesWindows Resource KitsTools 폴더에 저장됩니다. cmd를 열고 다음 명령을 입력하십시오: 코드는 다음과 같습니다:winhttpcertcfg -g -c LOCAL_MACHINEMY -s "인증서 이름" -a " 귀하의 IIS 계정 ID "
-g 명령은 인증입니다 -c는 인증서가 위치한 저장 영역을 나타냅니다 또한 인증서 이름은 다음과 같습니다. , Something else 대신사진과 같이 실수로 이 인증서의 세부정보를 클릭하고 이름을 가져가서 인증이 실패했습니다.
iis 계정 식별은 해당 사이트에 해당하는 애플리케이션 풀을 의미합니다. 고급 설정에서 해당 사용자를 식별하는 옵션이 있습니다. 당시 승인한 ID는 Network Service였고, 애플리케이션 풀의 ID는 ApplicationPoolIdentity였습니다. 결과적으로 요청을 시작하면
코드 복사
가 나타납니다.System.Net.WebException: 요청이 중단되었습니다. SSL/TLS 보안
채널을 생성하지 못했습니다.이러한 구성을 완료한 후 이전에 인증서를 로드하기 위한 코드를 수정합니다.
复制代码 代码如下:
1 X509Store store = new X509Store("My", StoreLocation.LocalMachine); 2 store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 3 4 System.Security.Cryptography.X509Certificates.X509Certificate2 cert = 5 store.Certificates.Find(X509FindType.FindBySubjectName, "你的证书名称", false)[0];
再测试一下,终于成功!
위 내용은 ASP.NET에서 X509Certificate2를 사용할 때 발생하는 일부 문제에 대한 해결 방법 공유(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!