나는 다음과 같은 문제에 직면했습니다.
다음 코드를 실행합니다.
var binaryData = File.ReadAllBytes(pathToPfxFile);
var cert = new X509Certificate2(binaryData, password);
두 가지 과정에서. 프로세스 중 하나가 아래에서 실행 LOCAL_SYSTEM
되고이 코드가 성공합니다. 다른 하나는 "Users"로컬 그룹에 속하는 로컬 사용자 계정으로 IIS 내부에서 실행되며 다음과 같은 예외가 발생합니다.
System.Security.Cryptography.CryptographicException
Object was not found.
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password)
//my code here
그래서 나는 약간의 Google 검색을 통해 비슷한 질문에 대한 답변 을 찾았습니다 . LoadUserProfile
응용 프로그램 풀 을 활성화하려고 시도했지만 이제 작동합니다.
문제는 내가 설정했을 때 정확히 어떤 일이 일어나고 LoadUserProfile
어떤 결과가 발생할지 알 수 없다는 것입니다. "좋은"것이라면 왜 기본적으로 "켜져 있지"않고 왜 거기에있는 거죠?
LoadUserProfile
IIS 풀에 설정하면 정확히 어떤 일이 발생 하며 어떤 부정적인 결과가 발생할 수 있습니까?
new X509Certificate2(keyFilePath, keyFilePassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.EphemeralKeySet)
저장소에 개인 키를 쓰지 않고 서버에 대한 관리 권한이 필요하지 않은 사용 을 원할 것 입니다.
new X509Certificate2(binaryData, password, X509KeyStorageFlags.MachineKeySet)
경우 사용자 프로필이 필요하지 않도록 인증서로드를로 변경할 수 있습니다 .