jdk自带的证书管理工具叫keytool,在jdk/bin目录下,可以用来生成自签名证书、导入导出证书、打印证书信息等。
1. 名词
自签名证书:用自己的私钥签发自己的公钥即主体信息生成的证书。
证书签名:对证书固定值进行hash后用密钥对中的私钥对hash值加密
keystore: keytool生成证书的存储库,用来存储若干条目,每一条目包含公私钥,主体信息等。默认为用户目录下.keystore,相当于一个有密码保护的文件。
truststore: 与keystore格式相同,但是为区分只用来存放信任的证书,不存密钥等信息。
der:证书编码格式,证书结构体转换为二进制格式。
pem:证书编码格式,对der二进制编码的base64字符,包含---begin---,----end----。// 命令中加-rfc可打印和生成此类文件
.csr:证书请求文件格式,包含公钥和主体信息,发给ca,ca用私钥对内容签名并制作成证书返回。keytool在生成csr文件时需要指定证书(即公钥与主体信息)。
.crt:一般用于linux系统的证书格式,包含公钥和主体信息。
.cer:一般用于windows的证书文件格式,包含公钥和主体信息。
.p12:证书交换格式,包含公钥私钥(私用密码加密),用于交换传输。
2.具体使用
可以以一个完整例子来了解keytool命令。在socket或http协议传输数据时,如需加密传输会话内容,会在TCP上加上ssl/tls,http则改为https协议。此时服务端需要给客户端提供证书以供客户端验证并协商会话密钥,如果没有正规CA签发的证书,则需