如何使用 .NET Core 2 中 Azure Key Vault 中存储的 PFX 证书中的私钥?

2024-03-02

我用 C# 编写了一个 ASP.NET Core 2.0 网站,并启用了 Facebook 身份验证,因此它需要 HTTPS。我使用本机 Kestrel Web 服务器来托管该网站,并设置一个侦听器来根据 MS 文档获取 PFX 证书。我似乎无法找到让 Kestrel 在从 Key Vault 调用后识别私钥的方法。我知道它存在,因为我写了两个调试语句表明它确实存在。

这是我用来检索秘密的函数,它正在工作。

        public static async Task<X509Certificate2> GetKeyVaultCert()
    {
        X509Certificate2 pfx;

        try
        {
            var kvClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
            var secret = await kvClient
                .GetSecretAsync("https://macscampvault.vault.azure.net/secrets/letsencrypt").ConfigureAwait(false);

            byte[] bytes;
            if(secret.ContentType == "application/x-pkcs12")
                bytes = Convert.FromBase64String(secret.Value);
            else
            {
                bytes = new byte[0];
                Console.WriteLine("secret is not PFX!!");
                throw new ArgumentException("This is not a PFX string!!");
            }
            var password = new SecureString();

            var coll = new X509Certificate2Collection();
            coll.Import(bytes, null, X509KeyStorageFlags.Exportable);
            pfx = coll[0];
// File output added in case I end up needing to write cert to container
//          File.WriteAllBytes(Directory.GetCurrentDirectory().ToString() + "/Macs.pfx", bytes);
            Console.WriteLine(pfx.HasPrivateKey);
            Console.WriteLine(pfx.GetRSAPrivateKey());

        }
        catch (Exception ex)
        {
            Console.WriteLine($"There was a problem during the key vault operation\n{ex.Message}");
            throw;
        }

        return pfx;
    }

赋值调用后的调试语句pfx = coll[0];告诉我这个私钥存在,但是当我尝试使用连接到网站时lynx https://localhost我收到以下异常:System.NotSupportedException: The server mode SSL must use a certificate with the associated private key.

那么,如何使用私钥呢?这是一个gist https://gist.github.com/digitaldelirium/b782938c9f15bf3ddbfef526d29a9f72到有问题的文件。

我已经得到了帮助如何在 Azure Key Vault 中序列化和反序列化 PFX 证书? https://stackoverflow.com/questions/33728213/how-to-serialize-and-deserialize-a-pfx-certificate-in-azure-key-vault?rq=1但跟着它之后,我就到了这个状态。


在你的要点中,你有以下代码:

var keyVaultCert = GetKeyVaultCert().Result ??
    throw new ArgumentNullException("GetKeyVaultCert().Result");
pfx = new X509Certificate2(keyVaultCert.RawData);

第二行删除了私钥,因为RawData属性仅返回 DER 编码的 X.509 对象。

keyVaultCert已经是一个X509Certificate2有了私钥,您可能只想使用它。

pfx = GetKeyVaultCert().Result ?? throw etc;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 .NET Core 2 中 Azure Key Vault 中存储的 PFX 证书中的私钥? 的相关文章

  • 使用 TCP 套接字在本地代理视频

    我一直对向媒体浏览器添加对视频播客的支持非常感兴趣 我希望用户能够浏览可用的视频播客并从互联网上流式传输它们 这真的很容易 因为媒体播放器等将愉快地播放存在于云中的文件 问题是我想在本地缓存这些文件 因此同一集的后续观看将不涉及流式传输 而
  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • C++ 并行任务的开销

    我有以下简单的功能 include
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 如何生成可变参数包?

    给定不相关的输入是否可以生成非类型参数包 我的意思是 我想改变这一点 template
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • FFplay成功移入我的Winform中,如何设置它无边框?

    用这个代码 在 C 应用程序中显示 tcp 视频流 来自 FFPLAY FFMPEG https stackoverflow com questions 14201894 show a tcp video stream from ffpla
  • ef core 在更新数据库期间不使用 ASPNETCORE_ENVIRONMENT

    我使用 Visual Studio 通过一定的迁移来更新我的所有环境 使用下面的命令效果很好 update database Migration initMigrationProduct c ProductContext Environme
  • 如何将 Boost Spirit 自动规则与 AST 结合使用?

    编辑 当我想在另一个规则上使用它时 我扩展了 sehe 的示例以显示问题 http liveworkspace org code 22lxL7 http liveworkspace org code 22lxL7 17 我正在尝试提高 Bo
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置
  • 如何使用 .NET 捕获我的桌面视频?

    我想知道是否有任何方法可以使用 NET 捕获我的桌面的视频 截屏视频 我并不是在寻找截屏软件 而只是在寻找一种可以让我自己生成桌面视频的技术 我想过拍摄多个屏幕截图 但我不确定如何以编程方式生成带有图像序列的视频 有人有主意吗 Thanks
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各
  • 小数精度

    我使用小数类型进行高精度计算 货币 但我今天遇到了这个简单的划分 1 1 37 这应该再次得到 37 http www wolframalpha com input i 1 2F 281 2F37 29 http www wolframal
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个

