最佳答案
我尝试使用自签名证书(c #) :
X509Certificate2 cert = new X509Certificate2(
Server.MapPath("~/App_Data/myhost.pfx"), "pass");
在一个共享的网站托管服务器上,我得到了一个错误:
System.Security.Cryptography.CryptographicException: An internal error occurred.
堆栈跟踪结尾为
System.Security.Cryptography.CryptographicException.
ThrowCryptogaphicException(Int32 hr) +33
System.Security.Cryptography.X509Certificates.X509Utils.
_LoadCertFromFile(String fileName, IntPtr password, UInt32 dwFlags,
Boolean persistKeySet, SafeCertContextHandle& pCertCtx) +0
System.Security.Cryptography.X509Certificates.X509Certificate.
LoadCertificateFromFile(String fileName, Object password,
X509KeyStorageFlags keyStorageFlags) +237
System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(
String fileName, String password) +131
在我的开发计算机上,它可以加载。 我加载 * . pfx 而不是 * . cer 文件的原因是我需要一个私钥访问权限(cerfile 加载 OK)。 我在我的开发机器上做了这样的 pfx:
makecert -r -n "CN=myhost.com, E=admin@myhost.com" -sky exchange -b 01/01/2009
-pe -sv myhost.pvk myhost.cer
<b>pvk2pfx</b> -pvk myhost.pvk -spc myhost.cer -pfx myhost.pfx -po pass</code>
我使用的是 makecert 的 v5.131.3790.0版本