如何应用JDK中的keytool.exe命令工具创建数字证书
java-keytool生成数字证书
Keytool是一个Java数据证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate entries)——只包含公钥ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写JDK中keytool常用命令:-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\文件名为“.keystore”)-alias 产生别名-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)-keyalg 指定密钥的算法(如RSA DSA(如果不指定默认采用DSA))-validity 指定创建的证书有效期多少天-keysize 指定密钥长度-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 yushan.crt-keypasswd 修改密钥库中指定条目口令keytool -keypasswd -alias 需修改的别名-keypass 旧密码-new 新密码-storepass keystore密码-keystore sage-storepasswd 修改keystore口令keytool -storepasswd -keystoree:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)-import 将已签名数字证书导入密钥库keytool -import -alias 指定导入条目的别名-keystore 指定keystore -file 需导入的证书下面是各选项的缺省值。
jdk linux 生成crt证书
jdk linux 生成crt证书摘要:一、JDK 自带工具keytool 简介二、生成SSL 证书的步骤1.创建KeyStore2.创建证书请求3.创建自签名证书4.将证书安装到KeyStore5.导出证书三、注意事项正文:一、JDK 自带工具keytool 简介在Java 开发中,为了保证数据的安全传输,我们常常需要使用SSL 证书来实现HTTPS。
而JDK 自带的工具keytool 可以帮助我们生成所需的SSL 证书。
二、生成SSL 证书的步骤1.创建KeyStore首先,我们需要创建一个KeyStore 对象,用于存储生成的SSL 证书。
在Linux 环境下,我们可以使用keytool 命令来创建一个KeyStore 文件:```keytool -keystore myKeyStore.jks -storepass changeit -keyalg RSA -keysize 2048 -validity 365 -exportcert -alias myCert```其中,`myKeyStore.jks`是KeyStore 文件的名称,`changeit`是KeyStore 的密码,`RSA`是密钥算法,`2048`是密钥长度,`365`是证书的有效期,`myCert`是证书的别名。
2.创建证书请求接下来,我们需要创建一个证书请求,以便于生成自签名证书。
可以使用以下命令来创建证书请求:```keytool -req -new -keyalg RSA -keysize 2048 -validity 365 -exportcert -alias myCert```3.创建自签名证书利用证书请求,我们可以生成一个自签名证书。
使用以下命令来创建自签名证书:```keytool -selfsign -certreqs -alias myCert -keyalg RSA -keysize 2048 -validity 365 -exportcert -out myCert.crt```4.将证书安装到KeyStore生成自签名证书后,我们需要将其安装到KeyStore 中。
在本机上生成SSL数字证书
先保证计算机的JDK安装及环境变量配置正确:cmd转到JDK安装目录下<JAVA_HOME>\bin\keytool -genkeypair -alias "tomcat" -keyalg "RSA"以上命令将生产一对非对称密钥和自我签名的证书,这个命令中几个参数的意思如下:-genkeypair:生成一对非对称密钥。
-alias:指定密钥对的别名,该别名是公开的。
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法首先会提示输入keystore的密码,这里我输入的密码是sunchis。
然后提示输入个人信息,如姓名、组织单位和所在城市等,只要输入真实信息即可。
接着会提示输入信息是否正确,输入“y”表示信息正确。
最后要求输入<Tomcat>的主密码,这里设置与keystore相同的密码,因此只需根据提示按回车键即可。
以上命令将在操作系统的用户目录下生成名为“.keystore”的文件。
我当前登录到操作系统的用户名是Administrator,那么在Wnidows下,文件的位置为:C:\Documents and Settings\Administrator\.keystore查看已生成的证书的命令为:keytool -list -keystore "C:\Documents and Settings\Administrator\.keystore"在Tomcat的server.xml文件中,已经提供了现成的配置SSL连接器的代码,只要把<Connector>元素的注释去掉即可:<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="C:\Documents and Settings\ Administrator \.keystore"keystorePass="SUNCHIS"ciphers="sunchis"/>web.xml中可加入(可选)<security-constraint><web-resource-collection><web-resource-name>SSL</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint></security-constraint>。
数字证书中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数据证书的管理⼯具。
java keystore 创建证书
在Java中,你可以使用keytool命令行工具来创建和管理密钥库和证书。
下面是如何使用keytool创建一个自签名的证书的步骤:1.首先,打开命令提示符或终端。
2.使用以下命令创建一个新的密钥库(如果该文件已存在,keytool会抛出一个错误):bash复制代码keytool -genkey -alias mycert -keyalg RSA -keystore keystore.jks -keysize 2048在这个命令中:复制代码* `-genkey`表示生成密钥对。
* `-alias mycert`表示为这个证书设置一个别名"mycert"。
* `-keyalg RSA`表示使用RSA算法生成密钥对。
* `-keystore keystore.jks`表示将生成的密钥对存储在名为"keystore.jks"的文件中。
* `-keysize 2048`表示生成的密钥长度为2048位。
3. 在命令提示符或终端中,你将看到一些提示,要求你输入密钥库和密钥的密码,以及一些证书信息(如你的名字和组织)。
按照提示输入这些信息。
4. 完成后,你会看到一条消息,表示证书已经成功生成并存储在密钥库中。
5. 要查看密钥库中的证书,可以使用以下命令:bash复制代码keytool -list -alias mycert -keystore keystore.jks 这将列出与别名"mycert"关联的所有条目。
请注意,自签名证书只适用于测试和开发环境。
在生产环境中,你应该从受信任的证书颁发机构(CA)获取证书。
keytool生成证书
keytool生成证书1.创建一个证书C:\jdk1.5.0_04\bin>keytool -genkey -alias xahCA -keyalg RSA -keystore dyfCALib 输入keystore密码:admindyf您的名字与姓氏是什么?[Unknown]:徐吖禾您的组织单位名称是什么?[Unknown]:天河您的组织名称是什么?[Unknown]:天河有限公司您所在的城市或区域名称是什么?[Unknown]:南京您所在的州或省份名称是什么?[Unknown]:江苏该单位的两字母国家代码是什么[Unknown]:CNCN=徐吖禾, OU=天河, O=天河有限公司, L=南京, ST=江苏, C=CN 正确吗?[否]:y输入的主密码(如果和keystore 密码相同,按回车):xahadmin2.列出证书库中所有的证书(一共有两个:xahca和dyfca)C:\jdk1.5.0_04\bin>keytool -list -keystore dyfCALib输入keystore密码:admindyfKeystore 类型:jksKeystore 提供者:SUN您的keystore 包含 2 输入xahca, 2006-12-16, keyEntry,认证指纹(MD5):2C:36:A5:52:D0:4A:BA:72:60:19:2F:32:80:02:A9:C5dyfca, 2006-12-16, keyEntry,认证指纹(MD5):E7:8B:D8:93:1A:06:B1:B8:51:3D:13:CF:46:38:AC:773.列出证书库中别名为xahCA的证书C:\jdk1.5.0_04\bin>keytool -list -v -alias xahCA -keystore dyfCALib输入keystore密码:admindyf别名名称:xahCA创建日期:2006-12-16输入类型:KeyEntry认证链长度: 1认证[1]:Owner: CN=徐吖禾, OU=天河, O=天河有限公司, L=南京, ST=江苏, C=CN发照者:CN=徐吖禾, OU=天河, O=天河有限公司, L=南京, ST=江苏, C=CN序号:458400d7有效期间:Sat Dec 16 22:21:11 CST 2006 至:Fri Mar 16 22:21:11 CST 2007认证指纹:MD5:2C:36:A5:52:D0:4A:BA:72:60:19:2F:32:80:02:A9:C5SHA1:E6:A2:DD:EE:D2:8F:FB:D4:85:CE:46:4F:7E:25:7F:C4:C2:69:68:DF4.删除证书库中证书别名为xahCA的证书C:\jdk1.5.0_04\bin>keytool -delete -alias xahCA -keystore dyfCALib输入keystore密码:admindyf删除后里面再列出证书库中的证书只剩一个C:\jdk1.5.0_04\bin>keytool -list -keystore dyfCALib输入keystore密码:admindyfKeystore 类型:jksKeystore 提供者:SUN您的keystore 包含 1 输入dyfca, 2006-12-16, keyEntry,认证指纹(MD5):E7:8B:D8:93:1A:06:B1:B8:51:3D:13:CF:46:38:AC:775.修改证书密码C:\jdk1.5.0_04\bin>keytool -keypasswd -alias dyfCA -keystore dyfCALib输入keystore密码:admindyf输入的主密码dyfadmin新的主密码:dyfadmin必须是不同的密码新的主密码:dyf密码太短-至少必须为6个字符新的主密码:dyfpws重新输入新的主密码:dyfpws6.非交互式修改密码C:\jdk1.5.0_04\bin>keytool -keypasswd -alias dyfCA -keypass dyfpws -new dyfadmin -storepass admindyf -keystore dyfCALib7.列出证书的详细信息C:\jdk1.5.0_04\bin>keytool -list -v -alias dyfCA -keystore dyfCALib输入keystore密码:admindyf别名名称:dyfCA创建日期:2006-12-16输入类型:KeyEntry认证链长度: 1认证[1]:Owner: CN=董云飞, OU=天运, O=天运, L=南京, ST=江苏, C=CN发照者:CN=董云飞, OU=天运, O=天运, L=南京, ST=江苏, C=CN序号:4583fd13有效期间:Sat Dec 16 22:05:07 CST 2006 至:Tue Dec 13 22:05:07 CST 2016认证指纹:MD5:E7:8B:D8:93:1A:06:B1:B8:51:3D:13:CF:46:38:AC:77SHA1:8C:CB:76:50:DB:34:35:C5:95:49:DA:9E:18:22:B0:F9:AF:73:C8:F58.将证书导出到证书文件中(该证书文件以二进制编码,无法用文本编辑器查看,不利用公布证书)C:\jdk1.5.0_04\bin>keytool -export -alias xahCA -file dyfCA.cer -keystore dyfCALibkeytool -genkey -alias xahCA -keyalg RSA -keystore dyfCALibib输入keystore密码:admindyf保存在文件中的认证9.将证书导出到证书文件中(以一种可打印的编码输出)C:\jdk1.5.0_04\bin>keytool -export -alias dyfCA -file dyfCA.cer -keystore dyfCALib -rfc输入keystore密码:admindyf保存在文件中的认证10.查看证书文件C:\jdk1.5.0_04\bin>keytool -printcert -file dyfCA.cerOwner: CN=董云飞, OU=天运, O=天运, L=南京, ST=江苏, C=CN发照者:CN=董云飞, OU=天运, O=天运, L=南京, ST=江苏, C=CN序号:4583fd13有效期间:Sat Dec 16 22:05:07 CST 2006 至:Tue Dec 13 22:05:07 CST 2016认证指纹:MD5:E7:8B:D8:93:1A:06:B1:B8:51:3D:13:CF:46:38:AC:77SHA1:8C:CB:76:50:DB:34:35:C5:95:49:DA:9E:18:22:B0:F9:AF:73:C8:F511.自己签署证书C:\jdk1.5.0_04\bin>keytool -selfcert -alias dyfCA -keystore dyfCALib输入keystore密码:admindyf输入的主密码dyfadmin22222222222222222222222222222222详细请见:Tomcat的帮助文档,:https://localhost:8080/tomcat-docs/ssl-howto.html 。
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的文件。
java tomcat http升级https
Tomcat配置https及访问http自动跳转至https一、创建tomcat证书这里使用JDK自带的keytool工具来生成证书:1.在jdk的安装目录\bin\keytool.exe下打开keytool.exe2. 在命令行中输入以下命令:keytool -genkeypair -alias "tomcat" -keyalg"RSA"-keystore"D:\tomcat.keystore"以上命令将生产一对非对称密钥和自我签名的证书D:\tomcat.keystore注意:“名字与姓氏”应该是域名,输成了姓名,和真正运行的时候域名不符,会出问题这里的域名是以localhost为例二. 配置tomcat服务器定位到tomcat服务器的安装目录, 找到conf下的server.xml文件找到如下已经被注释的代码:去掉注释,修改为:在互联网上, http协议的默认端口是80, https的默认端口是443, 这里将端口改为了443三. 启动tomcat服务器在IE浏览器中输入: https://localhost/点击“高级”-“添加例外”证书过期日期为某日。
而当前日期为某日。
错误代码:SEC_ERROR_EXPIRED_CERTIFICATE这个错误发生在网站的证书已经过期的情况下。
这个错误信息会显示您的系统上的当前日期和证书生效日期。
如果您认为系统上的当前日期有误,您可以手动更正(双击任务栏上的时间图标)来修复这个问题。
该证书因为其颁发者证书未知而不被信任。
该服务器可能未发送相应的中间证书。
可能需要导入一个额外的根证书。
错误代码:SEC_ERROR_UNKNOWN_ISSUER该证书因为其自签名而不被信任。
错误代码:SEC_ERROR_UNKNOWN_ISSUER 使用了无效的安全证书。
该证书仅对下列域名有效:, * 错误代码:SSL_ERROR_BAD_CERT_DOMAIN选择继续浏览此网站搞定了!!!!443端口被占用遇到的问题:我在配置的过程中问题,当我修改了server.xml的配置后,启动tomcat报错org.apache.catalina.core.StandardService initInternal严重: Failed to initialize connector [Connector[HTTP/1.1-443]]org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-443]]网上找了下,可以将protocol="HTTP/1.1"替换为protocol="org.apache.coyote.http11.Http11Protocol",问题可以得以解决四. 安装tomcat的证书在浏览器中这里浏览器显示证书错误, 有红色警告在浏览器中右击选择属性, 查看不到证书在这里我为了能导出证书, 在tomcat的根目录下新建了一个hello.html的页面下面可以访问到将证书导出来注意:这个地方有部分电脑的"复制文件"的按钮是不能点的, 导不出来可以尝试装个虚拟机试一下下面就下一步就行我将证书导出到了桌面上,得到了一个cer的证书文件下面打开浏览器的Internet选项----> 内容----> 证书选择"受信任的根证书颁发机构" ----> 导入证书将生成的证书导入进来其余的步骤直接下一步即可重启浏览器,发现------没有红色警告了!!! 搞定!!!附:阿里云有免费的DV证书提供。
配置Tomcat使用https协议
配置Tomcat使用https协议一. 创建tomcat证书这里使用JDK自带的keytool工具来生成证书1. 在jdk的安装目录\bin\keytool.exe下打开keytool.exe2. 在命令行中输入以下命令:keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"二. 配置tomcat服务器定位到tomcat服务器的安装目录, 找到conf下的server.xml文件找到如下已经被注释的代码:去掉注释,修改为:<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"keystoreFile="F:\Keystore\tomcat.keystore"keystorePass="123456"/>访问支持ssl的web站点:启动本场tomcat,在浏览器中输入:https://localhost:8443/注:访问支持ssl的web站点:发现ssl不工作,出现如下信息:ERR_SSL_VERSION_OR_CIPHER_MISMATCH解决方案是修改servlet.xml的文件:<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="D:\Tools\Web\ssl\tomcat.keystore"keystorePass="tomcat"ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"/>或者不要使用ciphers该节点属性。
使用JDK自带的keytool工具生成证书
使⽤JDK⾃带的keytool⼯具⽣成证书⼀、keytool 简介 keytool 是java⽤于管理密钥和证书的⼯具,它使⽤户能够管理⾃⼰的公钥/私钥对及相关证书,⽤于(通过数字签名)⾃我认证(⽤户向别的⽤户/服务认证⾃⼰)或数据完整性以及认证服务。
在JDK 1.4以后的版本中都包含了这⼀⼯具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下图所⽰:其功能包括:创建并管理密钥创建并管理证书作为CA 为证书授权导⼊导出证书⼆、keytool的⽤法三、⽣成证书⽣成证书主要是使⽤" -genkey",该命令的可⽤参数如下:⽰例:⽣成⼀个名称为tomcat的证书(cas服务https环境证书⽣成⽰例)keytool -genkey -alias tomcat -keyalg RSA -keystore D:/cas.keystore功能说明:⽣成⼀个别名为tomcat的证书,该证书存放在名为cas.keystore的密钥库中,若cas.keystore密钥库不存在则创建。
参数说明:-genkey:⽣成⼀对⾮对称密钥;-alias:指定密钥对的别名,该别名是公开的;-keyalg:指定加密算法,本例中的采⽤通⽤的RAS加密算法;-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的⽤户⽬录下⽣成⼀个".keystore"的⽂件。
注意: 1.密钥库的密码⾄少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等 2."名字与姓⽒"应该是输⼊域名,⽽不是我们的个⼈姓名,其他的可以不填执⾏完上述命令后,在D盘下⽣成了⼀个"cas.keystore"的⽂件,如下图所⽰:四、导出证书导出证书主要是使⽤" -export",该命令的可⽤参数如下:⽰例:将名为cas.keystore的证书库中别名为tomcat的证书条⽬导出到证书⽂件cas.crt中keytool -export -trustcacerts -alias tomcat -file D:/cas.crt -keystore D:/cas.keystore执⾏完上述命令后,在D盘下⽣成了⼀个"cas.crt"的⽂件,如下图所⽰:五、导⼊证书导⼊证书主要是使⽤" -import",该命令的可⽤参数如下:⽰例1:将证书⽂件cas.crt导⼊到名为test_cacerts的证书库中keytool -import -file D:/cas.crt -keystore D:/test_cacerts⽰例2:将证书⽂件test.crt导⼊到名为cacerts的证书库中(这⾥将会演⽰将证书导⼊到jdk的证书库中)keytool -import -trustcacerts -alias tomcat -file D:/cas.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts注:次例中jdk证书库的默认密码为:changeit六、查看密钥库⾥⾯的证书keytool -list -keystore D:/cas.keystore七、查看证书信息keytool -printcert -file D:/cas.crt⼋、删除密钥库中的条⽬⽰例:删除密钥库cas.keystore中别名为tomcat的证书条⽬keytool -delete -keystore D:/cas.keystore -alias tomcat九、修改证书条⽬的⼝令⽰例:将密钥库cas.keystore中别名为test的证书条⽬的密码修改为666666(别名为test的证书条⽬必须存在)keytool -keypasswd -alias test -keystore D:/cas.keystore。
如何使用Keytool工具生成证书Keystore和证书签名请求文件-
如何使用Keytool工具生成证书Keystore和证书签名请求文件?您的组织单位名称是什么?请输入单位名称,如: Beijing eTsec Technology Co.,Ltd.您的组织名称是什么?请输入部门名称,如: IT Dept您所在的城市或区域名称是什么?输入城市名称,如:Beijing您所在的州或省份名称是什么?输入省份名称,如:Beijing该单位的两字母国家代码是什么?中国请输入CNCN=.cn, OU= Beijing eTsec, O=IT, L= Beijing, ST= Beijing, C=CN 正确吗?输入 Y输入的主密码(如果和 keystore 密码相同,按回车):按回车确保记住您所输入的密码,注意生成CSR时,在第2部分中会使用它。
二、生成证书签名请求(CSR)1. keytool -certreq -keyalg RSA -alias -file certreq.csr -keystore重要:! 创建您的CSR和安装您的证书,您使用它来创建自签名的密钥存储库时,请使用相同的别名。
例如:C:\>keytool -certreq -keyalg RSA -alias myalias -file certreq.txt -keystore c:\.mykeystore输入keystore密码:2. 打开生成CSR文件certreq.txt 。
这个CSR文件显示如下:-----BEGIN NEW CERTIFICATE REQUEST----- MIIBujCCASMCAQAwejELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVB AcTBk90dGF3YTEQMA4GA1UEChMHRW50cnVzdDETMBEGA1UECxMKRW50cnVzdCBDUzEhMB8GA1UEA xMYd3d35w6T+q/f+wIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAF+0hqAqXumz/vGrzGVhKHlnxd 7HW3ezSGIbIUcOy1YdDc/1ZCqRpu3utYIZ6welK++l+QjlbL6p5RJJETkkLKXjb/WVFajNuPl7Yo b9pbwA7JBrCCKbFj+kzDNbGhCR1RgFA9vQj5vob41Vj+k+TQchliuTLL9rFXNDHrtgTMtA=-----END NEW CERTIFICATE REQUEST-----文章来源:/service/guide/guide-ssl-141.html文章来源于:/article-26459-1.html。
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的用法Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。
证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
1.证书的显示-list[-v | -rfc] [-alias <alias>] [-keystore <keystore>] [-storepass <storepass>] [-storetype<storetype>] [-provider <provider_class_name>]例如:keytool -list -v -alias RapaServer -keystore cacerts -storepass 12345678keytool -list -v -keystore d2aapplet.keystore -storepass 12345678 -storetype IAIKKeystore 2.将证书导出到证书文件例如:keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer将把证书库 monitor.keystore 中的别名为 monitor 的证书导出到 monitor.cer 证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。
keytool -export -keystore d2aApplet.keystore -alias RapaServer -file Rapa.cert -storetype IAIKKeystore3.将keystore导入证书中这里向Java默认的证书 cacerts导入Rapa.certkeytool -import -alias RapaServer -keystore cacerts -file Rapa.cert -keystore cacerts4.证书条目的删除 keytool的命令行参数 -delete 可以删除密钥库中的条目,如: keytool-delete -alias RapaServer -keystore d2aApplet.keystore ,这条命令将 d2aApplet.keystore 中的 RapaServer 这一条证书删除了。
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和OpenSSL生成和签发数字证书
4.2.1 建立工作目录demoCA4.2.2 生成CA私钥以及自签名根证书4.2.2.1 生成CA私钥openssl genrsa -out demoCA\ca-key.pem 10244.2.2.2 生成待签名证书openssl req -new -out demoCA\ca-req.csr -key demoCA\ca-key.pem4.2.2.3 用CA私钥进行自签名openssl x509 -req -in demoCA\ca-req.csr -out ca\ca-cert.pem -signkey demoCA\ca-key.pem -days 3654.3 设置Tomcat 4.x在本文中用符号"%JDK_HOME%"来表示JDK的安装位置,用符号"%TCAT_HOME%" 表示Tomcat的安装位置。
4.3.1建立工作目录mkdir server4.3.2 生成server端证书4.3.2.1 生成KeyPair%JDK_HOME%\bin\keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore server\server_keystore4.3.2.2 生成待签名证书%JDK_HOME%\bin\keytool -certreq -alias tomcat_server -sigalgMD5withRSA -file server\server.csr -keypass 123456 -keystoreserver\server_keystore -storepass changeit4.3.2.3 用CA私钥进行签名openssl x509 -req -in server\server.csr -out server\server-cert.pem -CA demoCA\ca-cert.pem -CAkey demoCA\ca-key.pem -CAserialdemoCA/ca-cert.srl -CAcreateserial -days 3654.3.2.4 导入信任的CA根证书到JSSE的默认位置(%JDK_ROOT %/jre/security/cacerts)%JDK_HOME%\bin\ keytool -import -v -trustcacerts -storepass 123456-alias my_ca_root -file demoCA\ca-cert.pem-keystore %JDK_HOME%\jre\lib\security\cacerts4.3.2.5 把CA签名后的server端证书导入keystore%JDK_HOME%\bin\keytool -import -v -trustcacerts -storepass changeit-alias tomcat_server -file server\server-cert.pem -keystoreserver\server_keystore%JDK_HOME%\bin\keytool -import -v -alias tomcat_server -fileserver\server-cert.pem -storepass 123456 -keystore server_keystore4.3.2.6 查看server端证书keytool -list -keystore %JDK_HOME%\jre\lib\security\cacertskeytool -list -keystore server\server_keystore4.3.3 修改server.xml使Tomcat支持SSL首先找到以下内容,去掉对其的注释。
使用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⽂件编码。
JDK自带工具keytool生成ssl证书
J D K自带工具k e y t o o l生成s s l证书(总12页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--JDK自带工具keytool生成ssl证书前言:因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全。
百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具:keytool,外加看了同事的心得体会,自己总结了一下具体的使用方法和使用过程中发现的问题及解决办法。
1:什么是HTTPSHTTPS其实是有两部分组成: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/(指定生成证书的位置和证书名称)-storepass 123456(获取keystore信息的密码)方便复制版:keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/ -storepass 123456图例:回车执行后如下图:点击回车即可在D:/keys/文件夹内生成名为:的文件。
Tomcat8.5生成https协议
Tomcat8.5生成https协议注:tomcat 不同版本配置 SSH 的方法稍微不同一、生成数字证书1、找到 jdk 自带的生成数字证书的“keytool.exe” 文件在jdk 的bin 目录下找到“keytool.exe”,我的文件路径是“D:\java1.8\jdk\bin”2、打开cmd,进入“D:\java1.8\jdk\bin” 目录,执行下面命令keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore ".keystore"// 输入密钥输入密钥库口令:123456// 输入域名您的名字与姓氏是什么:localhost// 输入组织单位名称,例如 tomcat您的组织单位名称是什么:tomcat// 输入组织名称,例如 apache您的组织名称是什么:apache// 输入所在城市名您所在的城市或区域名称是什么:zhengzhou// 输入省名称您所在的省 / 市 / 自治区名称是什么:henan// 输入国家的代码该单位的双字母国家 / 地区代码是什么:cn// 确认信息,输入 yCN=localhost, OU=tomcat, O=apache, L=zhengzhou, ST=henan, C=cn 是否正确?最后重新输入密码:1234563、在“D:\java1.8\jdk\bin” 目录下会生成文件“.keystore”,这个文件即是数字签名文件。
二、配置 tomcat 服务器官网 SSH 配置地址:/tomcat-8.5-doc/ssl-howto.html1、把“.keystore” 文件放在 tomcat 的 bin 目录下2、修改 tomcat 的 conf 目录下的“server.xml” 文件去掉注释修改如下:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"><SSLHostConfig><CertificatecertificateKeystoreFile="D:\java1.8\jdk\bin\.keystore" certificateKeystoreType="JKS" certificateKeystorePassword="12 3456" /></SSLHostConfig></Connector>3、在浏览器中输入以下地址,验证是否成功,如果成功会出现tomcat 管理页面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6、导出生成安全证书文件的命令和创建过程
(1)在操作系统的命令行窗口中输入如下的命令 keytool -export -alias yangSB -file F:/server.cer -keystore f:/server.keystore -validity 365
上面的命令的主要功能将实现把位于目录文件中的数字证 书库f:/server.keystore中的别名为“yangSB”的证书导出到 F:/server.cer的数字证书文件中。在F:/server.cer的数字证 书文件中将包含有证书主体的信息及证书的公钥等方面的信息, 但不包括私钥信息。因此,该server.cer数字证书文件可以公 开。 (2)输入密码 然后再输入前面的f:/server.keystore数字证书库文件中 存储的keystore密码(本示例为123456),系统将会在F盘的 根目录中创建出一个文件名称为server.cer的数字证书文件。 其中的“-file F:/server.cer”命令参数即为要求生成.cer 格式文件,如下示图所示:
(3)双击所创建的server.cer的数字证书文件,将能够正常地 看到数字证书中相关的信息。
3、熟悉和了解数字证书文件
(1)数字证书库中的一条证书可以导出为数字证书文件,而数字 证书文件只包括主体信息和对应的公钥——公共密钥用于加密 信息,私用密钥用于解译加密的信息。 (2)每一个数字证书 库是由一个文件所组 成,并保存有访问的 密码。在首次创建时, 它会自动生成数字证 书库,并要求指定访 问该数字证书库的密 码。
2、数字证书的主要用途
(1)发送安全电子邮件、访问安全站点、网上证券交易、网上招 标采购、网上办公、网上保险、网上税务、网上签约和网上银 行等安全电子事务处理和安全电子交易等活动中。 (2)比如,将服务器端的SSL证书安装于服务器设备上,可以用 来证明服务器的身份和进行通信加密。 因为,应用服务器端的数字证书可以有效地防止欺诈的“钓 鱼”站点。
(5)ST(State州或省份名称) (6)C(Country国家名称) 上面的各个信息,可以采用交互式的工具在提示过程中,输 入以上的相关信息。当然,也可以采用如下的命令参数的方式预 先给定:-dname "CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx"。 如下为设置过 程中的示例图:
5、J2SDK中的keytool.exe命令工具及主要的功能
因为SSL 使用数字证书进行身份合法性的验证,并且JSSE 使用的证书要用Java系统中的keytool命令程序创建。 (1)JDK中的keytool.exe命令工具 在JDK1.4及以上版C:\j2sdk1.4.2_01\bin目录中有一个 keytool.exe命令工具,如下为JDK1.7版本中的keytool.exe命 令工具所在的目录示图。
(2)keytool.exe命令工具的主要功能 1)keytool 是个密钥和证书管理工具; 2) 它使用户能够管理自己的公钥/私钥对及相关证书,用于 (通过数字签名)自我认证(用户向别的用户/服务认证自己) 或数据完整性以及认证服务; 3) 它还允许用户储存他们的通信对等者的公钥(以证书形 式)。
4、在创建数字证书时,需要填写相关的信息
需要填写证书的一些信息和证书对应的私钥密码,这些信息 主要包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx。它们 的含义如下所示: (1)CN(Common Name名字与姓氏) 对于个人可以填写自己的真实姓名,而对于企业,则可以填 写企业的名称或者更准确的应该是企业的域名。 因为,对于企业如果不填写为域名,用户在真正访问企业的 Web应用系统时,将可能会出现由于实际运行的域名和在数字证 书中通过“CN”项所记录的域名不相符。浏览器在这样的访问状 况下,将会弹出对话框并提示“安全证书上的名称无效,或者与 站点名称不匹配”。 (2)OU(Organization Unit组织单位名称) (3)O(Organization组织名称) (4)L(Locality城市或区域名称)
如何应用JDK中的keytool.exe命令工具 创建数字证书
1、什么是数字证书
(1)所有的数字证书都是以逐条信息的形式存入证书库中,每 条信息都采用“数字证书别名”加以区别; (2)证书库中的一条数字证书信息主要包含有该条数字证书的 私钥、公钥和对应的数字证书的相关内容信息——数字证书绑 定了公钥及其持有者的真实身份,它类似于现实生活中的居民 身份证。如下示图是一个数字证书内的信息的局部截图。