TLS/SSL
名词解释
keystore : 用于存储私钥和证书的一种的文件
证书:保存了用户信息、用户公钥、CA签名等其他信息
证书链:要验证证书的合法性需要检测CA签名,而CA签名是由证书摘要经过CA私钥加密之后得到的。验证CA签名时需要拿到CA公钥,而CA公钥就是是上级证书的公钥。这样一直追溯到根证书(即自签名证书)。
X.509 :是一种证书标准,主要定义了证书中应该包含哪些内容
PKCS :The Public-Key Cryptography Standards (PKCS)由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。
PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法。
二级证书的生成
1、首先生成自认证证书,从keystore中导出自签名证书
keytool -genkeypair -alias [alias] -keystore [keystorePath]
2、根据自签名证书生成证书请求
3、根据证书请求和CA 的 keystore 生成CA签名的证书
4、将CA签名的证书导入到原有keystore,并将CA的证书导入到keystore
编码格式
PEM Privacy Enhanced Mail
文本以“-----BEGIN…”开头,以“-----END…”结尾,内容是BASE64编码
DER Distinguished Encoding Rules
二进制格式
使用Java keytool 操作证书
JKS → P12
keytool -importkeystore -srckeystore keystore.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore keystore.p12
P12 → JKS
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore keystore.jks
使用openSSL 操作证书
1、合并证书和私钥得到p12格式的个人证书
openssl pkcs12 -export -in alicecert.pem -inkey alicekey.pem -certfile cacert.pem -out alice.p12
2、从p12文件中提取私钥
openssl pkcs12 -in alice.p12 -nocerts -out alicekey.pem
生成Server私钥和证书
openssl genrsa -out server.key 1024
openssl req -out server.req -key server.key -new -config ./server_cert.conf
openssl x509 -req -in server.req -out server.crt -sha1 -CAcreateserial -days 5000 -CA ca.crt -CAkey ca.key
生成Client私钥和证书
openssl genrsa -out client.key 1024
openssl rsa -in client.key -out TLS.key_1024 -outform DER
openssl req -out client.req -key client.key -new -config ./client_cert.conf
openssl x509 -req -in client.req -out client.crt -sha1 -CAcreateserial -days 5000 -CA ca.crt -CAkey ca.key
生成CA私钥和证书
openssl genrsa -out ca.key 1024
openssl req -out ca.req -key ca.key -new -config ./ca_cert.conf
openssl x509 -req -in ca.req -out ca.crt -sha1 -days 5000 -signkey ca.key
openssl x509 -in ca.crt -outform DER -out TLS.ca_x509.cer