当前位置:网站首页>【Golang | gRPC】使用openssl生成证书
【Golang | gRPC】使用openssl生成证书
2022-07-02 15:56:00 【田土豆】
环境:
OpenSSL:3.0.4
1. 密钥
1.1 创建RSA私钥
使用openssl genrsa
# 生成1024位私钥,输出到控制台
openssl genrsa 1024
# 生成2048位私钥,保存到server.key文件中
openssl genrsa -out server.key 2048
# 生成2048位带加密的私钥(交互方式输入密码),保存到server_passphrase.key文件中
openssl genrsa -out server_passphrase.key -des3 2048
-out
: 将私钥输出到指定文件,如不加则输出到控制台2048
: 生成2048位的私钥-des3
: 生成加密私钥
1.2 使用RSA私钥生成公钥
# 如果是加密私钥,需要交互输入私钥密码
openssl rsa -in server.key -pubout -out server_public.key
-in
: 导入私钥文件-pubout
: 输出公钥-out
: 将输出公钥保存到指定文件里
1.3 查看密钥
1.3.1 查看私钥
openssl rsa -in server.key -text
1.3.2 查看公钥
openssl rsa -RSAPublicKey_in -in server_public.key -text
2. 证书请求文件
有了私钥后,就可以创建Certificate Signing Request
(csr,证书请求文件)。使用私钥对csr进行sign
(签名),同时csr中包含与私钥对应的公钥
2.1 使用已有的私钥创建csr
2.1.1 使用交互模式
使用openssl req
# 使用私钥server.key以交互模式生成csr,
openssl req -new -key server.key -out server.csr
- 一般来说,交互时直接敲
enter
就行,表示使用默认值;如果想某些字段为空,可以输入.
再敲enter
-new
: 生成新的csr-key
: 使用指定的私钥用于签名,同时csr会包含私钥对应的公钥-out
: 将生成的csr保存到指定文件中
2.1.2 使用配置文件
新建配置文件csr.cnf
[req]
prompt = no
distinguished_name = dn
req_extensions = ext
input_password = tian # 加密私钥的密码
[dn]
CN = www.feistyduck.com # Common Name 公用名称,一般是网站主机名
emailAddress = [email protected]
O = Feisty Duck Ltd # Organization 组织
L = London # Locality 所在地
C = GB # Country 国家,如中国:CN
[ext]
subjectAltName = DNS:www.feistyduck.com,DNS:feistyduck.com
补充:
http://www.sina.com.cn/
为例,http
是通信使用的协议,sina.com.cn
是域名,www
是提供服务的机器的名字(服务器名),服务器名+域名才是主机名,即www.sina.com.cn
是主机名subjectAltName
(X.509拓展之SAN
),如果只使用CN,那么一个证书通常只对应一个主机名,如果要使用多主机名的证书,通过subjectAltName
进行配置,一般来说,主机名最少包含两种,一个带www.
的,一个不带;也可以使用通配符的方式,比如shannont.com
和*.shannont.com
使用配置文件生成csr
openssl req -new -config csr.cnf -key server.key -out server2.csr
-config
: 指定使用的配置文件
2.2 查看csr的内容
openssl req -in server.csr -text -noout
- csr中包含公钥,签名以及之前交互时输入值为非空的字段等
- 当前版本摘要算法默认是
sha256
-text
: 输出csr的文本形式-noout
: 不输出-----BEGIN CERTIFICATE REQUEST-----...-----END CERTIFICATE REQUEST-----
之间的内容
3. 证书
3.1 自签名证书
有了csr后,不一定要去向CA申请一个证书,大多时候开发阶段为了自测可以申请一个自签名的证书(就是使用自己的私钥来给证书签名)
3.1.1 使用csr生成证书
使用openssl x509
命令
# 如果签名用的是加密私钥需要交互输入私钥密码
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
x509
: X.509 是密码学里公钥证书的格式标准-req
: 指明输入的文件是csr-days
: 证书的有效时长-in
: 输入的文件-signkey
: 等同于-key
,指明签名用的私钥
3.1.2 使用私钥直接生成证书
# 交互模式,需要输入国家,组织,所在地等一些字段值,如果是加密私钥,还要输入私钥密码
openssl req -new -x509 -days 365 -key server.key -out server2.crt
# 使用上文csr的配置文件直接生成证书
openssl req -new -x509 -days 365 -key server.key -config csr.cnf -out server3.crt
# 使用-subj选项指定国家,组织,所在地等一些字段值,如果是加密私钥,还要输入私钥密码
openssl req -new -x509 -days 365 -key server.key -out server4.crt -subj "/C=CN/L=ShangHai"
3.2 查看证书
证书中关于公钥的部分正好等同于1.3.2节中公钥的内容
openssl x509 -text -in server.crt -noout
3.3 检查证书
使用openssl s_server
创建一个server,默认端口是4433
,导入证书和私钥
openssl s_server -cert server.crt -key server.key -www
打开浏览器,输入https://127.0.0.1:4433
,得到如下,需要手动信任
边栏推荐
- What is the experience of maintaining Wanxing open source vector database
- Laravel文档阅读笔记-Custom Authentication Login And Registration Using Laravel 8
- 一日2篇Nature!中科大校友段镶锋团队纳米材料新成果,曾是贝尔比奖章第三位华人得主...
- When the industrial Internet began to enter the deep-water area, it appeared more in the form of industry
- [how is the network connected] Chapter 6 requests arrive at the server and respond to the client (end)
- AtCoder Beginner Contest 237 VP补题
- Virtual lab basic experiment tutorial -7 Polarization (1)
- My creation anniversary
- Does pytorch support 32 bits?
- Mb10m-asemi rectifier bridge mb10m
猜你喜欢
HBuilderX运行到手机或模拟器提示没有找到设备
[how to connect the network] Chapter 5 explore the server
售价仅40元,树莓派Pico开发板加入WiFi模块,刚上市就脱销
Rk1126 platform project summary
开发一个禁止删除namespace的控制器
【历史上的今天】7 月 2 日:BitTorrent 问世;商业系统 Linspire 被收购;索尼部署 PlayStation Now
Alibaba cloud sub account - Permission Policy - full control permission granted to an account and an OSS bucket
Keras' deep learning practice -- gender classification based on vgg19 model
Ssm+ wechat applet to realize property management system
Navigateur Chrome pour un accès rapide au stackoverflow
随机推荐
Wasserstein Slim GAIN with Clipping Penalty(WSGAIN-CP)介绍及代码实现——基于生成对抗网络的缺失数据填补
Pfc232-sop8/14/16 should be wide-ranging and can be tape programmed with burning program
From a professional background, I can't get into a small company for interview
Many scenic spots are temporarily closed due to the typhoon. The provincial culture and tourism department reminds you to pay attention to safety!
【历史上的今天】7 月 2 日:BitTorrent 问世;商业系统 Linspire 被收购;索尼部署 PlayStation Now
Larvel document reading notes custom authentication login and registration using larvel 8
MB10M-ASEMI整流桥MB10M
515. 在每个树行中找最大值
透过华为军团看科技之变(六):智慧公路
辉芒微IO单片机FT60F11F-MRB
【网络是怎样连接的】第五章 探索服务器
easyswoole3.2重启不成功
[非线性控制理论]8_三种鲁棒控制器的比较
Chrome browser quick access stackoverflow
应广单片机开发流程需要注意哪些?
Mb10m-asemi rectifier bridge mb10m
应广PMC131 SOP16 16pin八位单片机
Daily question - "number of daffodils"
[非线性控制理论]7_High gain and High Frequency
义隆EM78P153K DIP14单片机 MCU