对 vsto outlook 应用程序进行代码签名时,指定的提供程序类型错误无效
Invalid provider type specified error in code signing the vsto outlook application
我从 GoDaddy 带来了一个代码签名证书,从中生成了一个 .pfx 文件。但是当我使用这个文件对我的 outlook vsto 应用程序的 clickonce 清单进行代码签名时,我在 visual studio
中收到此错误
An error occurred while signing: Invalid provider type specified.
这可能是什么问题?
谢谢
存储在 .pfx
容器中的签名身份很可能是较旧的 "Cryptographic Service Providers" (CSP) 样式。您用于签署包的环境看起来像必需的 "Cryptography API: Next Generation" (CNG) 提供商类型。解决方案是将您现有的容器转换为使用 CNG 存储提供程序。这应该通过以下步骤完成...
- 将 PFX 导入您的个人商店
- 通过导出向导从商店导出 public 密钥
使用OpenSSL将私钥导出为.pem
格式
openssl.exe pkcs12 -in <original pfx file>.pfx -nocerts -out <pem file location>.pem
转换为 PVK
pvk.exe -in <pem file location>.pem -topvk -strong -out <pvk file location>.pvk
合并 Public 和私钥
pvk2pfx.exe -pvk <pvk file location>.pvk -pi <pvk password> -spc <pvk file location>.cer -pfx <new pfx file location>.pfx -po <pfx password>
现在您可以将新创建的 pfx 文件导入到证书管理器中。确保先从证书管理器中删除旧证书。证书就位后,您可以再次使用 certutil 来验证证书现在是否正确。
如果它现在显示提供者为 "Microsoft Strong Cryptographic Provider",您就知道操作已经成功。
致谢名单 Remy's Blog, where you may find the full explanation on the issue with examples and verification steps... Converting Certificate to use CSP Storage Provider in stead of CNG Storage Provider。
我从 GoDaddy 带来了一个代码签名证书,从中生成了一个 .pfx 文件。但是当我使用这个文件对我的 outlook vsto 应用程序的 clickonce 清单进行代码签名时,我在 visual studio
中收到此错误An error occurred while signing: Invalid provider type specified.
这可能是什么问题? 谢谢
存储在 .pfx
容器中的签名身份很可能是较旧的 "Cryptographic Service Providers" (CSP) 样式。您用于签署包的环境看起来像必需的 "Cryptography API: Next Generation" (CNG) 提供商类型。解决方案是将您现有的容器转换为使用 CNG 存储提供程序。这应该通过以下步骤完成...
- 将 PFX 导入您的个人商店
- 通过导出向导从商店导出 public 密钥
使用OpenSSL将私钥导出为
.pem
格式openssl.exe pkcs12 -in <original pfx file>.pfx -nocerts -out <pem file location>.pem
转换为 PVK
pvk.exe -in <pem file location>.pem -topvk -strong -out <pvk file location>.pvk
合并 Public 和私钥
pvk2pfx.exe -pvk <pvk file location>.pvk -pi <pvk password> -spc <pvk file location>.cer -pfx <new pfx file location>.pfx -po <pfx password>
现在您可以将新创建的 pfx 文件导入到证书管理器中。确保先从证书管理器中删除旧证书。证书就位后,您可以再次使用 certutil 来验证证书现在是否正确。
如果它现在显示提供者为 "Microsoft Strong Cryptographic Provider",您就知道操作已经成功。
致谢名单 Remy's Blog, where you may find the full explanation on the issue with examples and verification steps... Converting Certificate to use CSP Storage Provider in stead of CNG Storage Provider。