使用Java自带的keytool生成证书

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/xufei_0320/article/details/78644562

之前在看OAuth2的时候,看到可以用对称加密,也可以用非对称加密,非对称加密这里就用到了证书。发现可以直接用Java自带的keytool来生成。

简介

keytool是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。

证书

一个证书是一个实体的数字签名,还包含这个实体的公共钥匙值.
- 公共钥匙:是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道.公共钥匙用来检验签名;
- 数字签名:是实体信息用实体的私有钥匙签名(加密)后的数据.这条数据可以用这个实体的公共钥匙来检验签名(解密)出实体信息以鉴别实体的身份;
- 签名:用实体私有钥匙加密某些消息,从而得到加密数据;
- 私有钥匙:是一些数字,私有和公共钥匙存在所有用公共钥匙加密的系统的钥匙对中.公共钥匙用来加密数据,私有钥匙用来计算签名.公钥加密的消息只能用私钥解密,私钥签名的消息只能用公钥检验签名。
- 实体:一个实体可以是一个人,一个组织,一个程序,一台计算机,一个商业,一个银行,或其他你想信任的东西.

用法

首先生成JKS Java KeyStore文件,在我们需要的位置打开终端执行:

keytool -genkeypair -alias test -keyalg RSA -keypass password -keystore test.jks -storepass password

其中:
-genkeypair 非对称加密
-alias 别名
-keyalg 加密算法
-keypass 密码
-keystore 仓库
-storepass 仓库密码
回车然后下面会让你输入一堆东西,按照操作走完确认输入y回车,就可以看到已经在当前目录下生成了test.jks了
接下来需要导出public key,终端执行:

keytool -list -rfc --keystore test.jks | openssl x509 -inform pem -pubkey

这里需要先有安装过openssl,具体google吧。回车之后会需要输入密码,然后会看到

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6LBBkoteUhjeA/nWP7i9
FUVB99Ff9UCBuOhnVZCaFBmlQ7fKTtwebsgn+8FKlo8OV7YDSHXB0MBEvt42fZYz
k9lq7Jkq0SZD/Rc1icoSaYIkcKDSOFSXU4/U1YeJ3EK/Obh0bbD3ZL+YG8mMqACl
7CxyiM8h8G+YfjADmmbanp6rKdgiEp7GD1Bu+JNvOMiAnN9CSzgipLk6xBR26yIJ
oXOhhCixvyfI/yy3ofbfqCicQJcVLReA0+MQETVndKdLug1yS/imBAh2vGf6GSCo
JM0LWr9GrbJTnlL7FPjacB+BbC3TI4rIbI36NVs3OXpKupH46yBzpDXhwk/TYYQj
6QIDAQAB
-----END PUBLIC KEY-----
-----BEGIN CERTIFICATE-----
MIIDCzCCAfOgAwIBAgIEGtZIUzANBgkqhkiG9w0BAQsFADA2MQswCQYDVQQGEwJ1
czELMAkGA1UECBMCY2ExCzAJBgNVBAcTAmxhMQ0wCwYDVQQDEwR0ZXN0MB4XDTE2
MDMxNTA4MTAzMFoXDTE2MDYxMzA4MTAzMFowNjELMAkGA1UEBhMCdXMxCzAJBgNV
BAgTAmNhMQswCQYDVQQHEwJsYTENMAsGA1UEAxMEdGVzdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAICCtlreMdhLQ5eNQu736TrDKrmTMjsrXjtkbFXj
Cxf4VyHmL4nCq9EkM1ZKHRxAQjIhl0A8+aa4o06t0Rz8tv+ViQQmKu8h4Ey77KTM
urIr1zezXWBOyOaV6Pyh5OJ8/hWuj9y/Pi/dBP96sH+o9wylpwICRUWPAG0mF7dX
eRC4iBtf4BKswtH2ZjYYX6wbccFl65aVA09Cn739EFZj0ccQi10/rRHtbHlhhKnj
iy+b10S6ps2XAXtUWfZEEJuN/mvUJ+YnEkZw30wHrENwq5QFiSpdpHFlNR8CasPn
WUUmdV+JBFzTMsz3TwWxplOjB3YacsCO0imU+5l+AQ51CnkCAwEAAaMhMB8wHQYD
VR0OBBYEFOGefUBGquEX9Ujak34PyRskHk+WMA0GCSqGSIb3DQEBCwUAA4IBAQB3
1eLfNeq45yO1cXNl0C1IQLknP2WXg89AHEbKkUOA1ZKTOizNYJIHW5MYJU/zScu0
yBobhTDe5hDTsATMa9sN5CPOaLJwzpWV/ZC6WyhAWTfljzZC6d2rL3QYrSIRxmsp
/J1Vq9WkesQdShnEGy7GgRgJn4A8CKecHSzqyzXulQ7Zah6GoEUD+vjb+BheP4aN
hiYY1OuXD+HsdKeQqS+7eM5U7WW6dz2Q8mtFJ5qAxjY75T0pPrHwZMlJUhUZ+Q2V
FfweJEaoNB9w9McPe1cAiE+oeejZ0jq0el3/dJsx3rlVqZN+lMhRJJeVHFyeb3XF
lLFCUGhA7hxn2xf3x1JW
-----END CERTIFICATE-----

我们粘出PUBLIC KEY部分使用就行了,即:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6LBBkoteUhjeA/nWP7i9
FUVB99Ff9UCBuOhnVZCaFBmlQ7fKTtwebsgn+8FKlo8OV7YDSHXB0MBEvt42fZYz
k9lq7Jkq0SZD/Rc1icoSaYIkcKDSOFSXU4/U1YeJ3EK/Obh0bbD3ZL+YG8mMqACl
7CxyiM8h8G+YfjADmmbanp6rKdgiEp7GD1Bu+JNvOMiAnN9CSzgipLk6xBR26yIJ
oXOhhCixvyfI/yy3ofbfqCicQJcVLReA0+MQETVndKdLug1yS/imBAh2vGf6GSCo
JM0LWr9GrbJTnlL7FPjacB+BbC3TI4rIbI36NVs3OXpKupH46yBzpDXhwk/TYYQj
6QIDAQAB
-----END PUBLIC KEY-----

猜你喜欢

转载自blog.csdn.net/xufei_0320/article/details/78644562