介绍一下 X.509 数字证书中的扩展项 subjectAltName

【HTTPS】使用OpenSSL生成带有SubjectAltName的自签名证书 操作步骤 首先新建一个配置文件 ssl.conf如下: [ req ] default_bits = 4096 distinguished_name = req_distinguished_name req_extensions = req_ext [ req_distinguished_name ] countryName = Country... 阅读详情

        在 RFC 5280《Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile》中定义了 X.509 公钥数字证书和证书撤销列表的内容和格式。

        在 X.509 编码格式的数字证书中,使用 Issuer 子项标明证书的颁发者,Issuer 子项必须包含一个非空的 DN (Distinguished Name) 名,证书中还可以使用扩展项 issuerAltName (即 Issuer Alternative Names 的缩写) 来表示证书颁发者的其他名称,issuerAltName 是一个非关键的(non-critical)扩展项。

        数字证书使用 Subject 子项标明证书的持有者,并且使用 subjectAltName 扩展项对持有者的身份进行更多的标记和界定,在 subjectAltName 中可以包含有关持有者身份的多条信息。如果证书持有者是一个CA,则 Subject 项不能为空,必须包含一个 DN 名,该 DN 名必须与该 CA 颁发的所有证书中 Issuer 项的 DN 名相同。

        在 RFC 5280 4.2.1.6.小节 “Subject Alternative Name” 中,定义了 subjectAltName(即Subject Alternative Name,还可以缩写为:SAN),它可以包含以下内容:电子邮件地址、域名、IP 地址、URI(Uniform Resource Identifier),而且以上类型的值可以存在一个或多个。如果证书中的 Subject 项的内容为空,则 CA 在颁发证书时,必须在证书中放入扩展项 subjectAltName,并且应将该扩展项标记为 critical。当证书中的 Subject 项包含不为空的 DN 名时,CA 在颁发证书时必须将 subjectAltName 标记为 non-critical。

        当扩展项 subjectAltName 包含一个电子邮件地址时,邮件地址的格式必须为 Local-part@Domain 形式,例如 TestUser@163.com,注意不能写成 <Local-part@Domain>,即不要使用尖括号 < 和 > 将邮件地址包起来。类似于 subscriber@example.com 形式的电子邮件地址是合法的,但是像 subscriber.example.com 这种形式的电子邮件地址不允许在SubAltName 中出现。
        当扩展项 subjectAltName 包含一个 IP 地址时,可以使用 IPv4 或 IPv6 形式的地址。
        当扩展项 subjectAltName 包含一个 dNSName 名时,此时证书持有者的名称是一个域名,这个域名以 IA5String 格式表示,被存储在 subjectAltName 的 dNSName 子项中。尽管空字符串也是一个合法的域名,但是在 subjectAltName 中不允许使用值为空串的 dNSName 项。

        在 RFC 5280 中对 subjectAltName 的 ASN.1 编码定义如下:
id-ce-subjectAltName  OBJECT IDENTIFIER ::= { id-ce 17 }

SubjectAltName  ::=  GeneralNames

GeneralNames  ::=  SEQUENCE SIZE (1..MAX) OF GeneralName

GeneralName  ::=  CHOICE {
    otherName [0]  OtherName,
    rfc822Name [1]  IA5String,
    dNSName [2]  IA5String,
    x400Address [3]  ORAddress,
    directoryName [4]  Name,
    ediPartyName [5]  EDIPartyName,
    uniformResourceIdentifier [6]  IA5String,
    iPAddress [7]  OCTET STRING,
    registeredID [8]  OBJECT IDENTIFIER }

OtherName  ::=  SEQUENCE {
    type-id  OBJECT IDENTIFIER,
    value [0]  EXPLICIT ANY DEFINED BY type-id }

EDIPartyName  ::=  SEQUENCE {
    nameAssigner [0]  DirectoryString OPTIONAL,
    partyName [1]  DirectoryString }

        根据 RFC 6125《Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)》中的规定,当一个网站使用 TLS 证书标记自己的身份时,如果证书中包含 subjectAltName,在识别证书持有者时会忽略 Subject 子项,将以 subjectAltName 中包含的内容来识别证书持有者。在早期颁发的证书中可能未包含 subjectAltName,但是在新颁发的证书中必须包含 subjectAltName 项。最新版本的浏览器如 Chrome、Firefox 等在通过 HTTPS 访问 web 网站时,会对网站证书中的 subjectAltName 项进行检查,如果未包含该项或该项有问题,Chrome 浏览器会报告 NET::ERR_CERT_COMMON_NAME_INVALID 错误,并提示“安全证书没有指定主题备用名称”。

        对于一张 TLS 证书,如果这张证书将被用于多个网址,则应在 Subject 子项中 CommonName 部分放入一个最重要的URI,并且只能包含一个 URI。可以将所有的 URI 放置到 subjectAltName(即:SAN)中,根据 CA/Browser Forums(即:CA/浏览器论坛国际组织)的规定,在 Subject 子项 CommonName 部分出现的 URI 必须在 SAN 中再次出现,而且通常出现在“SAN DNS Name=...”列表中第一个元素的位置。浏览器会检查当前访问的网址是否与证书中 SAN 扩展项里包含的 DNS Name 列表中的某一个网址相符,如果不符就会报错。

        下面看一个示例,在 Chrome 浏览器中访问 GitHub 网站,并查看证书,如下图:

        证书中的 Subject 子项内容如下:

        然后查看 SAN 项的内容,结果如下图:

        可以看到 SAN 项中包含两个 DNS Name=... 的条目,并且第一条内容与 subject 项的 CN (即 CommonName)的值相同。

