原理:最简单的一个原因就是,CA证书机构和操作系统认为是可靠的
自创建服务端证书基本原理:
1,生成服务端私钥,公钥
2,自创建CA证书(也可以去CA网站)
3,通过CA证书和服务端的公钥生成CA签名的服务端证书
4,配置证书到服务器(nginx,tomcat等)
5,客户端在注册表中配置证书
生成证书方法:
1,模拟生成CA的证书
openssl genrsa -aes256 -out ca.key 2048
openssl rsa -in ca.key -out ca.key
openssl req -new -sha256 -key ca.key -out ca.csr -subj “/C=CN/ST=dr/L=dr/O=ca/OU=ca/CN=ip地址”
openssl x509 -req -days 3650 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.crt
2,模拟生成服务端的证书
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server-req.csr -subj “/C=CN/ST=dr/L=dr/O=drServer/OU=drServer/CN=ip地址” -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf “\n[SAN]\nsubjectAltName=DNS:ip地址,IP:ip地址”))
openssl x509 -req -in server-req.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -extensions SAN -extfile <(cat /etc/pki/tls/openssl.cnf <(printf “\n[SAN]\nsubjectAltName=DNS:ip地址,IP:ip地址”))
3,模拟生成客户端的证书
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client-req.csr -subj “/C=CN/ST=dr/L=dr/O=drClient/OU=drClient/CN=ip地址” -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf “\n[SAN]\nsubjectAltName=DNS:ip地址,IP:ip地址”))
openssl x509 -req -in client-req.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -extensions SAN -extfile <(cat /etc/pki/tls/openssl.cnf <(printf “\n[SAN]\nsubjectAltName=DNS:ip地址,IP:ip地址”))
服务端证书导入和客户端的证书分别导入:
cat ca.cert(替换成服务端证书和客户端证书执行两次) >> /etc/pki/tls/certs/ca-bundle.crt
制作到profile:
export REQUESTS_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt
然后在启动服务即可