网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
根据单向身份验证的方法,如果让通信双方互相交换身份证,就可以实现互相验证了,但是如果一个分布式系统里有多方都需要进行通信, 如果任意两方都要交换身份证的话就太麻烦了。所以,我们通常创建一个自签署的根身份证(root CA),然后用它来签署分布式系统中各方的身份证,这样每一方都只要有这个根身份证,即可验证所有其他的通信方了。
我们可以通过以下步骤搭建双向验证身份的HTTPS SERVER。在本文中,我们将使用一个CA来签署HTTPS服务器的身份证。
1.1 创建CA
- 创建我们自己CA的秘钥对(RSA)文件:
openssl genrsa -out "ca-key.pem" 2048
2. 创建我们自己CA的身份证申请(CSR)文件,并且用CA自己的私钥自签署该CSR,得到CA的身份证:
openssl req -x509 -new -key ca-key.pem -days 365 -out ca-crt.pem -subj "/CN=we-as-ca"
通过上述步骤,我们可以得到了自己CA的秘钥对文件和证书文件。
1.2 使用CA签署服务器的证书文件
1. 生成服务器的秘钥对(RSA)文件:
openssl genrsa -out server-key.pem 2048
- 生成服务器的身份证申请(CSR)文件:
openssl req -new -key server-key.pem -out server-csr.pem -subj "/CN=192.168.213.133"
- 使用前面生成的CA签署服务器的证书(CRT)文件:
openssl x509 -req -in server-csr.pem -CA ca-crt.pem -CAkey ca-key.pem -CAcreateserial -out server-crt.pem -days 365
经过上述步骤,我们得到了HTTPS服务器的秘钥文件server-key.pem和经过CA签署的服务器证书文件server-crt.pem。
**说明:**上述步骤中的参数需要根据实际情况进行调整。
1.3 使用CA签署客户端的证书文件
- 生成客户端的秘钥对(RSA)文件:
openssl genrsa -out client-key.pem 2048
- 生成客户端的身份证申请(CSR)文件:
openssl req -new -key client-key.pem -out client-csr.pem -subj "/CN=192.168.213.129"
- 使用前面生成的CA签署客户端的证书(CRT)文件:
openssl x509 -req -in client-csr.pem -CA ca-crt.pem -CAkey ca-key.pem -CAcreateserial -out client-crt.pem -days 365
经过上述步骤,我们得到了连接HTTPS服务器的客户端的秘钥文件client-key.pem和经过CA签署的客户端证书文件client-crt.pem。
**说明:**上述步骤中的参数需要根据实际情况进行调整。
1.4 调用libevhtp接口,构建HTTPS服务器
本文的HTTPS服务器代码及程序使用“单向验证身份”场景的内容,请前往该文章查看。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
cs/618668825)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!