Openssl X509 v3 AuthorityKeyIdentifier实验与逻辑分析

       Openssl是X509的事实标准,目前主流OS或个别安全性要求较高的设计场景,对X509的证书链验证已经不在停留在只从数字签名校验了,也就是仅仅从公钥验签的角度,在这些场景中,往往还会校验AuthorityKeyIdentifier和SubjectKeyIdentifier的一致性,也即下级证书的AuthorityKeyIdentifier应该与上级证书的SubjectKeyIdentifier一致,这两个参数是X509 v3  extensions的范围。

        但是X509对SubjectKeyIdentifier与AuthorityKeyIdentifier本身以及它们之前的一致性校验逻辑,都没有严格的规定,因此我们只能follow Openssl的逻辑。

        Openssl的SubjectKeyIdentifier可以为hash,此时是公钥的160bit sha-1散列,或者是一个hex字符串,此时是人为预设的SubjectKeyIdentifier。

        Openssl的AuthorityKeyIdentifier是follow X509定义的,AuthorityKeyIdentifier实际上是一个组,有三个组成员,keyid,dirname,serialnum,keyid就是上级证书的SubjectKeyIdentifier。你可以提供authoritykeyidentifier=keyid,issuer,作为openssl参数,它会尽量把以上三个组成员给填满,为什么说尽量呢,因为上级证书可能压根就没有SubjectKeyIdentifier这个v3 extension属性。

        Openssl的证书链校验,如果提供了issuer_checks参数也是可以校验以上一致性的。

        openssl配置subjectKeyIdentifier = hash,此时openssl在签发证书时,会加入subjectKeyIdentifier参数,如果subjectKeyIdentifier这个参数没有的话,缺省是不会有任何subjectKeyIdentifier被加入的。

        此时如果authorityKeyIdentifier = keyid,issuer,那么只有issuer有效,也即会加入上级证书的dirname,serialnum。

        当subjectKeyIdentifier = hash;authorityKeyIdentifier = keyid,issuer时,产生的下级证书如下图。

        当没有subjectKeyIdentifier = hash;authorityKeyIdentifier = keyid,issuer:always时,产生的下级证书如下图。其中issuer:always强制加入dirname,serialnum两项。

        当没有subjectKeyIdentifier配置;仅有authorityKeyIdentifier = keyid,issuer时,产生的下级证书如下图。可以看到CA证书没有 subjectKeyIdentifier,下级证书没办法复制到subjectKeyIdentifier因此authorityKeyIdentifier 仅有其他两项。

        以上各种情况,均可以通过以下命令验证通过。

        openssl verify -CAfile cacert.pem --issuer_checks certwork.pem

以下为用到的配置文件与测试命令。

[ req ]
distinguished_name = req_distinguished_name
policy             = policy_match
x509_extensions     = v3_ca

# For the CA policy
[ policy_match ]
countryName             = optional
stateOrProvinceName     = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = IN
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name) ## Print this message
stateOrProvinceName_default     = KARNATAKA ## This is the default value
localityName                    = Locality Name (eg, city) ## Print this message
localityName_default            = BANGALORE ## This is the default value
0.organizationName              = Organization Name (eg, company) ## Print this message
0.organizationName_default      = GoLinuxCloud ## This is the default value
organizationalUnitName          = Organizational Unit Name (eg, section) ## Print this message
organizationalUnitName_default  = Admin ## This is the default value
commonName                      = Common Name (eg, your name or your server hostname) ## Print this message
commonName_max                  = 64
emailAddress                    = Email Address ## Print this message
emailAddress_max                = 64

[ v3_ca ]
#subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
basicConstraints = critical,CA:true
nsComment = "OpenSSL Generated Certificate"

