#生成根证书的秘钥对(私钥+公钥)
openssl genrsa -out ca.key 4096
#生成根证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
#################################################################################################################
#生成server端证书的秘钥对
openssl genrsa -out server.pem 4096
#提取公钥
openssl rsa -in server.pem -pubout -out server.key
#生成签名请求
openssl req -new -key server.pem -out server.csr
#使用根证书签名
openssl x509 -req -sha512 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
#################################################################################################################
#生成server端证书的秘钥
openssl genrsa -out client.pem 4096
#提取公钥
openssl rsa -in server.pem -pubout -out server.key
#生成签名请求
openssl req -new -key client.pem -out client.csr
#使用根证书签名
openssl x509 -req -sha512 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 20 -out client.crt
openssl x509 -req -sha512 -in client_test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 10 -out client_test_ssl.crt
#################################################################################################################
openssl x509 -req -sha512 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 2000 -out client.crt
openssl x509 -req -sha512 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -startdate 20170101000000 -enddate 20170401000000 -out client.crt
#转为pkcs12格式
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
#################################################################################################################
#查看秘钥
openssl rsa -noout -text -in ca.key
#查看请求
openssl req -noout -text -in client.csr
openssl req -noout -text -in client_test.csr
#查看证书
openssl x509 -noout -text -in ca.crt
openssl x509 -noout -text -in client.crt
openssl x509 -noout -text -in client_test_ssl.crt
openssl x509 -noout -text -in client_test.crt
#验证证书
openssl verify -CAfile ca.crt client.crt
openssl verify -CAfile ca.crt client_test.crt
openssl verify -CAfile ca.crt client_test_ssl.crt
openssl verify -CAfile ca.crt server.crt
#吊销证书
openssl ca -revoke client.crt -cert private/ca.crt -keyfile private/ca.key
openssl ca -gencrl -out private/ca.crl
#验证是否被吊销
openssl verify -crl_check -CRLfile private/ca.crl -CAfile private/ca.crt client.crt