keytool工具应用实例详解
使用KeytoolGUI生成Keystore
目录1.启动KeytoolGUI工具 (3)2.信任列表keystore的制作 (3)3.服务器证书keystore的制作 (5)3.1.产生keystore,导入信任根证书 (5)3.2.产生密钥对,生成请求 (6)3.2.1.产生密钥对 (6)3.2.2.导入CA签发的服务器cer证书 (8)3.3.从pfx文件导入 (9)4.注意事项 (11)KeytoolGUI工具是一个Java图形界面的密钥库管理工具,支持JKS、PKCS12(pfx文件)等密钥库格式。
利用该工具可以非常方便的生成信任列表keystore、服务器证书keystore,不必再使用繁琐且易出错的keytool命令行。
1.启动KeytoolGUI工具启动该工具需要有jre环境,最好是1.4版本。
设置好jre/bin路径,达到在命令行中键入java命令可以出现提示的效果后,运行run.cmd即可启动。
启动后界面如下:2.信任列表keystore的制作信任列表keystore的生成就是将根证书导入keystore中。
选择File菜单中的New Keystore,新建一个jks格式的keystore,如图:选择JKS格式,点击OK。
出现如下界面:(和第一张图相比,工具栏图标已经可见)点击工具栏的导入信任根证书图标(如下图),或按Ctrl+T。
出现如下界面,此时即可选择根证书文件执行导入。
导入过程中会提示该证书无法验证信任路径,并将证书信息显示出来,询问是否信任等对话框,一直确定后,给根证书任意取一个别名,即完成了根证书的导入工作。
完成导入工作后,即可将该keystore保存,点击保存按钮后,出现设置Keystore密码的界面,如下图:输入至少六位的密码,选择保存路径后,信任证书列表Keystore即成功生成。
一般来说,在根证书中只需导入顶级根证即可。
客户端浏览器中只要安装了相应的二级根证,二级根证所颁发的证书即可获得信任,出现在证书选择框中。
keytool -import -keystore 使用方法
keytool -import -keystore 使用方法keytool是Java 提供的一个用于管理密钥库和证书的命令行工具。
其中,-import -keystore是keytool提供的一组参数,用于导入证书到密钥库中。
本文将深入探讨keytool -import -keystore的使用方法,以及常见的应用场景。
keytool 简介keytool是Java 开发工具包(JDK)中的一部分,主要用于生成密钥对、管理密钥库和证书。
通过keytool,开发人员可以创建和管理用于加密通信的证书和密钥。
使用方法keytool -import -keystore主要用于将证书导入到指定的密钥库中。
以下是基本的使用方法:bashkeytool -import-file certificate.cer -keystore keystore.jks -alias myalias其中各个参数的含义如下:•-import: 表示执行导入操作。
•-file certificate.cer: 指定要导入的证书文件,通常是以.cer或.crt结尾的证书文件。
•-keystore keystore.jks: 指定要导入证书的密钥库文件,可以是已存在的或者新创建的。
•-alias myalias: 指定要为导入的证书指定的别名,用于在密钥库中标识该证书。
示例1. 创建新的密钥库bashkeytool -genkeypair-keyalg RSA -alias mykey -keystore mykeystore.jks -storepass keystorepass word -keypass keypassword这将生成一个新的密钥库mykeystore.jks,并生成一对RSA 密钥对,别名为mykey。
2. 生成证书请求bashkeytool -certreq-alias mykey -keystore mykeystore.jks -file mycertreq.csr -storepass keystorep assword -keypass keypassword这将为先前生成的密钥对生成一个证书请求文件mycertreq.csr。
通过keytool生成证书,并提取公钥和私钥
通过keytool⽣成证书,并提取公钥和私钥1、⽣成证书keytool -genkeypair -alias abc -keyalg RSA -keypass abc -keystore abc.jks -storepass abc -validity 3650keytool -genkeypair -alias home -storetype PKCS12 -keyalg RSA -keystore home.pkcs12 -storepass 139******** -validity 3650 -keysize 2048keytool命令keytool密钥和证书管理⼯具命令:-certreq ⽣成证书请求-changealias 更改条⽬的别名-delete 删除条⽬-exportcert 导出证书-genkeypair ⽣成密钥对-genseckey ⽣成密钥-gencert 根据证书请求⽣成证书-importcert 导⼊证书或证书链-importpass 导⼊⼝令-importkeystore 从其他密钥库导⼊⼀个或所有条⽬-keypasswd 更改条⽬的密钥⼝令-list 列出密钥库中的条⽬-printcert 打印证书内容-printcertreq 打印证书请求的内容-printcrl 打印 CRL ⽂件的内容-storepasswd 更改密钥库的存储⼝令使⽤ "keytool -command_name -help" 获取 command_name 的⽤法keytool -genkeypair [OPTION]...⽣成密钥对选项:-alias <alias> 要处理的条⽬的别名-keyalg <keyalg> 密钥算法名称-keysize <keysize> 密钥位⼤⼩-sigalg <sigalg> 签名算法名称-destalias <destalias> ⽬标别名-dname <dname> 唯⼀判别名-startdate <startdate> 证书有效期开始⽇期/时间-ext <value> X.509 扩展-validity <valDays> 有效天数-keypass <arg> 密钥⼝令-keystore <keystore> 密钥库名称-storepass <arg> 密钥库⼝令-storetype <storetype> 密钥库类型-providername <providername> 提供⽅名称-providerclass <providerclass> 提供⽅类名-providerarg <arg> 提供⽅参数-providerpath <pathlist> 提供⽅类路径-v 详细输出-protected 通过受保护的机制的⼝令使⽤ "keytool -help" 获取所有可⽤命令2、提取公钥2.1 ⽤keytool只能提取cert格式的公钥keytool -list -rfc -keystore abc.jks -storepass abc显⽰如下:密钥库类型: jks密钥库提供⽅: SUN您的密钥库包含 1 个条⽬别名: abc创建⽇期: 2019-5-18条⽬类型: PrivateKeyEntry证书链长度: 1证书[1]:-----BEGIN CERTIFICATE-----MIIDXzCCAkegAwIBAgIEQkT0ojANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJjbjELMAkGA1UECBMCZ2QxCzAJBgNVBAcTAnN6MREwDwYDVQQKEwhjaGFuZ2dvdTERMA8GA1UECxMIY2hhbmdnb3UxETAPBgNVBAMTCGNoYW5nZ291MB4XDTE5MDUxNzIwMDMyNFoXDTE5MDgxNTIwMDMyNFowYDELMAkGA1UEBhMCY24xCzAJBgNVBAgTAmdkMQswCQYDVQQHEwJzejERMA8GA1UEChMIY2hhbmdnb3UxETAPBgNVBAsTCGNoYW5nZ291MREwDwYDVQQDEwhjaGFuZ2dvdTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxbBImi74o/QtTM/qMgJreO8IQGkZEbv/JHjzPl/O+tFBlNETMBrYumfcty0NEbyuiNG615mxgf0bDd/D1Z4XD/GX8RlB9upF9ESvrZa8XKxvh5D2Dh+FzwC/ENZbtZ/cd7S3CD8avGWbbiMimBJqCysjLL074huX5U6Q6a09ubp1oBOJndZLYUVlzp31hwE1WO2P6+KG4ji9ZkuWxGv4jSqLUDZ7yACrYwTOEZSA1jGunZs/pR7S7agw9ixdasKIkiByO+S0GfwjWGhwn2UsbTsnaTSqvHm9fzxoizaJQ+C2ts39P9XZXK+ZpHrFee9DcUZlNbRZvGXdzGZWZsr/UCAwEAAaMhMB8wHQYDVR0OBBYEFDlS24hM6d3CpJUW4QNA91iPVq+TMA0GCSqGSIb3DQEBCwUAA4IBAQByLqfGerXnoxT4roBo8/PY7+Ir1lQfpQWSYWIDcY7+ek5c7AGqGOk5dVG4GxdgsCdCmNM9VlcS7r2jlmD1tO4g2MABbYWKkaVunSdYm73KhF4ktz+QPrBnUKisZnE6wciPl+MBe6J61uJR47SxGd/bbqwr7JjfpvepAux3NVNaL6YN8K4M4Zwapu+GTiwNyoBXk6bTPp4fdgWKpW6Xi+DX64vC0WVqiQSRMSIZ+1RzPBRjaOXQklJuFbYIbnez9eVd1I264ziUIUvBQfE8bqZrk/bvyt5lPnmpZJBthiEe/C3mMmsLwsUTN7jsIldtJaZ1lffmqar3bqxTxRdcw60x-----END CERTIFICATE-----通过通道符号把cert格式转成public key格式keytool -list -rfc --keystore wood.jks | openssl x509 -inform pem -pubkey输出显⽰:-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvFsEiaLvij9C1Mz+oyAmt47whAaRkRu/8kePM+X8760UGU0RMwGti6Z9y3LQ0RvK6I0brXmbGB/RsN38PVnhcP8ZfxGUH26kX0RK+tlrxcrG+HkPYOH4XPAL8Q1lu1n9x3tLcIPxq8ZZtuIyKYEmoLKyMsvTviG5flTpDprT25unWgE4md1kthRWXOnfWHATVY7Y/r4obiOL1mS5bEa/iNKotQNnvIAKtjBM4RlIDWMa6dmz+lHtLtqDD2LF1qwoiSIHI75LQZ/CNYaHCfZSxtOydpNKq8eb1/PGiLNolD4La2zf0/1dlcr5mkesV570NxRmU1tFm8Zd3MZlZmyv9QIDAQAB-----END PUBLIC KEY----------BEGIN CERTIFICATE-----MIIDXzCCAkegAwIBAgIEQkT0ojANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJjbjELMAkGA1UECBMCZ2QxCzAJBgNVBAcTAnN6MREwDwYDVQQKEwhjaGFuZ2dvdTERMA8GA1UECxMIY2hhbmdnb3UxETAPBgNVBAMTCGNoYW5nZ291MB4XDTE5MDUxNzIwMDMyNFoXDTE5MDgxNTIwMDMyNFowYDELMAkGA1UEBhMCY24xCzAJBgNVBAgTAmdkMQswCQYDVQQHEwJzejERMA8GA1UEChMIY2hhbmdnb3UxETAPBgNVBAsTCGNoYW5nZ291MREwDwYDVQQDEwhjaGFuZ2dvdTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxbBImi74o/QtTM/qMgJreO8IQGkZEbv/JHjzPl/O+tFBlNETMBrYumfcty0NEbyuiNG615mxgf0bDd/D1Z4XD/GX8RlB9upF9ESvrZa8XKxvh5D2Dh+FzwC/ENZbtZ/cd7S3CD8avGWbbiMimBJqCysjLL074huX5U6Q6a09ubp1oBOJndZLYUVlzp31hwE1WO2P6+KG4ji9ZkuWxGv4jSqLUDZ7yACrYwTOEZSA1jGunZs/pR7S7agw9ixdasKIkiByO+S0GfwjWGhwn2UsbTsnaTSqvHm9fzxoizaJQ+C2ts39P9XZXK+ZpHrFee9DcUZlNbRZvGXdzGZWZsr/UCAwEAAaMhMB8wHQYDVR0OBBYEFDlS24hM6d3CpJUW4QNA91iPVq+TMA0GCSqGSIb3DQEBCwUAA4IBAQByLqfGerXnoxT4roBo8/PY7+Ir1lQfpQWSYWIDcY7+ek5c7AGqGOk5dVG4GxdgsCdCmNM9VlcS7r2jlmD1tO4g2MABbYWKkaVunSdYm73KhF4ktz+QPrBnUKisZnE6wciPl+MBe6J61uJR47SxGd/bbqwr7JjfpvepAux3NVNaL6YN8K4M4Zwapu+GTiwNyoBXk6bTPp4fdgWKpW6Xi+DX64vC0WVqiQSRMSIZ+1RzPBRjaOXQklJuFbYIbnez9eVd1I264ziUIUvBQfE8bqZrk/bvyt5lPnmpZJBthiEe/C3mMmsLwsUTN7jsIldtJaZ1lffmqar3bqxTxRdcw60x-----END CERTIFICATE-----3、提取私钥3.1 需要把证书先转成pfx格式keytool -v -importkeystore -srckeystore abc.jks -srcstoretype jks -srcstorepass abc -destkeystore abc.pfx -deststoretype pkcs12 -deststorepass abc -destkeypass abc 3.2 提取私钥显⽰在屏幕上openssl pkcs12 -in abc.pfx -nocerts -nodes输出到⽂件openssl pkcs12 -in abc.pfx -nocerts -nodes -out abc.key显⽰:-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8WwSJou+KP0LUzP6jICa3jvCEBpGRG7/yR48z5fzvrRQZTREzAa2Lpn3LctDRG8rojRuteZsYH9Gw3fw9WeFw/xl/EZQfbqRfREr62WvFysb4eQ9g4fhc8AvxDWW7Wf3He0twg/Grxlm24jIpgSagsrIyy9O+Ibl+VOkOmtPbm6daATiZ3WS2FFZc6d9YcBNVjtj+vihuI4vW ZLlsRr+I0qi1A2e8gAq2MEzhGUgNYxrp2bP6Ue0u2oMPYsXWrCiJIgcjvktBn8I1hocJ9lLG07J2k0qrx5vX88aIs2iUPgtrbN/T/V2VyvmaR6xXnvQ3FGZTW0Wbxl3c xmVmbK/1AgMBAAECggEAUsH+9WZ0rx5qg8tqGkxXFpGkVa35KXOy24XbgqcLglde nFtDMlELam+Fl+1jmG0IszLEtWzX2zqnzHlMibxDFH3ROwaDOWhIql78Pslm0+nr kGLIgf3nPRZveMM1LqM0oQAoPlCKz7l/054BAkFvsm2xZCYwa7qvoLU4DSWz7int xpjJcgS+dxXUbSm8o8vPnT/cdg8HGPmMj+z4+evR1058M93m/VZ4vrHZsQiCnfb0tU0FDGQwCeSdDhgbVsEZ0HkNrNQwVZ6UpJSwlY14a2wMdp4ITM7db0t29H+flrne sjHK1/Cprz5BwIimJv2uQkkBCnyjrWi4JX0REM/lAQKBgQDiwQbpRDgkssJFjps3 ycCpYcCCKINd6DRHREnc7semepcZq0Q2hWqh9Ba031NapWFla2y7bi2G4XcIgC+uU23bVaALjxjnuPgg9Jb6lROhhxHmQayG2cSdpSNvdEppKkNfMnteTlBu7a8xpayq YHoScSbjxquB5Du9++aV8diWwQKBgQDUpiX8+/UHSyTMxr+5i/8M/A1W4cqwtJFu9wiDJrW7UFI71FLEDCOEgPaf0FKhZdLMC+2fCO9h1Gbbie9cVbGa/MVBXNnU/sYa nZIymUzctx/r9RTc0BJ1zNCWPNj7FxJjf4Uqs1mdTRkB3p/x1RzsOoYBMHybhdu1j3HknZ36NQKBgDHiqXSUL43TTe4ji35ggmRBPyrjYtM8DJRJL77NQVscyTU6eo1M GMN8gapVH29nxt+bHJa3jIiJ/bf/C35cmGSSl90zJBWGmgAWD0kdlu4IWyW++QfJ zPmppPwWJ3CvfZbp8j4zGHrvC4Xunuf0xaZdAmNGB+FRptsLGhWO2UmBAoGAO8zV lgVM7NYm7SdfN1C1UvN21N3+YB8HXws9a5RxOtHlrkmRVOyM+HBD6sFs21KFKziX hEfA+eP/YPGzTGYU4h7/Ydg4sftLvqRdPrl5sgAVjAeJ7GbfKh2E8xr9ce8VDsIHsvBo3SGXTL1MgXeLAKucj60Q/bNxC+fhAYeJq5kCgYEAlhguSbZeJ8jGVzZpl1FI2B5OMSgs45IUoOKtXYSFKC4JuVZiZ+LCEqsGnnakSi2bWSLjx54g6umWx/BLI3U/ zqVuCPw2UkWWjs0jghOeRTxMqX+WJSuZqmaZrtPgrkSmCiGSWEhfTVINLNOgFBMH wMSf0XsGgUlP9aA0yD6qPzU=-----END PRIVATE KEY-----。
keytool参数
keytool参数(原创实用版)目录1.keytool 简介2.keytool 参数说明3.keytool 参数举例4.keytool 参数的作用5.总结正文一、keytool 简介keytool 是一款 Java 密钥管理工具,它可以用于生成、存储和管理加密密钥。
keytool 是 Java 加密扩展 (JCE) 和 Java 安全扩展 (JSR 107) 的一部分,它可以在 Java 应用程序中使用,同时也可以作为独立的命令行工具使用。
二、keytool 参数说明keytool 提供了许多参数,用于执行各种密钥管理任务。
这些参数可以分为以下几类:1.密钥生成参数:用于生成新的密钥对或密钥。
2.密钥导入参数:用于将现有的密钥导入到 keytool 中。
3.密钥导出参数:用于将 keytool 中的密钥导出到文件或另一个密钥管理工具中。
4.密钥删除参数:用于删除 keytool 中的密钥。
5.密钥列表参数:用于列出 keytool 中的所有密钥。
6.密钥存储参数:用于将密钥存储到不同的存储介质中,如内存、文件或硬件安全模块 (HSM)。
三、keytool 参数举例以下是一些常见的 keytool 参数及其用法:1.生成密钥对:```keytool -genkey -alias myKeyPair -keyalg RSA -keysize 2048 -validity 365 -store myKeyStore```2.导入密钥:```keytool -importkey -alias myKey -file myKey.pem -keystore myKeyStore```3.导出密钥:```keytool -exportkey -alias myKey -file myKey.pem -keystore myKeyStore```4.删除密钥:```keytool -delete -alias myKey -keystore myKeyStore```5.列出密钥:```keytool -list -keystore myKeyStore```6.存储密钥:```keytool -store -file myKeyStore -keypass myKeyPassword```四、keytool 参数的作用keytool 的各个参数用于执行不同的密钥管理任务,如生成、导入、导出、删除和列出密钥等。
jdk工具keytool和jarsigner帮助
jdk工具keytool和jarsigner帮助jdk工具keytool和jarsigner帮助Part1(jdk keytool&jarsigner tool manual)0.背景keytool是JDK中包含的密钥和证书的管理工具。
用于管理私钥及其相关的X.509证书链的keystore。
X.509证书链用于认证对应的公钥,keystore类似于一个数据库。
同时keytool还用于管理信任实体发布的证书。
jarsigner是JDK中包含的用于JAR文件签名和验证的工具。
为Java档案文件(JAR)生成签名,以及对已签名的jar文件的进行校验。
1.工具Location这两个工具都位于$JAVA_HOME/bin目录下,其中$JAVA_HOME是JDK的安装目录。
这两个工具都是在命令行中使用,在命令行窗口输入:keytool和jarsigner即可获取命令的工具的使用方法。
2.keytool工具简介keytool是密钥和证书管理工具。
用户使用该工具来管理公钥/私钥对以及关联的证书,通过使用数字签名,可以应用于自签名或者数据完整性/认证服务,用户还可以使用该工具来缓存合作伙伴的公钥(以证书的形式)。
证书是由实体进行数字签名的声明,这里实体可以是个人或者企业。
一旦数据被数字签名,那么可以通过检查数据完整性和可靠性来校验签名。
完整性的意思是数据没有被修改/篡改过,可靠性是指数据确实是来自于宣布拥有数据的人。
keytool将密钥和证书存储在所谓的keystore中,默认的keystore实现是将keystore作为一个文件。
它使用密码来保护私钥。
jarsigner工具使用keystore中的信息来生成或者校验JAR文件的数字签名。
jarsigner使用附带在JAR文件中的证书来校验数字签名(证书包含在JAR文件的签名块文件中),然后检查证书的公钥是否是可信赖的,也就是说是否包含在指定的keystore中。
数字证书中keytool命令使用说明
数字证书中keytool命令使⽤说明这个命令⼀般在JDK\jre\lib\security\⽬录下操作keytool常⽤命令-alias 产⽣别名-keystore 指定密钥库的名称(就像数据库⼀样的证书库,可以有很多个证书,cacerts这个⽂件是jre⾃带的,你也可以使⽤其它⽂件名字,如果没有这个⽂件名字,它会创建这样⼀个)-storepass 指定密钥库的密码-keypass 指定别名条⽬的密码-list 显⽰密钥库中的证书信息-v 显⽰密钥库中的证书详细信息-export 将别名指定的证书导出到⽂件-file 参数指定导出到⽂件的⽂件名-delete 删除密钥库中某条⽬-import 将已签名数字证书导⼊密钥库-keypasswd 修改密钥库中指定条⽬⼝令-dname 指定证书拥有者信息-keyalg 指定密钥的算法-validity 指定创建的证书有效期多少天-keysize 指定密钥长度使⽤说明:导⼊⼀个证书命令可以如下:keytool -import -keystore cacerts -storepass 666666 -keypass 888888 -alias alibabacert -file C:\alibabajava\cert\test_root.cer 其中-keystore cacerts中的cacerts是jre中默认的证书库名字,也可以使⽤其它名字-storepass 666666中的666666是这个证书库的密码-keypass 888888中的888888是这个特定证书的密码-alias alibabacert中的alibabacert是你导⼊证书的别名,在其它操作命令中就可以使⽤它-file C:\alibabajava\cert\test_root.cer中的⽂件路径就是要导⼊证书的路径浏览证书库⾥⾯的证书信息,可以使⽤如下命令:keytool -list -v -alias alibabacert -keystore cacerts -storepass 666666要删除证书库⾥⾯的某个证书,可以使⽤如下命令:keytool -delete -alias alibabacert -keystore cacerts -storepass 666666要导出证书库⾥⾯的某个证书,可以使⽤如下命令:keytool -export -keystore cacerts -storepass 666666 -alias alibabacert -file F:\alibabacert_root.cer要修改某个证书的密码(注意:有些数字认证没有私有密码,只有公匙,这种情况此命令⽆效)这个是交互式的,在输⼊命令后,会要求你输⼊密码keytool -keypasswd -alias alibabacert -keystore cacerts这个不是交互式的,输⼊命令后直接更改Keytool -keypasswd -alias alibabacert -keypass 888888 -new 123456 -storepass 666666 -keystore cacertsOwner: CN=BOCTestCA, O=BOCTest, C=CNIssuer: CN=BOCTestCA, O=BOCTest, C=CNSerial number: 31e60001Valid from: Tue Oct 28 16:54:26 CST 2008 until: Sat Oct 28 16:54:26 CST 2028Certificate fingerprints:MD5: F0:35:F9:69:31:AE:87:01:6C:2D:56:BD:02:0A:16:4ASHA1: 24:EF:84:14:4E:BD:0D:37:59:2D:70:28:79:10:88:EA:0A:06:13:20Signature algorithm name: SHA1withRSAVersion: 3Extensions:#1: ObjectId: 2.5.29.19 Criticality=trueBasicConstraints:[CA:truePathLen:2147483647]#2: ObjectId: 2.5.29.15 Criticality=falseKeyUsage [DigitalSignatureNon_repudiationKey_EnciphermentData_EnciphermentKey_AgreementKey_CertSignCrl_Sign]#3: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: E3 81 66 00 7B C9 8F 3F 5A 77 E0 6D 5C EB 41 42 ..f....?Zw.m\.AB 0010: C7 48 5A 10 .HZ.]]#4: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=falseAuthorityInfoAccess [[accessMethod: 1.3.6.1.5.5.7.48.1]#5: ObjectId: 2.5.29.31 Criticality=falseCRLDistributionPoints [[DistributionPoint:[CN=crl1, OU=crl, O=BOCTest, C=CN]]]#6: ObjectId: 2.5.29.32 Criticality=falseCertificatePolicies [[CertificatePolicyId: [2.5.29.32.0][PolicyQualifierInfo: [qualifierID: 1.3.6.1.5.5.7.2.182.1190010: 2E 31 37 31 2E 31 30 36 2F 63 70 73 2E 68 74 6D .171.106/cps.htm ]] ]]#7: ObjectId: 2.16.840.1.113730.1.1 Criticality=false NetscapeCertType [SSL CAS/MIME CAObject Signing CA]#8: ObjectId: 2.5.29.35 Criticality=falseAuthorityKeyIdentifier [KeyIdentifier [0000: E3 81 66 00 7B C9 8F 3F 5A 77 E0 6D 5C EB 41 42 ..f....?Zw.m\.AB 0010: C7 48 5A 10 .HZ.]]Trust this certificate? [no]: yesCertificate was added to keystore[root@orange3c bin]#NOTE: (xp: %JAVA_HOME%/jre/lib/security/cacerts, linux: $JAVA_HOME/jre/lib/security/cacerts)验证是否已创建过同名的证书keytool -list -v -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -storepass changeit删除已创建的证书keytool -delete -alias tomcat -keystore "%%JAVA_HOME%/jre/lib/security/cacerts " -storepass changeitKeytool是⼀个Java数据证书的管理⼯具。
keytool explorer用法
keytool explorer用法Keytool Explorer(密钥管理工具)的用法Keytool Explorer是一个用于管理和操作密钥库和证书的图形用户界面(GUI)工具。
它可以在Windows、Mac和Linux操作系统上使用,并提供了一些方便的功能,帮助用户生成、查看、导出和导入密钥和证书。
要开始使用Keytool Explorer,首先需要安装该软件并打开它。
安装时,请确保选择与您的操作系统兼容的版本。
一旦打开了Keytool Explorer,您将看到一个直观的界面,它使您能够执行各种密钥和证书相关的操作。
一些常用的功能包括:1. 生成密钥对:使用Keytool Explorer,您可以生成各种类型的密钥对,如RSA、DSA和ECDSA。
只需提供必要的信息,如密钥长度和密码,Keytool Explorer会自动为您生成密钥对并将其保存到密钥库中。
2. 查看和管理密钥库:Keytool Explorer使您可以轻松查看和管理保存在密钥库中的密钥和证书。
您可以查看密钥库中的所有条目,并执行操作,如添加、删除、导出和导入密钥和证书。
3. 导出和导入证书:使用Keytool Explorer,您可以从密钥库中导出证书,并将其保存为文件。
您还可以通过导入现有的证书文件来添加到密钥库中。
4. 密钥库和证书管理:Keytool Explorer提供了一些管理密钥库和证书的功能,包括更改密钥库密码、更改条目别名、查看证书详细信息等。
总之,Keytool Explorer是一个实用的工具,帮助用户轻松管理和操作密钥库和证书。
它的直观界面和丰富的功能使其成为处理密钥和证书的理想选择。
无论您是开发者、系统管理员还是安全专业人士,Keytool Explorer都将是您的良好伴侣。
希望这篇文章能够帮助您了解Keytool Explorer的用法。
如果您有其他问题,请随时提问。
keytool使用
keytool使用管理由私钥和认证相关公钥的X.509 证书链组成的密钥仓库(数据库)。
还管理来自可信任实体的证书。
结构keytool [ 命令 ]说明keytool 是个密钥和证书管理工具。
它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。
它还允许用户储存他们的通信对等者的公钥(以证书形式)。
证书是来自一个实体(个人、公司等)的经数字签名的声明,它声明某些其它实体的公钥(及其它信息)具有某一的特定值(参见证书)。
当数据被数字化签名后,校验签名即可检查数据的完整性和真实性。
完整性的意思是数据没有被修改或损坏过,真实性的意思是数据的确是来自声称创建了该数据和对它进行了签名的实体。
keytool 将密钥和证书储存在一个所谓的密钥仓库中。
缺省的密钥仓库实现将密钥仓库实现为一个文件。
它用口令来保护私钥。
jarsigner 工具利用密钥仓库中的信息来产生或校验Java 存档(JAR) 文件的数字签名(JAR 文件将类文件、图象、声音和/或其它数字化数据打包在一个文件中)。
jarsigner 用JAR 文件所附带的证书(包含于 JAR 文件的签名块文件中)来校验 JAR 文件的数字签名,然后检查该证书的公钥是否“可信任”,即是否包括在指定的密钥仓库中。
请注意:keytool 和 jarsigner 工具完全取代了 JDK 1.1 中提供的javakey 工具。
这些新工具所提供的功能比 javakey 提供的多,包括能够用口令来保护密钥仓库和私钥,以及除了能够生成签名外还可以校验它们。
新的密钥仓库体系结构取代了javakey 所创建和管理的身份数据库。
可以利用 -identitydb keytool 命令将信息从身份数据库导入密钥仓库。
密钥仓库项在密钥仓库中有两种不同类型的项:密钥项- 每项存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。
keytool参数
keytool参数摘要:1.keytool 简介2.keytool 参数说明3.keytool 参数示例4.keytool 参数的作用5.使用keytool 参数的注意事项正文:1.keytool 简介keytool 是一款Java 密钥管理工具,可用于生成、存储和管理加密密钥。
它提供了多种加密算法,如RSA、DSA 和EC 等,并支持多种密钥存储格式,如PKCS12、JKS 和XML 等。
keytool 还可用于创建和管理证书请求,以及添加、删除和修改证书中的扩展信息。
2.keytool 参数说明keytool 提供了丰富的参数选项,用于满足各种密钥管理需求。
以下是一些常用的keytool 参数及其说明:- -genkey:用于生成新的密钥对。
- -importkey:用于导入现有的密钥。
- -exportkey:用于导出密钥。
- -store:用于将密钥存储到指定的存储介质。
- -delete:用于删除指定的密钥。
- -list:用于列出指定存储介质中的所有密钥。
- -get:用于获取指定存储介质中的密钥信息。
3.keytool 参数示例以下是一些keytool 参数的示例:- 生成新的RSA 密钥对:`keytool -genkey -alias mykey -keyalg RSA -keysize 2048 -store mykey.jks`- 导入现有的DSA 密钥:`keytool -importkey -alias mykey -file mykey.dsa -store mykey.jks`- 导出密钥为PEM 格式:`keytool -exportkey -alias mykey -file mykey.pem -store mykey.jks`- 将密钥存储到PKCS12 格式的文件中:`keytool -store -file mykey.p12 -alias mykey`- 删除指定的密钥:`keytool -delete -alias mykey -store mykey.jks` - 列出指定存储介质中的所有密钥:`keytool -list -store mykey.jks`- 获取指定存储介质中的密钥信息:`keytool -get -alias mykey -store mykey.jks`4.keytool 参数的作用keytool 的各个参数用于实现不同的功能。
JDK自带工具keytool生成ssl证书
JDK自带工具keytool生成ssl证书前言:因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全。
百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具:keytool,外加看了同事的心得体会,自己总结了一下具体的使用方法和使用过程中发现的问题及解决办法。
1:什么是HTTPS?HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。
问题:Firebug和postman之类的浏览器调试工具,为什么获取到的是明文?解答:SSL是对传输的数据进行加密,针对的是传输过程的安全。
firebug之类的浏览器调试工具,因为他们得到的是客户端加密之前/解密之后的数据,因此是明文的。
2:什么是自签名证书?就是自己生成的证书,并不是官方生成的证书。
除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书是要花钱滴。
3:进入正题,使用JDK自带工具KeyTool 生成自签发证书!第一步:为服务器生成证书打开CMD命令行工具,cd到C盘根目录或者是jdk的bin目录下,如下图所示:附录1:常用keytool命令使用keytool命令生成证书:keytool-genkey-alias tomcat(别名)-keypass 123456(别名密码)-keyalg RSA(算法)-keysize 1024(密钥长度)-validity 365(有效期,天单位)-keystore D:/keys/tomcat.keystore(指定生成证书的位置和证书名称)-storepass 123456(获取keystore信息的密码)方便复制版:keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365-keystore D:/keys/tomcat.keystore -storepass 123456图例:回车执行后如下图:点击回车即可在D:/keys/文件夹内生成名为:tomcat.keystore的文件。
keytool密匙和证书管理工具
keytool - 密鑰和証書管理工具管理由私鑰和認証相關公鑰的 X.509 証書鏈組成的密鑰倉庫(資料庫)。
還管理來自可信任實體的証書。
結構keytool [ 命令 ]說明keytool是個密鑰和証書管理工具。
它使用戶能夠管理自己的公鑰/私鑰對及相關証書,用於(通過數字簽名)自我認証(用戶向別的用戶/服務認証自己)或數據完整性以及認証服務。
它還允許用戶儲存他們的通信對等者的公鑰(以証書形式)。
証書是來自一個實體(個人、公司等)的經數字簽名的聲明,它聲明某些其它實體的公鑰(及其它資訊)具有某一的特定值(參見証書)。
當數據被數字化簽名後,校驗簽名即可檢查數據的完整性和真實性。
完整性的意思是數據沒有被修改或損壞過,真實性的意思是數據的確是來自聲稱創建了該數據和對它進行了簽名的實體。
keytool將密鑰和証書儲存在一個所謂的密鑰倉庫中。
預設的密鑰倉庫實現將密鑰倉庫實現為一個文件。
它用密碼來保護私鑰。
jarsigner工具利用密鑰倉庫中的資訊來產生或校驗 Java 存檔 (JAR) 文件的數字簽名(JAR 文件將類文件、圖像、聲音和/或其它數字化數據打包在一個文件中)。
jarsigner用 JAR 文件所附帶的証書(包含於 JAR 文件的簽名塊文件中)來校驗 JAR 文件的數字簽名,然後檢查該証書的公鑰是否“可信任”,即是否包括在指定的密鑰倉庫中。
請注意:keytool和jarsigner工具完全取代了 JDK 1.1 中提供的javakey 工具。
這些新工具所提供的功能比javakey提供的多,包括能夠用密碼來保護密鑰倉庫和私鑰,以及除了能夠產生簽名外還可以校驗它們。
新的密鑰倉庫體系結構取代了javakey所創建和管理的身份資料庫。
可以利用 -identitydb keytool命令將資訊從身份資料庫導入密鑰倉庫。
密鑰倉庫項在密鑰倉庫中有兩種不同型態的項:1.密鑰項 - 每項存放極為敏感的加密密鑰資訊,這種資訊以一種受保護的格式儲存以防止未授權的訪問。
keytool用法
Keytool是Java平台的一个工具,用于管理密钥库和证书。
以下是Keytool的一些常见用法:1. 生成密钥对:使用“-genkeypair”选项可以生成一对非对称密钥,包括公钥和私钥。
例如:```bashkeytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.jks```上述命令将生成一个2048位的RSA密钥对,并将其存储在名为“mykeystore.jks”的密钥库中。
该命令还指定了别名为“myalias”,密钥库的有效期为365天。
2. 导入证书:使用“-import”选项可以将证书导入到密钥库中。
例如:```bashkeytool -import -alias myalias -file mycertificate.crt -keystore mykeystore.jks```上述命令将名为“mycertificate.crt”的证书导入到名为“mykeystore.jks”的密钥库中,并将别名为“myalias”。
3. 导出证书:使用“-export”选项可以将密钥库中的证书导出为文件。
例如:```bashkeytool -export -alias myalias -file mycertificate.crt -keystore mykeystore.jks```上述命令将名为“mykeystore.jks”的密钥库中的名为“myalias”的证书导出为名为“mycertificate.crt”的文件。
4. 删除密钥库中的条目:使用“-delete”选项可以删除密钥库中的条目。
例如:```bashkeytool -delete -alias myalias -keystore mykeystore.jks```上述命令将删除名为“mykeystore.jks”的密钥库中名为“myalias”的条目。
Java使用keytool创建CA证书的操作
Java使⽤keytool创建CA证书的操作keytool是⼀个密钥和证书管理⼯具1.keytool⼯具位置keytool⼯具在 JDK 的安装⽬录的 bin ⽬录下⾯2.keytool⼯具命令展⽰打开命令⾏进⼊ bin ⽬录,然后输⼊命令 keytool.exe,就能看见keytool⼯具⽀持哪些命令,如下图所⽰:注意下⾯的⽤法提⽰:使⽤ “keytool -command_name -help” 获取 command_name 的⽤法3.查看具体命令⽤法这⾥我们使⽤ -genkeypair 命令来创建密钥库,先来看看 genkeypair 命令的⽤法,如下图所⽰:4.新建密钥库.\keytool.exe -genkeypair -alias CA -keyalg RSA -validity 30 -keystore D:\keytoolCert\.CAkeystore4.1.参数说明-alias CA: alias表⽰别名的意思,这⾥别名为 CA,如果不写的话,它的默认值为 mykey-keyalg RSA:密钥算法名称,这⾥使⽤RSA算法-validity 30:有效天数为30天-keystore D:\keytoolCert.CAkeystore:指定密钥库存放的位置。
命令输⼊过后会让我们输⼊密码、唯⼀判别名(dname)和密钥⼝令注意密钥库的密码⾄少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等名字与姓⽒"应该是输⼊域名,⽽不是我们的个⼈姓名,其他的可以不填这条命令的完整含义是:使⽤ keytool.exe ,创建⼀个别名为 CA,算法为 RSA,有效天数为30天的密钥,并将它存放在 D:\keytoolCert\ ⽬录下的⼀个名叫 .CAkeystore 的密钥库中,如果密钥库不存在则⾃动创建。
执⾏完上述命令后,在 D:\keytoolCert\ ⽬录下⽣成了⼀个".CAkeystore"的⽂件,如下图所⽰:5.查看密钥库⾥⾯的信息命令如下:.\keytool.exe -list -keystore D:\keytoolCert\.CAkeystore -v结果如下:5.1.查看密钥库信息其他命令查看密钥库中指定密钥的信息:keytool.exe -list -alias CA -keystore“D:\keytoolCert.CAkeystore” -v6.导出密钥到证书⽂件.\keytool -export -alias CA -file D:\keytoolCert\pendIssueCert_1.cer -keystore D:\keytoolCert\.CAkeystore执⾏完上述命令后,在 D:\keytoolCert\ ⽬录下⽣成了⼀个"pendIssueCert_1.cer"的证书⽂件,如下图所⽰:7.查看指定证书⽂件的信息:keytool.exe -printcert -file D:\keytoolCert\.pendIssueCert_1.cer -v8.导⼊证书将证书⽂件 pendIssueCert_1.cer 导⼊到名为 .pendIssuekeystore 的证书库中keytool -import -keystore D:\keytoolCert\.pendIssuekeystore -file D:\keytoolCert\pendIssueCert_1.cer注意:D:\keytoolCert.pendIssuekeystore 密钥库不存在会⾃动创建导⼊时没有输⼊ -alias 那么它的别名就是 mykey ,如果有需要可以⾃⼰指定别名9.删除密钥库中的条⽬删除密钥库 .pendIssuekeystore 中别名为 mykey 的证书条⽬keytool -delete -keystore D:\keytoolCert\.pendIssuekeystore -alias mykey删除前先查看有⼀个密钥,删除后再查看就没有了,表⽰删除成功。
keytool参数
keytool参数keytool是Java开发工具包(JDK)中的一个命令行工具,用于管理Java密钥库(Java KeyStore)和证书。
它提供了一种简单的方式来生成、导入、导出和管理密钥对、证书和证书链,以及对密钥库的操作。
在本文中,我们将介绍一些常用的keytool参数及其用法。
1. -genkeypair参数:使用-genkeypair参数可以生成一个新的密钥对,并将其存储在一个新的密钥库中。
这个参数通常与-alias、-keyalg、-keysize、-validity和-keypass等参数一起使用。
例如,下面的命令将生成一个RSA密钥对,存储在名为mykeystore.jks 的密钥库中:keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.jks -keypass mypassword2. -import参数:使用-import参数可以将一个证书或证书链导入到一个密钥库中。
这个参数通常与-alias、-file和-keystore等参数一起使用。
例如,下面的命令将导入一个名为mycert.cer的证书文件到名为mykeystore.jks的密钥库中:keytool -import -alias myalias -file mycert.cer -keystore mykeystore.jks3. -export参数:使用-export参数可以将一个证书从一个密钥库中导出到一个文件中。
这个参数通常与-alias、-file和-keystore等参数一起使用。
例如,下面的命令将从名为mykeystore.jks的密钥库中导出一个名为mycert.cer的证书文件:keytool -export -alias myalias -file mycert.cer -keystore mykeystore.jks4. -list参数:使用-list参数可以列出一个密钥库中的所有条目,包括密钥对、证书和证书链。
keytools使用
java keytool证书工具使用小结作者: Michael日期: 2012 年 5 月 10 日发表评论 (2)查看评论Keytool 是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:密钥实体(Key entity)-密钥(secret key)或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate entries)-只包含公钥. JDK中keytool常用参数说明(不同版本有差异,详细可参见【附录】中的官方文档链接):∙-genkey 在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)∙-alias 产生别名每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写∙-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)∙-keyalg 指定密钥的算法 (如 RSA DSA,默认值为:DSA)∙-validity 指定创建的证书有效期多少天(默认 90)∙-keysize 指定密钥长度(默认 1024)∙-storepass 指定密钥库的密码(获取keystore信息所需的密码)∙-keypass 指定别名条目的密码(私钥的密码)∙-dname 指定证书发行者信息其中:“CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”∙-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码∙-v 显示密钥库中的证书详细信息∙-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码∙-file 参数指定导出到文件的文件名∙-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别-keystore 指定keystore – storepass 密码∙-printcert 查看导出的证书信息 keytool -printcert -file g:\sso\michael.crt∙-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码-keystore sage∙-storepasswd 修改keystore口令 keytool -storepasswd -keystore g:\sso\michael.keystore(需修改口令的keystore) -storepasspwdold(原始密码) -new pwdnew(新密码)-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书目录说明:1. 生成证书2. 查看证书3. 证书导出4. 附录资料一、生成证书按win 键+R ,弹出运行窗口,输入 cmd 回车,打开命令行窗户,输入如下命令:1 keytool -genkey -alias michaelkey -keyalg RSA -keysize 1024 -keypass michaelpwd -validity 365 -keystore g:\sso\michael.keystore -storepass michaelpwd2截图如下:二、查看证书缺省情况下,-list 命令打印证书的 MD5 指纹。
Keytool工具使用
Keytool工具使用一、生成证书按win键+R,弹出运行窗口,输入cmd回车,打开命令行窗户,输入如下命令:keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"功能:创建一个别名为test1的证书条目,该条目存放在名为test.keystore的密钥库中,若test.keystore密钥库不存在则创建。
参数说明:-genkeypair:生成一对非对称密钥;-alias:指定密钥对的别名,该别名是公开的;-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下(C:\Users\thinkpad)生成一个".keystore"的文件注意:1.在命令行中输入“keytool –genkey”将自动使用默认的算法生成公钥和私钥,这里并未指定使用何算法,将使用默认的DSA算法。
2.由于“.keystore”中包含了私钥,所以是一个需要保密的文件,因此上述操作提示为该文件设置一个密码:“输入密钥库口令”,这里第一次使用该密钥库,因此输入的密码“123456”将成为该默认的密钥库的密码(实际使用时应该设置复杂的口令)。
以后再使用这个密钥库时必须提供这个口令才可以使用。
3.以上操作最后还提示“输入<test1>的主密码”,这里“test1”是默认的别名,使用该名字可以在密钥库“.keystore”中找到对应的公钥、私钥和证书。
此处输入的密码是对应于该别名的私钥的密码,密钥库中每个别名可以使用不同的密码加以保护。
4.密钥库中可以存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分。
在使用keytool工具时没有指定别名,因此系统使用了默认的别名mykey。
KEYTOOL工具应用实例详解
Keytool是一个Java数据证书的管理工具。
keystoreKeytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate entries)——只包含公钥Alias(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写keystore的存储位置在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\文件名为“.keystore”keystore的生成引用keytool-genkey-alias tomcat-keyalg RSA-keystore d:\mykeystore-dname"CN=localhost,OU=localhost,O=localhost, L=SH,ST=SH,C=CN"-keypass changeit-storepass-validity180参数说明:-genkey表示要创建一个新的密钥-dname表示密钥的Distinguished Names,CN=commonNameOU=organizationUnitO=organizationNameL=localityNameS=stateNameC=countryDistinguished Names表明了密钥的发行者身份-keyalg使用加密的算法,这里是RSA-alias密钥的别名-keypass私有密钥的密码,这里设置为changeit-keystore密钥保存在D:盘目录下的mykeystore文件中-storepass存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出-validity该密钥的有效期为180天(默认为90天)cacerts证书文件(The cacerts Certificates File)该证书文件存在于java.home\jre\lib\security目录下,是Java系统的CA证书仓库创建证书1.服务器中生成证书:(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)keytool-genkey-alias tomcat-keyalg RSA-keystore d:\mykeystore-dname"CN=localhost,OU=localhost,O=localhost, L=SH,ST=SH,C=CN"-keypass changeit-storepass changeit2.导出证书,由客户端安装:keytool-export-alias tomcat-keystore d:\mykeystore-file d:\mycerts.cer-storepass changeit3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)keytool-import-trustcacerts-alias tomcat-keystore"%JAVA_HOME%/jre/lib/security/cacerts"-file d:\mycerts.cer -storepass changeit生成的证书可以交付客户端用户使用,用以进行SSL通讯,或者伴随电子签名的jar包进行发布者的身份认证。
Keytool工具使用
Keytool工具使用一、生成证书按win键+R,弹出运行窗口,输入cmd回车,打开命令行窗户,输入如下命令:keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"功能:创建一个别名为test1的证书条目,该条目存放在名为test.keystore的密钥库中,若test.keystore密钥库不存在则创建。
参数说明:-genkeypair:生成一对非对称密钥;-alias:指定密钥对的别名,该别名是公开的;-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下(C:\Users\thinkpad)生成一个".keystore"的文件注意:1.在命令行中输入“keytool –genkey”将自动使用默认的算法生成公钥和私钥,这里并未指定使用何算法,将使用默认的DSA算法。
2.由于“.keystore”中包含了私钥,所以是一个需要保密的文件,因此上述操作提示为该文件设置一个密码:“输入密钥库口令”,这里第一次使用该密钥库,因此输入的密码“123456”将成为该默认的密钥库的密码(实际使用时应该设置复杂的口令)。
以后再使用这个密钥库时必须提供这个口令才可以使用。
3.以上操作最后还提示“输入<test1>的主密码”,这里“test1”是默认的别名,使用该名字可以在密钥库“.keystore”中找到对应的公钥、私钥和证书。
此处输入的密码是对应于该别名的私钥的密码,密钥库中每个别名可以使用不同的密码加以保护。
4.密钥库中可以存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分。
在使用keytool工具时没有指定别名,因此系统使用了默认的别名mykey。
keytool参数
keytool参数1. 简介keytool是Java开发工具包(JDK)中的一个命令行工具,用于管理Java密钥库(JKS)和证书。
它提供了创建、导入、导出和管理密钥库和证书的功能。
keytool 可以用于生成自签名证书、生成密钥对、导入和导出证书以及查看证书信息等操作。
本文将详细介绍keytool的各种参数及其用法。
2. 生成密钥对使用keytool生成密钥对是创建和管理证书的基础。
以下是keytool生成密钥对的常用参数:2.1 -genkeypair使用-genkeypair参数可以生成密钥对,并将其存储在密钥库中。
生成密钥对时,keytool会要求输入一些信息,如密钥库密码、密钥密码、姓名、组织单位等。
以下是使用-genkeypair参数生成密钥对的示例命令:keytool -genkeypair -alias mykey -keyalg RSA -keystore mykeystore.jks2.2 -keyalg-keyalg参数用于指定密钥的算法。
常见的算法有RSA、DSA和EC等。
以下是使用-keyalg参数指定RSA算法生成密钥对的示例命令:keytool -genkeypair -alias mykey -keyalg RSA -keystore mykeystore.jks2.3 -keysize-keysize参数用于指定密钥的长度。
密钥长度越长,安全性越高,但生成和使用密钥的速度也会变慢。
以下是使用-keysize参数指定密钥长度为2048位生成密钥对的示例命令:keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore mykeystor e.jks2.4 -dname-dname参数用于指定证书的拥有者信息。
拥有者信息包括姓名、组织单位、组织名称、城市、省份、国家等。
以下是使用-dname参数指定拥有者信息生成密钥对的示例命令:keytool -genkeypair -alias mykey -keyalg RSA -dname "CN=John Doe, OU=Developme nt, O=Company, L=City, ST=State, C=Country" -keystore mykeystore.jks3. 导入和导出证书keytool可以导入和导出证书,使得我们可以在不同的系统或应用之间共享证书。
使用keytool生成证书
使⽤keytool⽣成证书keytool 简介keytool 是java ⽤于管理密钥和证书的⼯具,其功能包括:创建并管理密钥创建并管理证书作为CA 为证书授权导⼊导出证书主要格式keytool 采⽤ keystore ⽂件来存储密钥及证书,其中可包括私钥、信任证书;keystore ⽂件主要使⽤ JKS格式(也可⽀持其他格式),带密钥存储;其中私钥的存储也有独⽴的密码;⼀、⽣成私钥和证书keytool -genkeypair -alias serverkey -keystore server.keystore按提⽰输⼊keystore 存储密码、私钥密码、个⼈信息,之后会⽣成 server.keystore⽂件若不想输⼊参数,可提供参数:keytool -genkeypair -alias serverkey -keypass 111111 -storepass 111111 \-dname "C=CN,ST=GD,L=SZ,O=vihoo,OU=dev,CN=" \-keyalg RSA -keysize 2048 -validity 3650 -keystore server.keystore参数说明storepass keystore ⽂件存储密码keypass 私钥加解密密码alias 实体别名(包括证书私钥)dname 证书个⼈信息keyalt 采⽤公钥算法,默认是DSAkeysize 密钥长度(DSA算法对应的默认算法是sha1withDSA,不⽀持2048长度,此时需指定RSA) validity 有效期keystore 指定keystore⽂件⼆、查看keystore详情查看详情命令keytool -list -keystore -storepass 111111 server.keystore输出结果Keystore type: JKSKeystore provider: SUNYour keystore contains 1 entryserverkey, Sep 25, 2016, PrivateKeyEntry,Certificate fingerprint (SHA1): 65:75:C9:08:A0:83:21:A1:D7:8D:DA:CD:3D:FB:C2:E0:50:96:29:62加上-v选项可查看更详细信息Keystore type: JKSKeystore provider: SUNYour keystore contains 1 entryAlias name: serverkeyCreation date: Jul 22, 2017Entry type: PrivateKeyEntryCertificate chain length: 1Certificate[1]:Owner: C=CN, ST=GD, L=SZ, O=vihoo, OU=dev, CN=Issuer: C=CN, ST=GD, L=SZ, O=vihoo, OU=dev, CN=Serial number: 5c5eb42Valid from: Sat Jul 2210:45:45 CST 2017until: Tue Jul 2010:45:45 CST 2027Certificate fingerprints:MD5: 27:ED:70:EF:4C:E3:7F:ED:6A:83:67:32:6D:10:24:38SHA1: 79:08:97:6E:62:EE:0F:E6:81:56:66:43:9C:9D:A4:11:EF:CC:28:0CSHA256: 3B:AC:56:8E:60:C2:C8:07:61:19:C7:4A:D3:AF:1F:60:77:24:94:7C:87:6E:C8:E7:17:14:E4:7A:34:0A:CD:8FSignature algorithm name: SHA256withRSAVersion: 3Extensions:#1: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: B4 10 A9 26 5D 6C 4C 46 B4 69 ED 31 2B 20 D1 F4 ...&]lLF.i.1+ ..0010: 58 3C 8F 94 X<..]]三、证书导⼊导出导出证书keytool -exportcert -keystore server.keystore -file server.cer -alias serverkey -storepass 111111参数说明exportcert 表⽰导出证书alias 指⽰别名file 指⽰导出⽂件storepass 指⽰keystore密钥此时导出的证书为DER编码格式,使⽤openssl 可以输出openssl x509 -in server.cer -inform der -noout -text加上 -rfc选项,可输出PEM编码格式的证书keytool -exportcert -keystore server.keystore -rfc -file server.cer -alias serverkey -storepass 111111输出格式如:-----BEGIN CERTIFICATE-----MIIDUTCCAjmgAwIBAgIEBcXrQjANBgkqhkiG9w0BAQsFADBZMRIwEAYDVQQDEwl2...-----END CERTIFICATE-----导⼊证书⼀般为导⼊信任证书(SSL客户端使⽤)keytool -importcert -keystore client_trust.keystore -file server.cer -alias client_trust_server -storepass 111111 -noprompt 参数说明importcert 表⽰导⼊信任证书file 指⽰导⼊证书,⽀持pem/der格式keystore 指⽰⽬标keystore⽂件storepass 指⽰新的keystore密钥alias 指⽰trust证书在keystore中的别名noprompt 指⽰不弹出提⽰导⼊后的证书为 trustedCertEntry 实体类型,⽽私钥证书为 PrivateKeyEntry四、查看证书打印证书keytool -printcert -file server.cer输出Owner: CN=ZZ, OU=DEV, O=, L=GZ, ST=GD, C=CNIssuer: CN=ZZ, OU=DEV, O=, L=GZ, ST=GD, C=CNSerial number: 797f3140Valid from: Sun Sep 2516:43:55 CST 2016until: Sat Dec 2416:43:55 CST 2016Certificate fingerprints:MD5: FB:7D:29:4C:A9:F3:07:0E:CC:74:0D:9B:D4:D6:4D:91SHA1: 65:75:C9:08:A0:83:21:A1:D7:8D:DA:CD:3D:FB:C2:E0:50:96:29:62SHA256: E9:8B:A5:43:5F:40:FA:C5:64:3B:0A:11:1D:BE:D1:07:3C:A1:E2:50:88:71:A7:5C:EC:43:22:98:1B:AA:B6:EB Signature algorithm name: SHA1withDSAVersion: 3Extensions:#1: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 0E C3 62 D3 75 3A 3C B7 D9 C4 BD 8E 63 E7 6C EC ..b.u:<.....c.l.0010: AF 8A 2972 ..)r]]五、转换格式jks格式转 pkcs12keytool -importkeystore -srckeystore server.keystore -destkeystore server.p12 -srcalias serverkey -destalias serverkey \-srcstoretype jks -deststoretype pkcs12 -srcstorepass 111111 -deststorepass 111111 -noprompt参数说明importkeystore 指⽰导⼊导出keystore⽂件,可⽤于同类型或不同类型的导⼊导出srckeystore 指⽰源keystore⽂件srcalias 指⽰源实体别名srcstoretype 指⽰源store类型(jks/pkcs12..)srcstorepass 指⽰源store密码noprompt 不弹出提⽰pkcs12 转jks格式与此同理六、场景⽰例1. 制作Java SSL 双向证书storepass=111111keypass=111111server_dname="C=CN,ST=GD,L=SZ,O=vihoo,OU=dev,CN="client_dname="C=CN,ST=GD,L=SZ,O=vihoo,OU=dev,CN="echo"generate server keystore"keytool -genkeypair -alias serverkey -keypass $keypass -storepass $storepass \-dname $server_dname \-keyalg RSA -keysize 2048 -validity 3650 -keystore server.keystoreecho"generate client keystore"keytool -genkeypair -alias clientkey -keypass $keypass -storepass $storepass \-dname $client_dname \-keyalg RSA -keysize 2048 -validity 3650 -keystore client.keystoreecho"export server certificate"keytool -exportcert -keystore server.keystore -file server.cer -alias serverkey -storepass $storepassecho"export client certificate"keytool -exportcert -keystore client.keystore -file client.cer -alias clientkey -storepass $storepassecho"add server cert to client trust keystore"keytool -importcert -keystore client_trust.keystore -file server.cer -alias client_trust_server \-storepass $storepass -nopromptecho"add client cert to server trust keystore"keytool -importcert -keystore server_trust.keystore -file client.cer -alias server_trust_client \-storepass $storepass -noprompt2. Java 证书与 nginx 证书互转Java通常使⽤JKS作为证书存储格式,⽽Nginx往往采⽤PEM证书格式,如何实现互转?Nginx 证书转 JKSA pem证书和私钥合成p12openssl pkcs12 -export -in server.crt -inkey server.key -passin pass:111111 -password pass:111111 \-name server -out server.p12注意定义-name 选项,这将作为keystore识别实体的参数B p12 证书转jks 证书keytool -importkeystore -srckeystore server.p12 -destkeystore server.keystore \-srcstoretype pkcs12 -deststoretype jks -srcalias server -destalias server \-deststorepass 111111 -srcstorepass 111111如果p12 ⽂件中未指定实体名称,使⽤keytool转换时则不需提供srcalias/destalias参数,⽽输出的keystore实体名称默认为1 JKS 证书转 Nginx证书A jks 证书转p12keytool -importkeystore -srckeystore server.keystore -destkeystore server.p12 \-srcstoretype jks -deststoretype pkcs12 -srcalias server -destalias server \-deststorepass 111111 -srcstorepass 111111B p12 证书提取pem证书和私钥openssl pkcs12 -in server.p12 -clcerts -nokeys -password pass:111111 -out server.crtopenssl pkcs12 -in server.p12 -nocerts -password pass:111111 -passout pass:111111 -out server.key 其中得到的私钥⽂件为PKCS#8 加密格式,证书和密钥均为PEM⽂件编码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Keytool是一个Java数据证书的管理工具。
keystore
Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中
在keystore里,包含两种数据:密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trusted certificate entries)——只包含公钥
Alias(别名)
每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
keystore的存储位置
在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,
如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\
文件名为“.keystore”
keystore的生成
引用
keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass -validity 180
参数说明:
-genkey表示要创建一个新的密钥
-dname表示密钥的Distinguished Names,
CN=commonName
OU=organizationUnit
O=organizationName
L=localityName
S=stateName
C=country
Distinguished Names表明了密钥的发行者身份
-keyalg使用加密的算法,这里是RSA
-alias密钥的别名
-keypass私有密钥的密码,这里设置为changeit
-keystore 密钥保存在D:盘目录下的mykeystore文件中
-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出
-validity该密钥的有效期为 180天 (默认为90天)
cacerts证书文件(The cacerts Certificates File)
该证书文件存在于java.home\jre\lib\security目录下,是Java系统的CA证书仓库
创建证书
1.服务器中生成证书:(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)
keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore-dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"-keypass changeit -storepass changeit
2.导出证书,由客户端安装:
keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass changeit
3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)
keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -file d:\mycerts.cer -storepass changeit
生成的证书可以交付客户端用户使用,用以进行SSL通讯,或者伴随电子签名的jar包进行发布者的身份认证。
常出现的异常:“未找到可信任的证书”--主要原因为在客户端未将服务器下发的证书导入到JVM中,可以用
keytool -list -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass changeit
linux: #keytool -list -alias tomcat -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
来查看证书是否真的导入到JVM中。
keytool生成根证书时出现如下错误:
keytool错误:java.io.IOException:keystore was tampered with,or password was incorrect
原因是在你的home目录下是否还有.keystore存在。
如果存在那么把他删除掉,然后再执行
或者删除"%JAVA_HOME%/jre/lib/security/cacerts 再执行。