IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> grpc、https、oauth2等认证专栏实战3: 使用openssl来制作san类型的证书 -> 正文阅读

[网络协议]grpc、https、oauth2等认证专栏实战3: 使用openssl来制作san类型的证书

已发表专栏的入口(订阅即可观看所有专栏)
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

1、创建SAN证书的两种方式

  • 通过自定义配置文件openssl.cnf
  • 通过命令行方式

2、方式一:通过自定义openssl.cnf方式

2.1、自定义openssl.cnf

2.1.1、根据模板openssl.cnf 创建openssl.cnf

首先,找到openssl软件自带的openssl.cnf的文件路径, (centos系统)

在这里插入图片描述

拷贝到指定目录下

cp /etc/pki/tls/openssl.cnf .

在这里插入图片描述

2.1.2、开始设置SAN

打开新创建的openssl.cnf

  • 设置copy_extensions
    在这里插入图片描述
  • 设置req_extensions
    在这里插入图片描述
  • 设置subjectAltName
    在这里插入图片描述

2.2、创建证书签名文件csr

  • 创建一个证书密钥
    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,来生成证书

2.3.1、先创建一个根证书ca.crt

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

在这里插入图片描述

3、方式二:通过命令行方式

可以直接通过命令行方式来生成SAN类型的证书,

即在openssl.cnf文件里面的修改通过命令行的方式设置

3.1、生成证书签名client.csr

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

在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:17:07  更:2022-07-20 19:18:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:56:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码