如何在 C# 中创建 X509Certificate2 时更改颁发者名称

2024-02-14

我正在我的 C#.net 应用程序中创建 X509Certificate2 证书。创建证书时,如何设置颁发者名称?目前发行人名称与主体名称相同。

请帮忙。


Hmm.

终于我用了充气城堡 dll创建证书。使用它,有一种方法可以设置颁发者名称。

这是要生成的完整代码x509证书并存储到值得信赖的人 store:

 private X509Certificate2 GeneratePFXFile(string certificate,string company,string   email,string state,string locality,string username,string country)
    {
        X509Certificate2 cert = null;
        try
        {
            var kpgen = new RsaKeyPairGenerator();

            kpgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 2048));

            var kp = kpgen.GenerateKeyPair();

            var gen = new X509V3CertificateGenerator();

            var certName = new X509Name("CN=" + certificate);
            var issuer = new X509Name("C="+country+",O="+company+",OU=LBC Mundial Corp.USA,E="+email+",L="+locality+",ST="+state);
            var serialNo = BigInteger.ProbablePrime(120, new Random());

            gen.SetSerialNumber(serialNo);
            gen.SetSubjectDN(certName);
            gen.SetIssuerDN(issuer);
            gen.SetNotAfter(DateTime.Now.AddYears(50));
            gen.SetNotBefore(DateTime.Now);
            gen.SetSignatureAlgorithm("MD5WithRSA");
            gen.SetPublicKey(kp.Public);

            gen.AddExtension(
                X509Extensions.AuthorityKeyIdentifier.Id,
                false,
                new AuthorityKeyIdentifier(
                    SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(kp.Public),
                    new GeneralNames(new GeneralName(certName)),
                    serialNo));

            gen.AddExtension(
                X509Extensions.ExtendedKeyUsage.Id,
                false,
                new ExtendedKeyUsage(new ArrayList() { new DerObjectIdentifier("1.3.6.1.5.5.7.3.1") }));

            var newCert = gen.Generate(kp.Private);
            byte[] pfx = DotNetUtilities.ToX509Certificate(newCert).Export(System.Security.Cryptography.X509Certificates.X509ContentType.Pfx, (string)null);

            X509Store store = new X509Store((StoreName)StoreName.TrustedPeople, (StoreLocation)StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadWrite);

            cert = new X509Certificate2(pfx,(string)null, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);

            store.Add(cert);
            store.Close();
        }
        catch (Exception ex)
        {
            ShowError(ex.Message);
            return null;
        }
        return cert;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中创建 X509Certificate2 时更改颁发者名称 的相关文章

