密码学背景
对称密码算法
- 加解密过程使用相同的密钥进行运算,一般效率较高。
- 主要是用来加解密数据。
非对称密码算法
- 相对于对称加密算法,非对称密码算法在加解密过程中,使用不同的密钥,分别为公私钥对。
- 公私钥的关系:可以通过私钥计算得到公钥,但是通过公钥得不到私钥,主要利用了大整数因子分解和离散对数的数学难题。因此通常情况是将公钥公开,自己保护自己的私钥;
- 其中非对称密码算法的使用场景有两种:
-
- 加解密,通常是使用公钥加密,使用私钥解密;其中用法即为TLS中的密钥协商,A用B的公钥加密传给B,只有B能用自己的私钥解密得到明文;
-
- 数字签名:假如A使用自己的私钥加密数据(原始数据,加密后数据),B得到这部分数据后,使用A的公钥进行解密得到明文,将明文和原始数据比对,发现一致,则可以证明是A使用自己的私钥签名的;应用场景即为整个CA体系建立的本质。
证书
概念
证书是由CA签发的对用户公钥的凭证。
证书标准
- X.509 数字证书标准
openssl生成CA签名证书
openssl genrsa -out ca.key 2048
openssl genrsa -out server.key 2048
openssl genrsa -out client.key 2048
openssl req -new -x509 -days 7200 -key ca.key -out ca.pem
openssl req -new -key server.key -out server.csr
openssl x509 -req -sha256 -CA ca.pem -CAkey ca.key -CAcreateserial -days 3650 -in server.csr -out server.pem
openssl req -new -key client.key -out client.csr
openssl x509 -req -sha256 -CA ca.pem -CAkey ca.key -CAcreateserial -days 3650 -in client.csr -out client.pem
openssl x509 -noout -text -in ca.pem
///
openssl genrsa -passout pass:password -out ca.key 4096
openssl req -passin pass:password -new -x509 -key ca.key -out ca.crt -subj "/C=IT/ST=Italy/L=Rome/O=GRPC/OU=GRPC/CN=Root CA"
openssl genrsa -passout pass:password -out server.key 4096
openssl req -passin pass:password -new -key server.key -out server.csr -subj "/C=IT/ST=Italy/L=Rome/O=GRPC/OU=GRPC/CN=localhost"
openssl x509 -req -passin pass:password -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
openssl rsa -passin pass:password -in server.key -out server.key
openssl genrsa -passout pass:password -out client.key 4096
openssl req -passin pass:password -new -key client.key -out client.csr -subj "/C=IT/ST=Italy/L=Rome/O=GRPC/OU=GRPC/CN=localhost"
openssl x509 -passin pass:password -req -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
openssl rsa -passin pass:password -in client.key -out client.key
示例
grpc实现双向认证:
http://www.cppblog.com/jinq0123/archive/2018/11/26/216081.aspx
https://github.com/Ablablab/grpc-helloworld-ssl/tree/master/server-cpp/src
https://www.codercto.com/a/41301.html