本文主要介绍keytool自签名SSL证书(免费)以及私钥签名、公钥验签流程,点击查看keytool CA签名SSL证书(收费)
最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式登录,采用https(http+ssl)传输协议,经过SSL加密信息,防止用户信息被截获。
因此花了一段时间研究这方面的知识,主要从JDK自带keytool入手,研究如何通过keytool最终得到自签名SSL证书。
百度百科【CA】
证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。科
百度百科【SSL】
Secure Sockets Layer 安全套接层及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
对于JDK自带的keytool指令,不论Windows还是Linux,该指令文件存放在JAVA_HOME/bin目录下,使用的前提是系统已搭建好JDK环境且配置JAVA环境变量。
正文以Windows操作为例,D:/keys/是我个人证书文件存放路径,实际请自行替换相关路径。
目录
一、生成密钥库
keytool -genkeypair -alias mykeystore -keyalg RSA -keysize 2048 -keypass mypassword -sigalg SHA256withRSA -dname "cn=www.justinqin.com,ou=justinqin,o=qjg,l=Shenzhen,st=Guangdong,c=CN" -validity 1095 -keystore D:/keys/mykeystore.keystore -storetype JKS -storepass mypassword
==================参数含义=======================
-genkeypair
非对称密钥(密钥对,私钥签名、公钥验签),对称密钥为-gendeskey(单个密钥)
-alias mykeystore
证书库别名为mykeystore
-keyalg RSA
加密算法为RSA,加密算法可以分为对称加密、不对称加密和不可逆加密算法
对称加密算法:加解密都用的同一把密钥,如DES、AES
不对称加密算法:使用密钥对即公钥、私钥进行加解密,如RSA SHS
不可逆加密算法:加密过程中不需要密钥,明文加密成密文后不可逆,如MD5
MD5、SHS的加密都是用了哈希加密算法
-keysize 2048
密钥长度,位数越大越安全,但同时加解密时间成正比增长
-keypass mypassword
私钥密码为mypassword
-sigalg SHA256withRSA
签名算法为SHA256withRSA
keyalg=RSA时,sigalg可选MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA
keyalg=DSA时,sigalg可选SHA1withDSA、SHA256withDSA
-dname "cn=www.justinqin.com,ou=justinqin,o=qjg,l=Shenzhen,st=Guangdong,c=CN"
证书相关信息
CN=名字与姓氏/域名
OU=组织单位名称
O=组织名称
L=城市或区域名称
ST=州或省份名称
C=单位的两字母国家代码
-keystore D:/keys/mykeystore.keystore
生成的证书库文件为mykeystore.keystore,存储位置D:/keys/
-validity 1095
证书有效天数为3年=1095
-storetype JKS
证书库类型为JKS,JDK1.9以前默认JKS,JDK1.9及以后默认PKCS12
-storepass mypassword
证书库密码为mypassword
二、证书库导出公钥证书
keytool -export -alias mykeystore -keystore D:/keys/mykeystore.keystore -storepass mypassword -file D:/keys/publickey.cer
=========================证书查看相关指