.NET 6学习笔记(8)生成自签证书

这篇具有很好参考价值的文章主要介绍了.NET 6学习笔记(8)生成自签证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇我们通过导出IIS Express的自签证书,供ASP.NET Core程序启用HTTPS。本篇我们讨论如何生成自签证书。
自签证书的生成,有多种方式。比如OpenSSL或PowerShell都可以通过命令生成证书。对于.NET程序,也有System.Security.Cryptography.X509Certificates命名空间下,对应的C#类来实现。
首先我们通过类X500DistinguishedName来填写证书的Subject,即使用者信息。
Subject中的信息用以识别证书使用者,对自签证书来说可能不太重要,常见的字段有:

.NET 6学习笔记(8)生成自签证书

 比如该证书由中国的巨硬软件研发中心使用,Subject可能就是下面的写法。

string subject = $"C=CN, O=Hugehardsoft, OU=R&D Hub, CN={Environment.MachineName}";

var rsa = RSA.Create();
var x500DistinguishedName = new X500DistinguishedName(subject);
var req = 
    new CertificateRequest(x500DistinguishedName, rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);

SSL证书一般通过RSA算法来生成公钥和私钥。
在创建CertificateRequest实例之后,我们需要添加DnsName,可以认为证书只对这里添加到DnsName的地址才有效。

SubjectAlternativeNameBuilder sanBuilder = new SubjectAlternativeNameBuilder();
sanBuilder.AddDnsName("localhost");
sanBuilder.AddDnsName(Environment.MachineName);
req.CertificateExtensions.Add(sanBuilder.Build());

比如上述代码,仅添加了localhost和机器名作为DnsName,那么我们在用IP地址访问时。证书将显示为不可信,网站不安全。
在完成DnsName的添加后,我们就可以生成自签证书了。通过CreateSelfSigned方法,创建一个10年有效期的证书,并将证书保存为c:\temp\SelfSignedSample.pfx文件,同时设置证书的导出密码为123456。我们通过Kestrel配置证书时将会用到该密码。

var cert = req.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(10));
File.WriteAllBytes("C:\\temp\\SelfSignedSample.pfx", cert.Export(X509ContentType.Pfx, "123456"));

 参考上一篇《.NET 6学习笔记(7)——ASP.NET Core通过配置文件启用HTTPS》,我们创建一个ASP.NET Core的Web APP。

.NET 6学习笔记(8)生成自签证书

 然后在appsettings.production.json里添加Kestrel的配置项:

{
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://localhost:8888",
        "Certificate": {
          "Path": "c:\\temp\\SelfSignedSample.pfx",
          "Password": "123456"
        }
      }
    }
  }
}

我们在Properties文件夹下的launchSettings.json中,修改对应Kestrel托管的配置项,将"ASPNETCORE_ENVIRONMENT"修改为"Production"。

  "profiles": {
    "WebAppWithSelfSignedCert": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7122;http://localhost:5122",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Production"
      }
    },

此时我们用Kestrel托管(不是IIS Express)上述ASP.NET Core应用,并通过https://localhost:8888去访问该网站。会发现提示不是专用连接。这是因为我们没有信任该自签证书。

.NET 6学习笔记(8)生成自签证书

 就和12306网站的证书一样的操作,需要安装该自签证书。实际用户可以通过浏览器导出证书。然后双击进行安装。

.NET 6学习笔记(8)生成自签证书

 需要注意的是,我们应该将证书安装到“受信任的根证书颁发机构”。

.NET 6学习笔记(8)生成自签证书

完成上述操作之后。清理浏览器缓存并关闭浏览器,重新打开后我们再通过localhost:8888去访问网站,就会看到显示为可信任的https连接了。
但是如果我们用本机的IP去访问,仍然会使不受信任的状态。这是因为之前提到的没有把IP地址加入到证书的DnsName中。

.NET 6学习笔记(8)生成自签证书

本篇我们介绍了如何通过.NET中命名空间System.Security.Cryptography.X509Certificates下的Class生成自签证书。

水平所限,欢迎指正。

 GitHub:

manupstairs/CreateSelfSignedCert: Show how to create self signed certificate using C#. (github.com)

以下链接,是MS Learn上Windows开发的入门课程,单个课程三十分钟到60分钟不等,想要补充基础知识的同学点这里:

开始使用 Visual Studio 开发 Windows 10 应用

开发 Windows 10 应用程序

编写首个 Windows 10 应用

创建 Windows 10 应用的用户界面 (UI)

增强 Windows 10 应用的用户界面

在 Windows 10 应用中实现数据绑定文章来源地址https://www.toymoban.com/news/detail-435796.html

