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

        在 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)的值相同。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为什么使用istio:云平台令使用它们的公司受益匪浅。但不可否认的是,上云会给 DevOps 团队带来压力。为了可移植性,开发人员必须使用微服务来构建应用,同时运维人员也正在管理着极端庞大的混合云和多云的部署环境。 Istio 允许您连接、保护、控制和观察服务。从较高的层面来说,Istio 有助于降低这些部署的复杂性,并减轻开发团队的压力。它是一个完全开源的服务网格,作为透明的一层接入到现有的分布式应用程序里。它也是一个平台,拥有可以集成任何日志、遥测和策略系统的 API 接口。Istio 多样化的特性使您能够成功且高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法。教学内容:istio原理,envoy原理,envoy案例,envoy配置,istio crd配置,istio流量管理,istio安全配置,istio可观察性,istio策略控制,istio升级,istio常见问题,istio wasm,istio多控制面板,gateway-api,slime教学特色:a.1000多个istio实战案例,20多个envoy案例。800多个envoyfilter案例,全程已实战为主,理论相对较少,案例90%可试验b.涵盖98%以上crd字段配置c.不仅讲解yaml配置,同时结合envoy配置讲解d.不回避难点内容,深入讲解envoyfilter配置e深入讲解envoyf详细讲解额外内容,比如gateway-api,wasm,升降级,发布,灰度发布,蓝绿发布,istioctl命令,slime,多控制面板,多集群,常见问题g以一个完整案例串联所有内容h以markdown文件提供课件,内容详细,方便大家练习I有学员指出我的istio课程不够突出重点,安装80/20原则,20%内容是常用的,那我是否就讲这20%就可以了呢,其他课程确实是这么干的,他们只讲擅长的20%,我的目的不是这样的,我希望istio课程买我的一个就够了,让你全面学习istio,甚至遇到偏的问题不需要百度,课程里就有讲过,但是难免会出现一个问题,就是不够突出重点,我尽量兼顾全面的时候突出重点,讲到重点,核心功能时我会提示下。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值