【openssl学习笔记】SSL Server Cert制作 openssl req -new -x509 -keyout ca.pem -out ca.crt -config openssl.cfg openssl req -new -key server.pem -config openssl.cfg -out server.csr openssl ca -in server.csr -out server.crt -config openssl 阅读详情

相关推荐

使用自签证书利用浏览器进行HTTPS接口的安全访问

HTTPS的基本工作原理想必对于许多开发者来说是非常熟悉的了,还不是太熟悉的同学一起先看一下HTTP常见的八股文中的描述以及如何让浏览器信任我们的自签证书,实现https安全连接

卡卡尔的专栏 9323

X.509 数字证书中的扩展 subjectAltName

介绍一下 X.509 数字证书中的扩展 subjectAltName

sky527759的博客 1205

X.509证书扩展字段安全探秘:从EV验证到隐蔽通道攻防实战

在网络安全领域,X.509证书作为PKI体系的核心,是建立TLS/SSL加密通信、实现身份认证的基石。其工作原理基于公钥密码学,通过可信的证书颁发机构对实体身份进行数字签名,从而在客户端与服务器之间建立信任链。这技术的核心价值在于为互联网通信提供了机密性、完整性和身份验证保障,广泛应用于HTTPS网站、电子邮件加密、代码签名等场景。然而,证书的扩展字段,特别是主题备用名称和证书策略等部分,因其设计的灵活性,在提供强大功能的同时也可能成为安全盲点。攻击者可能利用这些字段构建隐蔽通道,在看似合法的证书中隐藏恶

weixin_34326179的博客 442

x509-subjectAltName

x509

liudong200618的博客 1609

Windows 下使用 OpenSSL 命令行创建包含 subjectAltName 扩展数字证书