到了这里,关于.NET 6学习笔记(8)生成自签证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自签内网IP https证书并部署

     生成CA根证书私钥  使用私钥生成CA根证书 注:这里依次需要输入国家 CN、省份:SHANGHAI、城市:SHANGHAI、组织名称:XXX、组织代码:XXX、自签的证书IP或域名:192.168.140.120、邮箱:xxx@qq.com  生成内外 IP 的私钥  使用私钥生成证书请求文件 注:这里与上述 CA的操作一致(填写

    2024年01月17日
    浏览(22)
  • CentOS7自签SSL证书并配置nginx

    一、生成SSL证书 1、安装依赖包       yum install -y openssl openssl-devel 2、生成私钥,会让你输入一个 4~2048 位的密码,你需要暂时记住这个密码       openssl genrsa -des3 -out server.key 2048 输入两遍相同的密码 3、生成CSR(Certificate Signing Request 证书签名请求 ) 输入以下命令:       op

    2024年02月12日
    浏览(36)
  • 通过openssl实现自签国密双证书详细教程

    openssl 1.1.1+ 版本增加了对SM2 的支持,所以我们就能直接使用这些版本的opsnssl 生成 SM2的公私钥对 BggqgRzPVQGCLQ==是椭圆曲线的关键参数,对应secp256k1标识,用secp256k1生成私钥每次私钥是不同的,但EC PARAMETERS都是相同的。 生成的是非压缩格式的公钥。 输入国家、城市、公司名称

    2024年02月04日
    浏览(38)
  • 不重启Docker能添加自签SSL证书镜像仓库吗?

    在企业应用Docker规划初期配置非安全镜像仓库时,有时会遗漏一些仓库没配置,但此时应用程序已经在Docker平台上部署起来了,体量越大就越不会让人去直接重启Docker。 那么,不重启Docker能添加自签SSL证书镜像仓库吗? 可以 ,在文中会找到答案。 实现思路来自Docker官网(

    2024年02月12日
    浏览(23)
  • k8s 使用cert-manager证书管理自签

    个人建议使用安装更快,比helm快,还要等待安装crd 查看你的证书 手动签发ssl自签证书 最后ingress 最后访问

    2024年01月22日
    浏览(67)
  • openssl SM2(ECC)自签服务端和客户端证书

    参考文章:https://www.golinuxcloud.com/openssl-generate-ecc-certificate/#5_Create_CA_certificate_with_ECC_Key (228条消息) openssl 制作SM2多级证书链_酷ying的博客-CSDN博客_openssl sm2 sm3 csr 1、在当前目录创建存储证书文件夹,配置openssl.cnf所需要的文件,将openssl.cnf文件放到当前目录(编译openssl源码包会

    2024年02月11日
    浏览(31)
  • 使用xca工具生成自签证书

    本文使用 xca 生成自签证书。 之前使用 openssl 生成证书,在 golang 中测试,发现客户端连接失败,经查发现是 Subject Alternative Name 不支持导致的。因虚拟机 openssl 版本较低,有个功能无法实现,且升级麻烦(编译不通过),经搜索,找到 xca 工具生成证书,最终达到目的。文中

    2024年02月16日
    浏览(25)
  • 微信小程序报错request:fail -2:net::ERR_FAILED(生成中间证书)

    小程序本地测试调用https接口正常,真机调试发现报错 request:fail-2:net:ERR_FAILED 很有可能是ssl证书问题。 进入网站:https://www.myssl.cn/tools/check-server-cert.html 输入网站后读取证书结果如下 缺少中间证书 中间证书是CA(证书颁发机构)签发数字证书时使用的一种证书。它是在根CA证

    2024年02月04日
    浏览(34)
  • linux 下生成ssl自签证书, 并配置nginx通过https访问

    因为映射了域名,需要升级为https,由于是IP地址访问,所以生成自签名证书并设置nginx 这里服务端和客户端的Organization Name (eg, company)以及Organizational Unit Name都必须要和CA的不一样才可以

    2024年02月11日
    浏览(31)
  • 大数据笔记--Spark机器学习(第一篇)

    目录 一、数据挖掘与机器学习 1、概念 2、人工智能 3、数据挖掘体系 二、机器学习 1、什么是机器学习 2、机器学习的应用 3、实现机器学习算法的工具与技术框架 三、Spark MLlib介绍 1、简介 2、MLlib基本数据类型 Ⅰ、概述 Ⅱ、本地向量 Ⅲ、向量标签的使用 Ⅳ、本地矩阵 Ⅴ、

    2024年02月07日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包