J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中的密钥。
最简单的命令是生成一个自签名的证书,并把它放到指定的keystore文件中:
keytool -genkey -alias tomcat -keyalg RSA -keystore c:/mykey
如果c:/mykey文件不存在,keytool会生成这个文件。按照命令的提示,回答一系列问题,就生成了数字证书。注意,公共名称(cn)应该是服务器的域名。这样keystore中就存在一个别名为tomcat的实体,它包括公钥、私钥和证书。这个证书是自签名的。<o:p></o:p>
Keytool工具可以从keystore中导出证书,但是不能导出私钥。对于配置apache这样的服务器,就不太方便。这种情况下就完全用OpenSSL吧,上一篇文章《SSL-用OpenSSL生成证书文件》中已经做了介绍。不过keytool对于J2EE AppServer是很有用的,它们就是用keystore存储证书链的。keystore的作用类似于windows存放证书的方式,不过跨平台了,^_^下面用Keytool生成CSR(Certificate Signing Request),并用OpenSSL生成CA签名的证书。1. 准备1) 在bin目录下新建目录 demoCA、demoCA/certs、demoCA/certs 、 demoCA/newcerts2) 在demoCA建立一个空文件 index.txt3) 在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 00004) 配置环境变量PATH,加入%JAVA_HOME%/bin,本文用的JavaSDK1.62. 生成CA的自签名证书openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf3. 生成server端证书1) 生成KeyPair生成密钥对 keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore server_keystore 输入common name时,要和服务器的域名保持一致。2) 生成证书签名请求keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore 3) 用CA私钥进行签名,也可以到权威机构申请CA签名。 openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf 其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。4) 导入信任的CA根证书到keystore keytool -import -v -trustcacerts -alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore5) 把CA签名后的server端证书导入keystorekeytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore6) 查看server端证书 keytool -list -v -keystore server_keystore 可以看到tomcat_server的证书链长度是2 4. 生成client端证书1) 生成客户端CSR openssl genrsa -des3 -out tomcat_client.key 1024openssl req -new -key tomcat_client.key -out tomcat_client.csr -config openssl.cnf2) 用CA私钥进行签名,也可以到权威机构申请CA签名openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -config openssl.cnf3) 生成PKCS12格式证书openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out tomcat_client.p124) 使用Keytool列出pkcs12证书的内容: keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12
分享到:
相关推荐
通过OpenSSL生成的ssl证书,用于windows下用nginx配置https服务器( OpenSSL创建证书) 无需再下载OpenSSL,配置OpenSSL相关环境,在进行命令生成证书
用keytool生成证书,双向SSL认证配置的方法,以Tomcat举例。包含步骤:一、为服务器生成证书;二、为客户端生成证书;三、让服务器信任客户端证书;四、让客户端信任服务器证书。
用Keytool和OpenSSL生成和签发数字证书
Keytool与数字证书
使用Java实现根据ca购买到的根证书 批量生产客户端需要的.bks和.cer文件,从而实现双向认证
openssl和keytool都是生成https证书的工具,可以在windows上安装使用,附带一些操作说明,希望可以帮助大家
自己学习openSSL的一些总结,很初步,希望能够帮助到跟我一样刚刚开始接触openSSL的朋友,很浅显,我也是初学者,希望大家不要见笑。
keytool生成的证书及私钥,密码都为12345678
生成证书 通过keytool 和openssl,帮助在https环境下测试证书,但是此证书浏览器不认的
用keytool生成数字证书,利用itext生成签名pdf,完整工程代码。
利用keytool生成数字证书。.bat文件。配置好java环境变量后,直接运行即可。非常简单。
最简单的方法,直接用java里的keytool工具生成一个keystore文件,然后直接用这个文件启用https就可以了。 方法如下: 命令行执行%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA 执行过程中会询问你一些...
java_ks目录概述java_ks模块使用keytool和openssl的组合来管理Java密钥库中的条目。模块说明java_ks模块包含一个名为java_ks的类型和一个名为keytool提供程序。 它们的目的是允许将任意的,已经生成的和已签名的证书...
NULL 博文链接:https://314649444.iteye.com/blog/2076202
NULL 博文链接:https://923080512.iteye.com/blog/1683057
keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥...
实现java代码生成cer证书文件,然后可以通过代码获取 不通过keytool工具。生成密钥对。使用公钥加密。
密钥管理工具 Keytool-IUI
使用openssl与jdk的keytool生成根证书,server端证书,浏览器端证书,并配置使工程跑在https上。(带dos脚本)
openssl+keytool+tomcat自签名证书