随机推荐

  • 如何从现有类型定义类型但使用可选键(不使用 Partial)?

    我正在 React Redux 中进行一些状态合并 const newStateSlice state activeData entities action payload localId action payload isModified
  • 是否有 NSLog(@"%s", __PRETTY_FUNCTION__) 的 Swift 替代方案

    在 Objective C 中 您可以使用以下命令记录正在调用的方法 NSLog s PRETTY FUNCTION 通常这在日志记录宏中使用 虽然 Swift 不支持宏 我认为 但我仍然想使用包含被调用函数名称的通用日志语句 这在斯威夫特
  • 标签内的图像和文本

    这是生成的 html asp net 删除了一些客户端识别详细信息 在 Windows XP IE 7 中 单击图像不会执行任何操作 单击文本执行超链接 右键单击任意位置 然后选择open in new window or open也有效
  • Django:如何使用另一个应用程序中的模型

    我有两个应用程序 homepage and blog 我有一个模型Post在应用程序中blog 我可以将此模型用于应用程序blog但不适用于应用程序homepage 我如何在应用程序中使用这个模型homepage 我想在主页中显示我最近的一
  • 立即检测 iOS 方向变化

    我有一个游戏 其中设备的方向会影响游戏的状态 用户必须在横向 纵向和反向横向方向之间快速切换 到目前为止 我一直在通过以下方式注册游戏以获得方向通知 UIDevice currentDevice beginGeneratingDeviceO
  • jQuery 按值选择选项元素

    我有一个由 span 元素包裹的 select 元素 我不允许使用 select id 但可以使用 span id 我正在尝试编写一个 javascript jquery 函数 其中输入是数字 i 它是 select 选项的值之一 该功能会
  • R 在 Leaflet 中使用热图

    我有一个运行 Shiny 的 Linux 机器 我正在尝试根据演示获取传单运行的代码here https rpubs com bhaskarvk leaflet heatmap and here http leaflet github io
  • getRealPath() 返回 false(Laravel 5.2 和图像干预)

    上传图片时 getRealPath 总是返回false image file request gt file image file image file gt getRealPath gt FALSE 这是结果dd image file 另
  • 如何将 char 数组定义为常量?

    这里是 C C 菜鸟 我已经在头文件中定义了它 typedef unsigned char BitChar 9 8 data bytes chars and one width byte char extern BitChar BitFon
  • 使用 XCode 增加堆栈大小

    我在Linux上开发了一个命令行应用程序 需要增加其堆栈 在 Linux 上我只是使用了解决方法 ulimit s unlimited在运行程序之前 在 Mac OS X 上 使用 G 命令行 我添加到编译选项 Wl stack size
  • 使用代码清理时在 Resharper 中禁用/自定义注释(重新)格式化

    有没有办法定义如何使用 Resharper 6 清理 注释 我没有找到解决这个问题的方法 代码清理之前
  • 为什么 IntelliSense 无法将我的查询所选项目识别为元素?

    Problem 我试图弄清楚为什么当我使用以下命令访问 HTML 元素时 VSCode 的 IntelliSense 不会建议元素对象属性 document querySelector 每当我使用document querySelector
  • 重试 Javascript.Promise.reject 有限次数或直到成功

    我有一个函数说myMainFunction从客户端调用 然后调用mypromisified功能 设想 mypromisified函数可能会间歇性失败 我需要延迟 以指数增长 调用此函数 直到成功或达到最大尝试次数 到目前为止我所拥有的 以下
  • icmp 端口不可达错误消息

    我正在将 UDP 数据包从一台 PC 发送到另一台 PC 我正在使用 Wire Shark 观看整个活动 我注意到有一段时间数据包从一个系统到另一个系统的传输很顺利 然后突然间ICMP有错误的数据包 port unreachable 开始出
  • Bash 脚本中的这一行是如何工作的?

    我试图弄清楚顶部的某一行代码是如何BASH 手册页选项卡补全脚本 https github com scop bash completion blob 52315ef2ceb3f8e6b7fe45a09f8df24b73394da4 com
  • 是否可以通过 GitHub 的 Web 界面恢复提交

    我正在 Chromebook 上教授 HTML 课程 我们使用 GitHub 进行修订控制 我想向我的学生展示如何恢复提交 由于我们在 Chromebook 上没有 shell 访问权限 因此我希望通过 GitHub 网站找到一种在线执行此
  • Laravel 5.2 - pluck() 方法返回数组

    我正在尝试升级我的项目 L5 1 gt L5 2 在升级指南 http laravel com docs 5 2 upgrade upgrade 5 2 0有一件事我不清楚 The listsCollection 上的方法 查询生成器和 E
  • 如何使用 datetime.time 绘图

    我有 HH MM SS 格式的时间戳列表 并希望使用 datetime time 绘制某些值 看来 python 不喜欢我这样做的方式 有人可以帮忙吗 import datetime import matplotlib pyplot as
  • 我如何告诉 Masonry 组件它的单元格已经改变了高度?

    我有一个反应组件 它以网格模式显示一维项目列表 每个项目都具有相同的宽度和高度 并且它们位于三列内 可能有很多这样的东西 所以我决定使用 Masonry 组件来尝试一下 React virtualized 该组件似乎是专门为这个用例而编写的
  • 如何在 C# 中创建 X509Certificate2 时更改颁发者名称

    我正在我的 C net 应用程序中创建 X509Certificate2 证书 创建证书时 如何设置颁发者名称 目前发行人名称与主体名称相同 请帮忙 Hmm 终于我用了充气城堡 dll创建证书 使用它 有一种方法可以设置颁发者名称 这是要生