美文网首页
【SSL】TLS证书创建,添加SAN

【SSL】TLS证书创建,添加SAN

作者: Bogon | 来源:发表于2023-05-26 07:31 被阅读0次

X509v3 Subject Alternative Name (SAN)是 TLS 证书中的一个扩展字段,用于指定与证书主题相关的附加名称。
这些附加名称可以是 IP 地址、DNS 名称、电子邮件地址等,用于指定证书可用于哪些服务或主机。
这个字段的存在可以提高证书的灵活性和可用性,因为它允许一个证书可以同时适用于多个不同的主机或服务。
例如,一个 TLS 证书可以同时指定多个域名,这样就不需要为每个域名单独颁发证书了。

openssl 创建证书 ,如何添加SAN?

要在 OpenSSL 创建证书时添加 SAN,需要在配置文件中添加一个 subjectAltName 扩展。以下是一个示例配置文件:

[req]
distinguished_name = req_distinguished_name
req_extensions = req_ext

[req_distinguished_name]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
commonName = Common Name (e.g. server FQDN or YOUR name)

[req_ext]
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
IP.1 = 192.168.1.1

req_ext 部分中添加了 subjectAltName 扩展,并在 alt_names 部分中列出了要添加的 SAN,包括两个 DNS 名称和一个 IP 地址。可以根据需要添加或删除 SAN。

然后可以使用以下命令创建证书:

openssl req -new -x509 -sha256 -key example.key -out example.crt -days 365 -config example.cnf

其中,example.key 是私钥文件,example.crt 是证书文件,example.cnf 是上述配置文件。

创建证书时,OpenSSL 将读取配置文件中的 subjectAltName 扩展,并将其添加到证书中作为 SAN。

2afd26e345cfc2f28549f3946327524.jpg

查看证书详情:

openssl x509 -noout -text  -in   xxx.crt

keytool 创建证书 ,如何添加SAN?

要在 keytool 创建证书时添加 SAN,可以使用 -ext 参数添加 subjectAltName 扩展。
以下是一个示例命令:

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 -ext SAN=dns:example.com,dns:www.example.com,ip:192.168.1.1
keytool \
  -genkeypair \
  -keystore keystore.jks \
  -alias nexus \
  -keypass Nexus@123 \
  -storepass Nexus@456 \
  -keyalg RSA \
  -keysize 2048 \
  -validity 3650 \
  -dname "CN=*.example.com,OU=Test,O=Test,L=ShenZhen,ST=GuangDong,C=CN" \
  -ext "SAN=IP:192.168.1.103"  \
  -ext "BC=ca:true"

在此示例中,-ext 参数指定了 subjectAltName 扩展,并在其中列出了要添加的 SAN,包括两个 DNS 名称和一个 IP 地址。
可以根据需要添加或删除 SAN。
创建证书时,keytool 将读取 -ext 参数中的 subjectAltName 扩展,并将其添加到证书中作为 SAN。

查看证书详情:

# keytool -v -list -keystore  keystore.jks  -storepass "xxx"

keytool是Java开发工具中的一个用于管理密钥和证书的命令行工具。
-ext选项是keytool中的一个拓展选项,用于在证书中添加扩展信息。

具体用法如下:

  1. 添加扩展信息

在创建证书时,可以使用-ext选项来添加扩展信息,如下所示:

keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.jks -ext san=dns:example.com

这个命令将创建一个新的密钥对,并将证书中添加一个Subject Alternative Name(SAN)扩展信息,其值为dns:example.com。

  1. 查看扩展信息

可以使用-keyext选项来查看证书中的扩展信息,如下所示:

keytool -list -v -keystore mykeystore.jks -alias myalias -keyext

这个命令将列出与别名myalias关联的证书,并显示证书中的扩展信息。

  1. 删除扩展信息

可以使用-deleteext选项来删除证书中的扩展信息,如下所示:

keytool -deleteext -alias myalias -keystore mykeystore.jks -ext san=dns:example.com

这个命令将删除与别名myalias关联的证书中的Subject Alternative Name(SAN)扩展信息,其值为dns:example.com。

keytool中有很多拓展选项可以使用,以下是其中一些常用的拓展选项:

  1. -ext san=dns:example.com - 添加Subject Alternative Name(SAN)扩展信息,指定证书适用的主机名或IP地址。

  2. -ext bc=critical,CA:true - 添加Basic Constraints(BC)扩展信息,指定证书是否为CA证书。

  3. -ext ku=critical,keyCertSign,cRLSign - 添加Key Usage(KU)扩展信息,指定密钥的用途,如签署证书或撤销证书。

  4. -ext eku=critical,serverAuth,clientAuth - 添加Extended Key Usage(EKU)扩展信息,指定证书的使用目的,如用于服务器身份验证或客户端身份验证。

  5. -ext crlDistributionPoints=http://example.com/crl.crl - 添加CRL Distribution Points(CDP)扩展信息,指定证书吊销列表(CRL)的分发位置。

  6. -ext ocsp=http://example.com/ocsp - 添加OCSP扩展信息,指定在线证书状态协议(OCSP)的地址。

  7. -ext subjectKeyIdentifier - 添加Subject Key Identifier(SKI)扩展信息,指定证书的主题密钥标识符。

  8. -ext authorityKeyIdentifier - 添加Authority Key Identifier(AKI)扩展信息,指定证书颁发机构的密钥标识符。

以上是一些常见的keytool拓展选项,还有其他拓展选项可以根据需要使用。

总之,-ext选项是keytool中的一个非常有用的拓展选项,可用于在证书中添加、查看和删除扩展信息。

参考

keytool
https://docs.oracle.com/en/java/javase/11/tools/keytool.html

CentOS7.x上用harbor安装docker镜像仓库
https://www.jianshu.com/p/1e40b58089ac

用nexus3.5搭建docker私有仓库
https://www.jianshu.com/p/7a7db54a538f

相关文章

网友评论

      本文标题:【SSL】TLS证书创建,添加SAN

      本文链接:https://www.haomeiwen.com/subject/vhfkedtx.html