已发表专栏的入口(订阅即可观看所有专栏) 0??grpc-go、protobuf、multus-cni 技术专栏 总入口
1??grpc-go 源码剖析与实战??文章目录
2??Protobuf介绍与实战 图文专栏??文章目录
3??multus-cni ??文章目录(k8s多网络实现方案)
4??grpc、oauth2、openssl、双向认证、单向认证等专栏文章目录
创建SAN类型的证书,就是在普通的证书里,添加上Subject Alternative Name属性。
Subject Alternative Name的简写就是SAN
- 通过自定义配置文件openssl.cnf
- 通过命令行方式
2.1.1、根据模板openssl.cnf 创建openssl.cnf |
首先,找到openssl软件自带的openssl.cnf的文件路径, (centos系统)

拷贝到指定目录下
cp /etc/pki/tls/openssl.cnf .

打开新创建的openssl.cnf
- 设置copy_extensions
 - 设置req_extensions
 - 设置subjectAltName

-
创建一个证书密钥 openssl genrsa -out server.key 2048  -
根据证书密钥创建证书签名 openssl req -new -nodes -key server.key -out server.csr -days 365 -subj "/C=CN/ST=beijing/L=beijing/O=tt/OU=dd/CN=golang-learning" -config ./openssl.cnf -extensions v3_req
 openssl req -new -nodes -key server.key -out server.csr -days 365 -subj "/C=CN/ST=beijing/L=beijing/O=tt/OU=dd/CN=golang-learning" -config ./openssl.cnf -extensions v3_req -extendedKeyUsage "serverAuth,clientAuth"
-
查看生成的证书签名CSR, server.csr openssl req -noout -text -in server.csr

2.3、利用根证书ca.crt,证书签名server.csr,来生成证书 |
openssl req -newkey rsa:2048 -nodes -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/ST=beijing/L=beijing/O=tt/OU=dd/CN=golang"

2.3.2、利用根证书ca.crt, 证书签名server.csr来创建证书server.crt |
openssl x509 -req -days 365 -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -extfile ./openssl.cnf -extensions v3_req

2.4、查看server.crt证书里是否有SAN属性 |
openssl x509 -in server.crt -noout -text

可以直接通过命令行方式来生成SAN类型的证书,
即在openssl.cnf文件里面的修改通过命令行的方式设置
openssl req -newkey rsa:2048 -nodes -keyout client.key \
-subj "/C=CN/ST=beijing/L=beijing/O=tt/OU=dd/CN=golang-study" \
-reqexts SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "\n[SAN]\nsubjectAltName=DNS:*.org.golang.com,DNS:*.www.golang.com")) \
-out client.csr

查看证书签名里,是否有SAN请求信息
openssl req -noout -text -in client.csr

备注: 如果需要支持IP地址的话,可以参考下面的形式:
openssl req -newkey rsa:2048 -nodes -keyout client.key \
-subj "/C=CN/ST=beijing/L=beijing/O=tt/OU=dd/CN=golang-study" \
-reqexts SAN \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "\n[SAN]\nsubjectAltName=DNS:*.org.golang.com,DNS:*.www.golang.com,IP:10.211.55.10,IP:10.211.55.11")) \
-out client.csr
在命令行模式下, 语法形式是:
subjectAltName=DNS:*.org.golang.com,DNS:*.www.golang.com,IP:10.211.55.10,IP:10.211.55.11
分隔符为逗号, 存在相关的key都是DNS, IP
如果是配置文件形式:

最终效果形式:

3.2、利用根证书ca.crt, 证书签名client.csr来生成证书client.crt |
openssl x509 -req -days 365 \
-in client.csr -out client.crt \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-extensions SAN \
-extfile <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:*.org.golang.com,DNS:*.www.golang.com"))
或者
openssl x509 -req -days 365 -in client.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -extensions SAN -extfile <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:*.org.golang.com,DNS:*.www.golang.com"))

查看生成的证书里,是否包含了SAN信息
openssl x509 -in client.crt -noout -text

|