OpenSSL创建生成CA证书、服务器、客户端证书及密钥
证数各参数含义
- C-----国家(Country Name)
- ST----省份(State or Province Name)
- L----城市(Locality Name)
- O----公司(Organization Name)
- OU----部门(Organizational Unit Name)
- CN----产品名(Common Name)
- emailAddress----邮箱(Email Address)
生成CA证书
创建root证书私钥
openssl genrsa -aes256 -out ca.key 2048
创建请求证书
openssl req -new -sha256 -key ca.key -out ca.csr -subj "/C=CN/ST=BJ/L=BJ/O=demo/OU=demo/CN=root/emailAddress=123@demo.com"
创建自签署证书
openssl x509 -req -days 36500 -sha256 -extensions v3_ca -signkey ca.key -in ca.csr -out ca.cer
生成服务器证书
创建服务器证书
openssl genrsa -aes256 -out server.key 2048
创建服务器请求证书
openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/ST=BJ/L=BJ/O=demo/OU=demo/CN=server.com/emailAddress=123@demo.com"
使用CA证书签署服务器证书
openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in server.csr -out server.cer
生成客户端证书
创建客户端证书
openssl genrsa -aes256 -out client.key 2048
创建客户端请求证书
openssl req -new -sha256 -key client.key -out client.csr -subj "/C=CN/ST=BJ/L=BJ/O=demo/OU=demo/CN=client.com/emailAddress=123@demo.com"
使用CA证书签署客户端证书
openssl x509 -req -days 36500 -sha256 -extensions v3_req -CA ca.cer -CAkey ca.key -CAserial ca.srl -CAcreateserial -in client.csr -out client.cer
测试
单向认证
服务器
openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22580
客户端
openssl s_client -CAfile ca.cer -cert client.cer -key client.key -connect 127.0.0.1 -port 22580
双向认证
服务器:
openssl s_server -CAfile ca.cer -cert server.cer -key server.key -accept 22580 -Verify 1
客户端:
openssl s_client -CAfile ca.cer -cert server.cer -key server.key -cert client.cer -key client.key -connect 127.0.0.1 -port 22580