一、概要
本文章主要讲述pem文件在gRPC中的应用,本文章所应用的程序版本是.net core3.1。在这里向大家分享一下,避免踩坑。
二、简介
- 什么是pem文件?
- 如何生成pem文件?
- 如何校验生成好的pem文件?
- 如何应用到项目里?
三、主要内容
什么是pem文件?
pem文件是一个文件格式,存储证书(cacert.pem)和密钥(privkey.pem)pem 实质上是 Base64 编码的二进制内容,再加上开始和结束行。应用于ssl加密。
代码语言:javascript复制-----BEGIN CERTIFICATE-----
MIID9jCCAt6gAwIBAgIJAItu rOsWwQ0MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD
VQQGEwJjbjERMA8GA1UECAwIc2hhbmdoYWkxETAPBgNVBAcMCHNoYW5naGFpMQ8w
DQYDVQQKDAZqdXN0ZXIxDzANBgNVBAsMBmp1c3RlcjESMBAGA1UEAwwJbG9jYWxo
b3N0MSQwIgYJKoZIhvcNAQkBFhV6aHV6aGVuNzIzNzIzQDE2My5jb20wHhcNMjAw
ODA4MTUzOTE2WhcNMjMwODA4MTUzOTE2WjCBjzELMAkGA1UEBhMCY24xETAPBgNV
BAgMCHNoYW5naGFpMREwDwYDVQQHDAhzaGFuZ2hhaTEPMA0GA1UECgwGanVzdGVy
MQ8wDQYDVQQLDAZqdXN0ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDEkMCIGCSqGSIb3
DQEJARYVemh1emhlbjcyMzcyM0AxNjMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAwY0KuSZY/PZitcQvmcMwGMvIdr 1wSU4sO3FJ0ttwu1IJdKO
hm3ig/7KY7pPphBeVCvlD900PFpP1HIY /3c4nv2yHkm NEt9yV6 PlB1ds6cpne
H uCLnI56PCH55zwWdbT7Gan/BUg1HVetMjLlWDj8JfsjianYzbtIQUQeyps28X3
ay0mfFAe7N/ZZhnyryzADIpVTFtdvtAtbC2IFYZpk3 BbQ792s49QuebW2HMoYYF
i6HZRBY9Zhz/jsozGwxgTmZABZXAcECu0IRj4zeFp37XcJCTJrnx3gqjLEciIYey
2SDU668fqPZ6DOtsFtYXtNUcY3mexO96f6Ca3wIDAQABo1MwUTAdBgNVHQ4EFgQU
idK 6WALPNkuHP11 nKjcweTzFYwHwYDVR0jBBgwFoAUidK 6WALPNkuHP11 nKj
cweTzFYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEASGcUkYfs
fY2idTcbbITt8IY8Kd5HbZ9qj63TrHwxIrQGkr/MBbQvG4JDgU6LAgm5 MvJ4T5h
08BQa6ld8irZ/5tpwrvqVj19Fub3/8tHYDnv5XQvJR KV2ob9XJdvea9B0D57/pU
njmh8oBRzn54PcJfXrOJpOQCa/ZfFjd83gZY8Ax7fFkS3gaMyOzZmxYy4Rz5uZd3
avnrVcNGJrvX0/uOG/eMBRtInm/Q40M1HwwwO7SdkQj0GupMtzViESi/kjlkr3/e
1tHHWjs3kZNY1Kz6GuTVccQ5GYRi0/i2trv ZatfMsmLlcr2c/f3RUTF LqBLuKi
Y2Q3B9IR2C82JA==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAwY0KuSZY/PZitcQvmcMwGMvIdr 1wSU4sO3FJ0ttwu1IJdKO
hm3ig/7KY7pPphBeVCvlD900PFpP1HIY /3c4nv2yHkm NEt9yV6 PlB1ds6cpne
H uCLnI56PCH55zwWdbT7Gan/BUg1HVetMjLlWDj8JfsjianYzbtIQUQeyps28X3
ay0mfFAe7N/ZZhnyryzADIpVTFtdvtAtbC2IFYZpk3 BbQ792s49QuebW2HMoYYF
i6HZRBY9Zhz/jsozGwxgTmZABZXAcECu0IRj4zeFp37XcJCTJrnx3gqjLEciIYey
2SDU668fqPZ6DOtsFtYXtNUcY3mexO96f6Ca3wIDAQABAoIBAGZPuxJiLfoR993j
hdH 9qa02hPDhT1DArOsDGKYIb4/lbrAkayH24wwnCWZb871qhdOWLhJEvqwNrCz
W3ehGyjxpGMWf75ZPLX/LwD7KYz1ZPD9Wwh goMwyGHU 9I4CGlFASNepH/BX2hP
Xq r0Mn2vKcKd/Ywgp0UhMbGmY6w1AOuOvrsV7 sMFauNaJqRnULc98VNPZHCOdC
N/aDAhz0WwYXuZCBVIIYaI/gutwb0haOtlx6VMDTG9tZKjFPHz2xbpFNc90NuV0C
G27aDw1pBstfU5oIHVwXXiR4zFAdNBfz0Udlnru F4WA8J kzdb/M3X CSenX C
NU/lgsECgYEA5eXgqcCwT9DP xbD02qj8aVvnlWAInnhHByB7aa67p4RwjccRMPp
iMmsgzneF Ej9OZ5qvfk0EAwvRLoO3J1NAhOtWxYDN/9G2pDekA2r4VRvsmU0JpU
gigC4es09X9ENd42y3vP/EdYuPCfdiXlnkSm8XIhbQXTB6lWneW qb8CgYEA14a3
aoV HKwMP3PWdGxrgv2AjyyQfZCkon7ZYyt0aafiUQRMH fmbGNoqZ7pfwIJTP6P
yXM9r/ LhQ0QNJXO7dlqEPzoysdpJAvWlW161XvY5wu czfmAspgSorZCtSdvfzd
GUPrFRCEGraIjflS3f brZI5yp8F7WPtEXdJFuECgYEAuW9ofcQc8uRdPgyou9ki
kAF/PNl V1Cz0Lb13jlEQsBhVqSZOqZDsr/pVJfSmrRRCnL05IC7oXaFWZzskTbL
bsLcqd3QT JECF74Op2c/oqs2xVB4dj6HVokqRHNT8/ttv2ceRlPNBBgchw0o1oC
El0Rw2Lpr0SpaV6frRDpb4UCgYEAkZSh2AYLxXpBW6r3NPT3OifZ6twDTY2iZ1Cf
rmjv3V5VdLweX37ZGmWbkNeSiQPrHGLm5QA rt9CcsD8LUjz2Z1 E7OB21cPIhYN
ACpPSly5indYUaN0bnYczL01Fie/1VE0V5iU9kmNsi2R17SN0P6TPY8EEmWQL2XM
AHw loECgYEA5W85G7PjCxbg3Zz/WFDlJO7NhJvW/zD8YP6Y04D7x/tz2V8ZfVni
wmdoFCmFoq5vmBzaGmioinHOOGLSBPk87gC9VuysM5xNlVlfUFQC89B7n3HKfvUe
BqHC6Ic6xVnGhomQQFua4RfzqM0FK1lKAp9N7O8W9r3r 9QMPf7dHiE=
-----END RSA PRIVATE KEY-----
如何生成pem文件?
首先得安装OpenSSL软件包openssl。
- 官网下载:openssl.org/source/
- 第三方下载:oomake.com/download/ope
安装完成之后,大致分为以下几步:
安装路径 D:OpenSSL-Win64bin,然后找到openssl.exe双击打开即可然后输入以下命令。
1.生成密钥privkey.pem文件
genrsa -des3 -out privkey.pem 2048 //生成一个2048位的密钥,同时有一个des3方法加密的密码。
genrsa -out privkey.pem 2048 //无密码(推荐)
2.生成证书
req -new -key privkey.pem -out cert.csr(二选一)
生成证书会使用到privkey.pem最好放在同级目录下,这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。
req -new -x509 -key privkey.pem -out cacert.pem -days 1095(二选一)
申请机构和颁发机构都是自己。就可以用这个命令来生成证书。
如何校验生成好的pem文件?
校验证书文件是否合法,解析成功之后可以看到生成的时候填写的内容
SSL证书校验工具-中国数字证书CHINASSLwww.chinassl.net
校验证书和私钥是否匹配
校验SSL与KEY/CSR文件是否匹配工具-中国数字证书CHINASSLwww.chinassl.net
如何应用到项目里?
项目能正常跑起来可以证明应用方式没错。