[ v3_work ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:awlays,issuer:always
basicConstraints = critical,CA:true
nsComment = "OpenSSL Generated Certificate"
openssl genrsa -out private.pem 2048

openssl req -new -x509 -days 3650 -config opensslroot.cfg -key private.pem -out cacert.pem

openssl x509 -text -noout -in cacert.pem

openssl genrsa -out workkey.pem 2048

openssl req -new -key workkey.pem -config opensslroot.cfg -out certwork.csr

openssl req -text -in certwork.csr

openssl x509 -req -days 365 -CA cacert.pem -extfile opensslroot.cfg -extensions v3_work -CAcreateserial -CAkey private.pem -in certwork.csr -out certwork.pem

openssl x509 -in certwork.pem -text

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/148769.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生活消费分销系统搭建开发制作

文章目录 前言 一、生活消费系统是什么?二、生活消费分销系统的营销方式和功能三、总结 一、生活消费系统介绍 生活消费系统涵盖了吃喝玩乐,衣食住行。网购消费等生活消费的优惠券领取以及分销功能 二、生活消费分销系统的营销方式和功能 A: 会员体…

Shopee可以绑定大陆银行卡吗?Shopee收款方式选哪种?——站斧浏览器

shopee可以绑定大陆银行卡吗? 对于中国大陆的卖家而言,他们希望能够在Shopee上绑定自己的大陆银行卡,方便进行交易和收款。然而,目前的情况是Shopee并不支持直接绑定大陆银行卡。这主要是因为Shopee在中国大陆并不是主要运营的电…

【数据结构】直接插入排序

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

帝国CMS仿核弹头H5小游戏模板/帝国CMS内核仿游戏网整站源码

帝国CMS仿核弹头H5小游戏模板,帝国CMS内核仿游戏网整站源码。比较适合小游戏发布、APP应用资讯类网站使用,有兴趣的可以二次开发试试。 下载地址:https://bbs.csdn.net/topics/617579435

《QT从基础到进阶·二十八》QProcess使用,从一个exe程序启动另一个exe程序

QString exePath QCoreApplication::applicationDirPath(); //获取要启动的另一个exe路径 exePath exePath “/OffLineProcess.exe”; //路径exe名称 QProcess* Process new QProcess; //创建新的进程 Process->start(exePath)…

Spring Cloud Netflix微服务组件-Eureka

CAP理论 分区容忍是能容忍一个或一部分节点挂掉后,整体系统也能正常工作(就是别的节点还是活着的),所以分布式系统中P是必须要有的。比如数据库主从架构,主从两个节点之间需要数据同步,主挂了,…

uniapp大概是怎么个开发法(前端)

写在前面,博主是个在北京打拼的码农,从事前端工作5年了,做过十多个大大小小不同类型的项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何…

成本2元开发游戏,最快3分钟完成!全程都是AI智能体“打工”,大模型加持的那种

金磊 发自 凹非寺 量子位 | 公众号 QbitAI 家人们,OpenAI前脚刚发布自定义GPT,让人人都能搞开发;后脚国内一家大模型初创公司也搞了个产品,堪称重新定义开发——让AI智能体们协作起来! 只需一句话,最快3分…

leetcode:1576. 替换所有的问号(python3解法)

难度:简单 给你一个仅包含小写英文字母和 ? 字符的字符串 s,请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外,不存…

立仪科技光谱共焦在半导体领域的应用

半导体技术在近年来以极快的速度发展,对质量和精密度的要求也不断提升。在这样的背景下,用于材料与设备研究的先进检测技术如光谱共焦成像将自然地找到一席之地。下面我们将详细探讨一下光谱共焦在半导体领域中的应用。 光谱共焦技术,通过在细…

HTML5学习系列之标题和正文、描述性信息

HTML5学习系列之标题和正文、描述性信息 标题和正文标题段落 描述性信息强调注解备选上下标术语代码预定义格式缩写词编辑提示引用引述换行显示修饰非文本注解 总结 标题和正文 标题 按语义轻重排列&#xff1a;h1\h2\h3\h4\h5\h6 <h1>诗词介绍</h1> <h2>…

算法通关村——归并排序

归并排序 1、归并排序原理 ​ 归并排序是一种很经典的分治策略。 ​ 归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干小的数组&#xff0c;分成几个比较小的结构&#xff0c;然后是利用归并的思想实现的排序方法。将一个大的问题分解成一些小的问题分别求解&#xff…

区域入侵AI算法如何应用在工地场景,保卫工地施工安全?

在工地、厂区等施工场所&#xff0c;安全保障是必不可少的&#xff0c;特别是在人工智能技术日益成熟的今天&#xff0c;如何利用旭帆科技AI智能视频中的区域入侵算法助力智慧工地、保障工地安全呢&#xff1f; 1、建筑物周界安全 TSINGSEE青犀区域入侵算法可以用于监控建筑物…

03-CSS基础选择器

3.1 CSS基础认知&#x1f34e; 3.1.1 &#x1f441;️‍&#x1f5e8;️CSS概念 CSS&#xff1a;层叠样式表&#xff08;Cascading style sheets)&#xff0c;为网页标签增加样式表现的 语法格式&#xff1a; 选择器{<!-- 属性设置 -->属性名:属性值; <!--每一个…

大模型架构创新已死?

金磊 白交 发自 凹非寺 量子位 | 公众号 QbitAI 一场围绕大模型自研和创新的讨论&#xff0c;这两天在技术圈里炸了锅。 起初&#xff0c;前阿里技术VP贾扬清&#xff0c;盆友圈爆料吐槽&#xff1a;有大厂新模型就是LLaMA架构&#xff0c;但为了表示不同&#xff0c;通过改变…

wx.canvasToTempFilePath生成图片保存到相册

微信小程序保存当前画布指定区域的内容导出生成指定大小的图片&#xff0c;记录一下 api&#xff1a;wx.canvasToTempFilePath 效果&#xff1a; 代码&#xff1a;wxml <canvas style"width: {{screenWidth}}px; height: {{canvasHeight}}px;" canvas-id"my…

AI绘画工具汇总

目前市面上的AI绘画工具十分繁杂&#xff0c;以下工具可供参考&#xff1a; 1. Midjourney 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; Midjourney&#xff1a;最主流的AI绘图工具之一&#xff0c;出图效果好&#xff0c;简单学习就可上手。需要在di…

webstorm基础配置

设置左侧菜单栏文字大小 开启鼠标滚轮控制文字大小 配置自定义注释 设置左侧菜单栏文字大小&#xff1a;file》settings》Appearance&Behavior》Appearance 开启鼠标滚轮控制主界面文字大小&#xff1a;file》settings》Editor》General 配置自定义注释&#xff1a;fi…

【星海出品】SDN neutron (五) openvswitch

1、ovs-vswitchd组件是交换机的主要模块&#xff0c;运行在用户态&#xff0c;其主要负责基本的转发逻辑、地址学习、外部物理端口绑定等。还可以运用OVS自带的ovs-ofctl工具采用openflow协议对交换机进行远程配置和管理。 2、ovsdb-server组件是存储OVS的网桥等配置、日志以及…

2013年10月23日 Go生态洞察:字符串、字节、符文和字符

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…