随机推荐

  • TDE 启用对数据库性能有何影响?

    如果我在数据库上使用透明数据加密 会对数据库性能产生任何影响吗 这会导致数据库索引出现问题吗 有些人已经对此进行了测试 参见here http www databasejournal com features mssql article p
  • 跨行对 Pandas 数据框进行分组

    我有一个这样的csv client1 client2 client3 client4 client5 client6 amount Comp1 4 475000 Comp2 16 305584 Comp3 4 050000 Comp2 Co
  • Android 上的电子邮件活动

    我想从 Android 虚拟机发送电子邮件到我的 Gmail 帐户 问题 但是按下发送按钮后我得到 没有应用程序可以执行此操作 这是我的代码 Intent sendIntent new Intent Intent ACTION SEND s
  • GWT 中自动登录的会话和 Cookie

    我知道已经有很多问题了 但我似乎仍然没有找到明确的答案 我想要做的是让用户在登录两周后或直到他们注销之前被记住 以下是我认为应该发生的事情 我想知道是否有更多经验的人可以告诉我我是对还是错 用户首次登录 对服务器的 RPC 调用返回一个 U
  • 如何发布c# windows应用程序安装程序

    我正在尝试发布 C Windows 应用程序 我尝试安装 Shield 和 Visual Studio 安装程序 但它无法正常工作 此安装程序只能安装在安装了 Visual Studio 的笔记本电脑或 PC 上 谁能帮助我需要什么先决条件
  • 使用 gridsearchcv 的内存泄漏

    Problem 我的情况似乎是运行 gridsearchcv 时出现内存泄漏 当我运行 1 或 32 个并发工作线程 n jobs 1 时 会发生这种情况 以前我在 ubuntu 16 04 上运行过多次 没有出现任何问题 但最近升级到 1
  • 当资源无法调用其他步骤并重试抛出异常的同一步骤时,如何处理 FlatFileItemReader 异常?

    我正在使用 Spring Batch 远程分区 我的第一步为所有其他步骤准备输入文件 其他步骤处理输入文件 要在所有 4 台服务器上创建输入文件 我的第一步应该在所有服务器上运行 因此 我在所有服务器上设置了消费者并发数 1 网格大小 4
  • 从 UICollectionViewCell 呈现 UIPopoverController

    我希望通过 UICollectionViewCell 上的按钮呈现 UIPopoverController 到目前为止 一切都创建正常 但弹出窗口不可见 有什么特殊的方法可以做到这一点吗 如果我从集合视图单元格以外的任何其他位置显示该代码
  • 推荐一些类似于 Bresenham 的二维球面映射算法?

    我需要最快的球体映射算法 就像布雷森纳姆的线条画一样 类似于我在 Star Control 2 旋转行星 中看到的实现 是否有任何已经发明和 或实施的技术 我真的不想重新发明自行车 请帮忙 问题描述 我在 2D 表面上有一个必须出现球体的位
  • “setup”命名空间中没有定义命令:Magento 2

    我已经安装了latest version of Megento 2 前端 后端和功能一切正常 我有一个问题bin magento setup upgrade命令 当我在终端中运行此命令时 我得到以下异常 无效参数异常 setup 命名空间中
  • 使用 UIKitForMac 时“令牌不是预处理器子表达式中的有效二元运算符”

    所以我正在尝试为 mac 编译我的 iOS 项目 当我尝试使用 if targetEnvironment UIKitForMac 我从标题中得到了错误 我尝试将构建目标设置为 iOS 13 但似乎没有任何效果 Objective C if
  • 元素内的“u”属性

    由于我无法搜索到有意义的结果 因此我无法确定这不是重复的 但是 我在网站上运行 JSSOR 滑块 并且某些元素具有 u 属性 例如 div style width 100 height 500px 当我通过 W3 验证器运行此 u slid
  • 是否有 R 函数用于查找向量中元素的索引?

    在 R 中 我有一个元素x和一个向量v 我想找到一个元素的第一个索引v等于x 我知道做到这一点的一种方法是 which x v 1 但这似乎效率太低了 有没有更直接的方法来做到这一点 对于奖励积分 是否有一个功能可以在以下情况下工作 x是一
  • Angular2 在 ngSwitch 新视图创建后调用自定义函数

    我正在使用创建一个小应用程序Angular2 Ionic2 在这个应用程序中我想初始化google map into view segment当用户切换到map segment using ion segment 以下是示例代码结构
  • 如何暂时禁用Spring缓存的缓存

    我有一个 spring bean 注释为 Cacheable像这样定义的注释 Service public class MyCacheableBeanImpl implements MyCacheableBean Override Cach
  • 使用drawImage 进行裁剪在Safari 中不起作用

    我正在使用画布开发一些简单的图像处理功能 用户上传图像 能够旋转和裁剪图像 然后单击 确定 然后将图像分成两半 每一半绘制镜像到两个画布元素 如下所示 Original https i stack imgur com Bty5R jpg M
  • 相同分辨率设备 1080x1920 中的 Android 间距问题

    我正在设计 Zeplin 的屏幕 Zeplin在dp中提供了每个项目的属性 以下是水平回收器视图Zeplin 的 4 个项目的设计示例 对于 xxhdpi 设备 360 dp 意味着 1080 我正在两台具有不同 dpi 的 1080 设备
  • 括号配对 ({}[]()<>) 问题

    我希望能够将字符串中的所有括号配对 如果它们没有配对 那么它们会得到索引号和 False 看起来它一遍又一遍地重复一些值 即 cl pop 1 我试图找出问题出在哪里 但无论我如何努力 我都看不到它 所以我问是否有人帮助我找到错误 甚至改进
  • 如何在运行时读取/写入 app.config 设置而不使用用户设置?

    我正在寻找一种存储应用程序或机器级别设置的方法 可以使用以下命令在运行时写入这些设置 应用程序设置 http msdn microsoft com en us library k4s6c3a0 aspx 用户设置允许读 写 但应用程序设置不
  • 如何使用 .NET Core 2 中 Azure Key Vault 中存储的 PFX 证书中的私钥?

    我用 C 编写了一个 ASP NET Core 2 0 网站 并启用了 Facebook 身份验证 因此它需要 HTTPS 我使用本机 Kestrel Web 服务器来托管该网站 并设置一个侦听器来根据 MS 文档获取 PFX 证书 我似乎