1. CA 的基本原理简介(了解相关背景知识的读者请跳过这一部分) 我们回想一下在生活中,两个以前从未谋面的人如何核实对方的身份。由于每一个公民都有派出所颁发的身份证,两个人只要通过查看对方的身份证,就可以大体上知道对方是谁。这个验证身份的过程如下图: 在互联网上,识别陌生实体的思路与上述过程类似。首先建立一个有公信力的认证机构 CA(即Certificate...

henter的专栏 6167

SubjectAltName(简称 SAN)是 X.509 数字证书中的一个扩展字段,它允许在单个证书中指定多个身份标识。

**通配符证书**:虽然通配符证书(如 `*.example.com`)可以覆盖整个子域,但有时您可能还需要包括不在此通配符模式下的额外域名。- **IP 地址绑定**:某些情况下,特别是当服务没有关联的 DNS 名称时,可以通过 SAN 中的 IP 地址来绑定 SSL/TLS 证书。- **内部和外部域名**:对于既提供公共互联网服务又提供内部网络服务的组织来说,SAN 可以同时包含面向公众的域名和仅供内部使用的域名。2. **IP Address**: 指定一个或多个 IP 地址。

wangqiaowq的博客 747

openssl 生成多域名 多IP 的数字证书

工具是用的:windows平台 Win64OpenSSL-3_2_0.exe 或 Win64OpenSSL_Light-3_2_0.exe (建议用:Win64OpenSSL-3_2_0.exe )// 设置遗嘱消息 qos 默认为 1 retained 默认为 false。* (消费者) mqtt消息入站通道,订阅消息后消息进入的通道。* (消费者) mqtt消息入站通道,订阅消息后消息进入的通道。* (生产者) mqtt消息出站通道,用于发送出站消息。// 设置异步不阻塞。

xichji的专栏 1433

从Issuer到Subject:X.509证书中的身份链与信任传递

本文深入解析X.509证书中Issuer与Subject构成的信任链机制,揭示HTTPS安全连接背后的身份验证原理。通过证书链构建、标准属性集应用及常见验证陷阱的实战分析,帮助开发者掌握PKI体系下的信任传递逻辑,提升TLS/SSL问题诊断能力。

weixin_30653023的博客 469

Go 语言标准库 crypto/x509 深度解析:构建安全的数字证书与 PKI 体系

本文深入解析 Go 语言标准库 crypto/x509,探讨如何构建安全的数字证书与 PKI 体系。主要内容包括: X.509 证书原理:解析证书结构、信任链和常见格式(PEM/DER)。 库核心功能:涵盖证书解析、生成、验证及密钥管理等模块。 实战示例: 解析与验证证书(TLS 服务端场景) 生成自签名证书(测试环境) 验证证书链(客户端校验服务端证书) 通过代码示例和最佳实践,帮助开发者掌握数字证书的安全应用,适用于 TLS 服务、CA 构建等场景。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 1165

数字证书全解析:从原理到实战,运维安全必备指南

数字证书是网络通信中实现身份认证与数据加密的核心技术,它基于公钥基础设施(PKI)构建信任链,确保通信双方的身份可信与数据安全。其技术价值在于为HTTPS、API安全、微服务间通信等场景提供了基础的安全保障。在工程实践中,证书的生成、部署、续期与监控是运维工作的关键环节,尤其涉及证书链完整性与SAN扩展字段的正确配置。本文聚焦于证书生命周期管理,针对证书链、SAN扩展等常见问题提供解决方案,并探讨自动化工具与监控策略,帮助开发者与运维人员构建稳固的证书管理体系。

diaogan4202的博客 339

PKI.js 核心功能解析:前端实现数字证书处理与OCSP验证

公钥基础设施(PKI)是保障网络通信安全的核心技术体系,其核心原理基于非对称加密和数字证书,为身份认证、数据完整性和机密性提供技术支撑。在Web应用开发中,处理X.509证书、验证签名和检查吊销状态是实现高等级安全特性的关键。传统上,这些复杂的PKI操作严重依赖后端服务,导致架构耦合与潜在的安全风险。PKI.js作为纯JavaScript实现的PKI核心库,通过ASN.1 DER编解码和模块化设计,将证书解析、链式验证及OCSP请求构建等能力前置到浏览器或Node.js环境。其价值在于实现了安全边界的重新定

weixin_33739523的博客 367

证书未包含subjectAltName字段

Java强制要求SSL证书包含SAN字段,且必须与连接的主机名匹配。

weixin_36994098的博客 1287

在大型电商网站中哪些SSL证书比较适合

大型电商涉及的资金往来比较多,DV SSL证书已经不太适合,OV SSL证书和EV SSL证书的安全等级比DV SSL证书要高很多,是比较适合大型电商类的网站。其中Digicert和GlobalSign这两个SSL证书品牌是比较不错的选择。 Digicert和GlobalSign都比较侧重于中高端市场,主要投入在OV SSL证书和EV SSL证书中,而这两款SSL证书也是大型电商比较常用的。 这两个SSL证书品牌都是成立时间比较久的SSL证书品牌,旗下还有许多子品牌SSL证书,在国际上的知名度也比较

341

使用pyopenssl提取证书中的subjectAltName

本文介绍一下如何通过Python的pyopenssl模块解析证书的subjectAltName

村中少年的专栏 2911

【2.学习__签名证书和加密证书】

实习期学习一些签名和加密的知识: ------------------------暂时先这样,有时间了再整理。学习的方法: 先学习证书文件内容、结构,再针对问题进行学习 证书相关的知识: 1. 证书的结构大致是什么样的? 证书的机构分为三部分: tbsCertificate: 包含 主题 和 发行者的名字,与主题联系起来的公开密钥,有效期和其他相关信息 signatu...

jy0921 6009

如何使用OpenSSL生成带有SubjectAltName的自签名证书?

我试图生成一个自签名证书与OpenSSL with SubjectAltName in.While我生成证书的csr,我的猜测是我必须使用OpenSSL x509的v3扩展。我在用 :openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730有人可以帮我确切的语法吗?Can someone help me w...

Crystal360的博客 1万+

openssl.cnf 参数说明

openssl.cnf的文件内容包括了三大部分: 默认的文件配置、 证书请求配置及 证书签发配置。除此之外还可以配置X.509证书的扩展,在使用OpenSSL函数库时也可以使用配置机制第一段是默认段,一般没有section_name,但不是一定没有,可以自定义有名称的。默认段中定义的是一些公共属性,当搜索一个给定名称的段时,将首先搜索有名称的段,当搜索不到匹配的段后会搜索默认段。以下是默认段的内容。

m0_51514815的博客 2852
上一篇: 介绍一种门限SM2密码方案
下一篇: Windows 下使用 OpenSSL 命令行创建包含 subjectAltName 扩展项的数字证书
henter
博客等级 码龄24年 283粉丝 132原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值