单向认证(Client鉴权Server)
1、Client发送连接请求
2、Server端将Server证书发送给Client
3、Client使用CA根证书对Server证书进行鉴权
双向认证
1、单向鉴权(Client鉴权Server)
2、单向鉴权(Server鉴权Client)
Windows上可使用Git自带的OpenSSL生成,打开Git Bash
Linux本身自带OpenSSL
1、 生成CA私钥
openssl genrsa -out ca.key 2048
2、生成证书请求文件
openssl req -new -key ca.key -out ca.csr
需要输入证书信息,参考如下:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HW
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:ROOT
Email Address []:xxx@sina.com
3、生成自签名CA根证书(有效期365天)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
1、生成私钥,需要设定密码
openssl genrsa -des3 -out server.key ***
2、生成证书请求文件,需要输入上一步的密码
openssl req -new -key server.key -out server.csr
需要输入证书信息,最重要的一行是Common Name (e.g. server FQDN or YOUR name),您需要输入与服务器关联的域名,或者是您服务器的公共IP地址,参考如下:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HW
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:10.10.8.8
Email Address []:xxx@sina.com
3、生成服务端证书
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
这一步可能会提示错误:
解决办法,使用如下命令创建文件:
mkdir -p demoCA/newcerts
touch demoCA/index.txt
touch demoCA/serial
echo “01” > demoCA/serial
1、生成私钥,需要设定密码
openssl genrsa -des3 -out client.key 1024
2、生成证书请求文件,需要输入上一步的密码
openssl req -new -key client.key -out client.csr
注意输入的信息不要和服务端证书的一样,否则会报 ERROR:There is already a certificate for XXX 问题,比如我这里的Common Name不一样:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HW
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:MY
Email Address []:xxx@sina.com
3、生成客户端证书
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
有时需要用到pem或pfx格式的证书,可以用以下方式生成
cat client.crt client.key > client.pem
cat server.crt server.key > server.pem
openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12