• C# 使用 RSA 加密算法生成证书签名产生“The system cannot find the file specified”异常


    使用 C# 中 RSA(System.Security.Cryptography.RSA加密算法生成证书签名进行身份验证,在 VS2022 开发工具本地运行应用程序一切正常。

    但将应用程序部署到远程服务器(如:Azure App Services),生成签名时产生如下错误信息:

    1. System.Security.Cryptography.CryptographicException: The system cannot find the file specified.
    2. at System.Security.Cryptography.CngKey.Import(ReadOnlySpan`1 keyBlob, String curveName, CngKeyBlobFormat format, CngProvider provider)
    3. at System.Security.Cryptography.CngPkcs8.ImportPkcs8(ReadOnlySpan`1 keyBlob)
    4. at System.Security.Cryptography.CngPkcs8.ImportPkcs8PrivateKey(ReadOnlySpan`1 source, Int32& bytesRead)
    5. at System.Security.Cryptography.RSACng.ImportPkcs8PrivateKey(ReadOnlySpan`1 source, Int32& bytesRead)

    这很可能是因为 Cryptographic Service 提供程序试图在用户存储区中存储或加载证书的密钥,并且由于配置文件不可用,因此加密上下文不可用。

    由于应用程序服务(Azure App Serivces)默认没有开启加载用户配置文件设定。

    解决上述问题:

    可在Azure应用程序服务 >> 配置 >> Application settings,增加 WEBSITE_LOAD_USER_PROFILE = 1 的应用配置信息即可。

    若应用程序部署在 Windows IIS 服务器上,则可以在应用程序池开启“加载用户配置文件”设定即可,设定步骤如下:

    1. 打开IIS管理器。
    2. 进入应用程序池管理页面,点选中要设定的应用程序池。
    3. 在右边“操作”模块下点击“高级设置...”或鼠标右键选择“高级设置...”。
    4. 在“进程模型(Process Model)”节点,将“加载用户配置文件(Load User Profile)”设为 True,如下截图:

  • 相关阅读:
    【ROS2初级11】安装最好的版本
    手写一个HashMap
    外汇天眼:使用 MT4 进行交易的最佳方式
    Linux C 网络编程概述
    基础算法:高精度加法
    基于51单片机的音乐盒播放器proteus仿真
    函数题37习题10-7 十进制转换二进制《C语言程序设计(第4版)》题目集
    【DZBS-202/T低电流启动中间继电器】
    vue2安装vue-router,less ,vuex的版本
    企业如何搭建智能客服系统?
  • 原文地址:https://blog.csdn.net/LZD_jay/article/details/133794935