什么是SAN?

SSL   2020-03-13 03:44  
SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。先来看一看 Google 是怎样使用 SAN 证书的,下面是 Youtube 网站的证书信息:这里可以看到这张证书的 Common Name 字段是 *.google.com,那么为什么这张证书却能够被 www.youtube.com 这个域名所使用呢。原因就是这是一张带有 SAN 扩展的证书,下面是这张证书的 SAN 扩展信息:这里可以看到,这张证书的 Subject Alternative Name 段中列了一大串的域名,因此这张证书能够被多个域名所使用。对于 Google 这种域名数量较多的公司来说,使用这种类型的证书能够极大的简化网站证书的管理。使用 openssl 生成带有 SAN 扩展的证书请求文件(CSR)首先我们将 openssl 的配置文件复制一份作临时使用,CentOS6 中 openssl 的配置文件在 /etc/pki/tls/openssl.cnf,将这个文件复制到 /tmp 下。此文件的格式是类似 ini 的配置文件格式,找到 [ req ] 段落,加上下面的配置:req_extetions = v3_req这段配置表示在生成 CSR 文件时读取名叫 v3_req 的段落的配置信息,因此我们再在此配置文件中加入一段名为 v3_req 的配置:[ v3_req ]# Extensions to add to a certificate requestbasicConstraints = CA:FALSEkeyUsage = nonRepudiation, digitalSignature, keyEnciphermentsubjectAltName = @alt_names这段配置中最重要的是在最后导入名为 alt_names 的配置段,因此我们还需要添加一个名为 [ alt_names ] 的配置段:[ alt_names ]DNS.1 = www.ustack.inDNS.2 = www.test.ustack.com这里填入需要加入到 Subject Alternative Names 段落中的域名名称,可以写入多个。接着使用这个临时配置生成证书:$ openssl req -new -nodes -keyout ustack.key -out ustack.csr -config /tmp/openssl.cnf查看证书请求文件的内容:$ openssl req -text -noout -in ustack.csr可以看到此证书请求文件中会包含 Subject Alternative Names 字段,并包含之前在配置文件中填写的域名。使用 openssl 签署带有 SAN 扩展的证书请求假设使用本机作为子签署 CA 对此证书请求进行签署,签署的方式为:$ openssl ca -policy policy_anything -out ustack.crt -config /tmp/openssl.cnf -extensions v3_req -infiles ustack.csr签署后,查看证书的内容:$ openssl x509 -text -noout -in ustack.crt使用单条命令实现觉得上面的方式太麻烦了?使用命令一步生成带 SAN 扩展的证书请求文件:$ openssl req -new -sha256 \ -key ustack.key \ -subj "/C=CN/ST=Beijing/L=Beijing/O=UnitedStack/OU=Devops/CN=www.ustack.com" \ -reqexts SAN \ -config <(cat /etc/pki/tls/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:www.ustack.in,DNS:www.test.ustack.com")) \ -out ustack.csr上面生成证书请求时的几个字段的意义:C => CountryST => StateL => CityO => OrganizationOU => Organization UnitCN => Common Name (证书所请求的域名)emailAddress => main administrative point of contact for the certificate签署上面生成的证书:$ openssl ca -in ustack.csr \-extensions SAN \-config <(cat /etc/pki/tls/openssl.cnf \ <(printf "[SAN]\nsubjectAltName=DNS:www.ustack.in,DNS:www.test.ustack.com")) \-out ustack.crt查看证书内容:$openssl x509 -text -noout -in ustack.crt

您或许对下面这些文章有兴趣:                     本月吐槽辛苦排行榜

部落快速搜索栏

各类专题梳理

网站导航栏

订阅本站

联系部落首领^_^

  有关于免费资源部
  落的问题、意见、
  建议、推荐免费资
  源、交换链接等,
  欢迎与我联系

  QQ:123456789

  Q群:123456789

  邮箱:123456@163.com

返回顶部