一. 证书管理
1. 如何生成证书
(1). 关于阿里云证书和证书的相关概念
详见:https://www.cnblogs.com/yaopengfei/p/10648151.html (抽时间重新配置一遍)
(2). 本地生成测试证书
详见:https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps
这里使用案例9:【New-SelfSignedCertificate -Subject "localhost" -TextExtension @("2.5.29.17={text}DNS=localhost&IPAddress=127.0.0.1&IPAddress=::1")】
2. 本地计算机证书管理
(1).查看计算已有的证书
cmd命令行→输入certmgr→可以查看当前用户下的证书以及受信任的颁发机构
(2).证书导入和添加信任
cmd命令行→输入mmc→进入控制台页面(默认空白)→选中文件中的‘添加/删除管理单元’→将'证书'一项添加进去
导入步骤:
A.以管理员的身份运行powershell,运行证书生成指令【New-SelfSignedCertificate -Subject "ypf" -TextExtension @("2.5.29.17={text}DNS=localhost&IPAddress=127.0.0.1&IPAddress=::1")】生成成功,如下图: 并在控制台下→个人→证书 找到刚才生成的证书。
B.将该证书导出:选择需要私钥→输入密码123455→输入名称ypfCert进行导出
C.对该证书添加信任:受信任的根证书颁发机构→证书→进行导入
二. 基于证书的认证和授权
1. 项目准备
GrpcServer3:服务端
MyClient3:客户端(控制台)
2. 服务端配置
(1).新建cert.proto文件,声明获取证书信息的方法GetCertificateInfo,并对其添加链接引用。
代码如下:
syntax = "proto3"; import "google/protobuf/empty.proto"; package certify; //Certifier对应CertifierService实现类 service Certifier { //获取证书信息的方法 rpc GetCertificateInfo (google.protobuf.Empty) returns (CertificateInfoResponse); //获取证书信息的方法(测试不加校验) rpc GetCertificateInfoNoAuth (google.protobuf.Empty) returns (CertificateInfoResponse); } message CertificateInfoResponse { bool hasCertificate = 1; string name = 2; }