azure - Azure 云服务无法从本地计算机找到证书
问题描述
我们的 API 通过 Azure 云服务(Web 角色)公开。我们使用上传到云服务的证书来加密存储在后端的数据。在证书轮换期间,我们通过更新 *.CSCFG 文件上传了新证书
我们的 CSCFG
<Certificate name="encryptcertificatethumbprint" thumbprint="NewThumbprint" thumbprintAlgorithm="sha1" />
当我们登录到 Portal > Cloud Service > Certificates 选项卡时。我们可以看到旧证书和新证书。
不幸的是,后端系统中的一些记录没有用新的旋转证书重新加密。当我们的应用程序从后端系统读取数据时,它无法解密并显示消息“无法解密秘密。请检查是否安装了序列号为'XXXXX-XXX'的证书。内部加密异常:'Keyset不存在”自旧webrole 实例中不存在证书。
我们没有使用两个证书进行另一次部署,而是远程进入 Web 角色实例并在 Personal > Certificate 下安装旧证书
安装旧证书后,应用程序仍然无法在本地计算机证书存储中通过指纹找到证书。我们尝试重新启动 webrole,但应用程序仍然无法选择证书。
几个问题,任何人都可以帮忙(没有任何部署来解决这个问题)
- webrole 实例上的证书位置是什么,我们可以在其中上传证书。我们的证书搜索逻辑基于 LocalMachine 中的序列号,然后是当前用户。虽然我们在 LocalMachine 中上传了证书,但仍然无法获取证书
- 当前用户证书存储区是什么,即运行 webrole 的帐户是什么
- 如果证书过期,证书会被退回吗?
解决方案
我没有尝试实现您的具体目标,但这些信息可能会帮助您更接近。
Azure 来宾代理将证书作为系统帐户安装在 CurrentUser 存储中,因此您想要与这些证书进行的任何交互都需要作为系统帐户。为此,您可以下载 Sysinternals Suite 并运行 psexec 以在系统上下文下启动 cmd 提示符。然后在新的 cmd 提示符下,您可以运行 certutil、mmc.exe 等:
psexec -i -d -s cmd
certutil -store -user My
您应该知道,无论您做什么(即安装新证书)都是暂时的。
- 有关何时重建 Windows 分区(D 驱动器)的信息,请参阅https://docs.microsoft.com/en-us/archive/blogs/kwill/windows-azure-disk-partition-preservation ,这意味着您将丢失您的手动安装的证书。
- 意外的角色回收(即 WaHostBootstrapper 退出或 WaIISHost/WaWorkerHost 崩溃)将导致来宾代理卸载然后重新安装所有证书。
推荐阅读
- java - 将数组插入 BST 中序遍历
- python - 诅咒行为擦除窗口框
- java - 查询休眠状态下向经理汇报的总人数
- python - 在 Post 请求的正文中发送列表值以验证 Pydantic 模型
- matplotlib - Python - 重新排列饼图中标签的顺序
- javascript - Google Play 控制台 Jquery 安全 jquery 3.3.1
- angular - Angular 9(Angular Material)在注册后重定向用户不起作用
- python - 如何在 pandas 数据框中找到每个地区的幸福指数最低和最高的国家?
- apache-kafka - 对 kafka-rest 的 CURL 请求
- bootstrap-4 - 问题:Bootstrap 4 模式将我的页面内容向左移动