smack on android SSL设置记录之学习用keytool生成证书

来源:互联网 发布:php-ml 中文分词算法 编辑:程序博客网 时间:2024/06/01 08:12

这是一篇学习过程文档,建议往下翻直到【成功】分割线;

1,根据openfire的doc的ssl-guide来一步一步设置;
cmd
cd C:\Program Files (x86)\Openfire\resources\security
看到3个文件,那是默认的key文件;
 First, you should change the default keystore password:第一步修改默认密钥库密码
keytool -storepasswd -keystore keystore
显示 输入 密钥库密码:
keytool will ask for the old password (by default it is changeit) then the new password. Now we'll create a certificate using the keytool:
输入默认密码 changeit
cmd显示让你输入新密码,输入新密码:123456 再输一遍 123456 ;
显示在找不到 .keystore 文件 。。。就知道没这么简单。【文件都没生成就该密码当然不成!】
keytool -list
keytool -genkeypair 在C:\Users\Dell 我生成了 .keystore 文件;
keytool -list 可以显示出来了;
keytool -genkey -keystore keystore -alias example.com 这下可以了,注意吧example.com改成你自己的;
Keytool will create certificates using the DSA algorithm by default. Some clients expect the server to have RSA certificates or they will fail to use TLS/SSL. Therefore, it is a good idea to also create RSA certificates in your keystore. To create certificates with the RSA algorithm you need to specify the algorithm to use like this:
keytool -genkey -keystore keystore -alias example.com -keyalg RSA
错误。。。
删除刚刚的 .keystore 文件 cmd关了 回收站清空,重新来;
keytool -genkey -keystore keystore -alias example.com 生成了一个 keystore 文件,前面没.了;
keytool -list 显示不出来。
直接 keytool -genseckey 出错 显示无法存储非私钥;
keytool -genkey -keystore keystore -alias example.com -keyalg RSA 这句 删除 -keystore keystore
就是:
keytool -genkey   -alias example.com -keyalg RSA 果然生成了 .keystore 文件;
说明 
.keystore 文件是密钥库文件
而 -keystore 应该就是制定密钥库文件的文件名
验证:
keytool -genkey -keystore mkeystore -alias example.com 
assert我生成的文件名是 mkeystore;
果然生成了一个文件 名称是 mkeystore; 回到上面的出错应该是文件名重名了;重新来指定不同的文件名,删除所有重来;
1,生成密钥库:
keytool -genkey -keystore homekeystore -alias home 生成了密钥库文件,组织单位com输成了con;
2,默认DSA 下面生成RSA的;
keytool -genkey -keystore homekeystorersa -alias home -keyalg RSA 成功,生成了homekeystorersa文件;
3. Obtain a CA signed certificate  获取CA签名,据说这个不是个人玩的,跳过;
If you decide to get a CA signed certificate, you must first export the certificate in the standard CSR format. You can do this with the keytool:
必须先导出证书,以标准CSR格式
keytool -certreq -keystore keystore -alias example.com -file
certificate_file
上面命令意思应该是从名字叫certificate_fire的文件来生成 名字叫 keystore   的证书请求文件
Where you should substitute your server's name for example.com and the name of the certificate file you wish to produce for certificate_file. Submit the generated CSR to the CA and follow their instructions to get it signed.
下面测试下:
keytool -certreq -keystore homekeystorereq -alias home -file homekeystore
错误:homekeystorereq 密钥库文件不存在
keytool -certreq -keystore thomekeystore -alias home -file homekeystorereq
错误:密钥库不存在,thomekeystore 
keytool -certreq -keystore homekeystore -alias home -file homekeystorereq
成功了,生成了名字叫 homekeystorereq 的文件,这个是证书验证的请求文件,英语水平制约中国软件从业人员啊;
(2)一次性生成:
     keytool -genkey -alias home -keypass 12344321 -keyalg RSA -keysize 1024 -validity 365 -keystore  homersa.keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
keytool -genkey -alias home -keypass 12344321  -keysize 1024 -validity 365 -keystore  homedsa.keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
keytool -import -keystore keystore -alias home -filehomersa.keystore
keytool -delete -keystorehomersa.keystore -alias rsa
keytool -genkey -alias home -keypass 12344321 -keyalg RSA  -keysize 1024 -validity 365 -keystore  keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
keytool -genkey -alias home -keypass 12344321  -keysize 1024 -validity 365 -keystore keystore1 -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
keytool -import -keystore truststore -alias home -file homersa.keystore
重新开始:
生成客户端服务端keystore:
keytool -genkey -alias homeserver -keypass 12344321  -keysize 1024 -validity 365 -keystore homeserver -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
使用RSA:
keytool -genkey -alias homeserverrsa -keypass 12344321  -keyalg RSA -keysize 1024 -validity 365 -keystore homeserver -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
客户端:
keytool -genkey -alias homeclient -keypass 12344321  -keysize 1024 -validity 365 -keystore homeclient -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
使用RSA:
keytool -genkey -alias homeclientrsa -keypass 12344321  -keysize 1024 -validity 365 -keystore homeclient -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"
导出服务端,客户端证书:

keytool -export -alias homeserver -keystore homeserver -file homeserver.crt
keytool -export -alias homeserverrsa -keystore homeserver -file homeserver.crt

keytool -export -alias homeclient -keystore homeclient -file homeclient.crt

keytool -export -alias homeclientrsa -keystore homeclient -file homeclient.crt
将服务端证书,导入到客户端的Trust KeyStore中
keytool -import -alias homeserver -file homeserver.crt -keystore homeclienttruststore
keytool -import -alias homeserverrsa -file homeserver.crt -keystore homeclienttruststore

将客户端证书导入服务端truststore
keytool -import -alias homeclient -file homeclient.crt -keystore homeservertruststore
keytool -import -alias homeclientrsa -file homeclient.crt -keystore homeservertruststore

至此生成了共计6个文件,把服务端的2个文件改名后放到openfire目录那边,按文档指示设置:

7. Configure Openfire

Open the Openfire Admin Console in your favorite browser and add or change the following system properties:

  • xmpp.socket.ssl.active -- set to 'true' to active SSL
  • xmpp.socket.ssl.port -- the port to use for SSL (default is 5223 for XMPP)
  • xmpp.socket.ssl.storeType -- the store type used ("JKS" is the Sun Java Keystore format used by the JDK keytool). If this property is not defined, Openfire will assume a value of "jks".
  • xmpp.socket.ssl.keystore -- the location of the keystore file relative to your Openfire installation root directory. You can leave this property blank to use the default keystore.
  • xmpp.socket.ssl.keypass -- the keystore/key password you changed in step 2.
  • xmpp.socket.ssl.truststore -- leave blank to not use a truststore, otherwise the location of the truststore file relative to your Openfire installation root directory.
  • xmpp.socket.ssl.trustpass -- the truststore/key password you changed in step 6.
You will need to restart the server after you have modified any of the above system properties.

失败,现在把我的openfire安装至D盘,刚在C权限受限,win8系统;

重来,至网页删除服务器证书; 然后把D:\Program Files (x86)\Openfire\resources\security的3个文件复制到C:\Users\Dell

keytool -list  -v -keystore keystore -storepass changeit

显示密钥库类型JKS,提供方SUN,条目数量0; 好,现在继续

keytool -storepasswd -keystore keystore -storepass changeit -new 12344321      修改openfire keystore的密码;

keytool -storepasswd -keystore truststore -storepass changeit -new 12344321      修改openfire truststore的密码;

keytool -storepasswd -keystore client.truststore -storepass changeit -new 12344321      修改客户端truststore的密码;

1,生成服务端DSA RSAkeystore

keytool -genkey -alias server_dsa -keypass 12344321  -keysize 1024 -validity 365 -keystore keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"   生成别名是server_dsa的keystore至文件keystore;

keytool -genkey -alias server_rsa -keypass 12344321  -keyalg RSA -keysize 1024 -validity 365 -keystore keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"   生成别名是server_rsa的keystore至文件keystore,算法为RSA;,

2,生成客户端keystore:

keytool -genkey -alias client_dsa -keypass 12344321  -keysize 1024 -validity 365 -keystore client.keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"   生成别名是client_dsa 的keystore至文件client.keystore;

keytool -genkey -alias client_rsa -keypass 12344321  -keyalg RSA -keysize 1024 -validity 365 -keystore client.keystore -storepass 12344321 -dname "CN=(home), OU=(home), O=(home), L=(home), ST=(home), C=(cn)"   生成别名是client_rsa 的keystore至文件client.keystore,算法为RSA;

3,导出服务端证书;

keytool -export -aliasserver_dsa -keystore keystore -storepass 12344321 -file server.crt

keytool -export -alias server_rsa -keystore keystore -storepass 12344321 -file server.crt

现在我们生成了服务端证书文件 server.crt

4,导出客户端证书

尝试不输别名 keytool -export   -keystore client.keystore -storepass 12344321 -file client.crt 错误,显示mykey不存在,他找默认别名去了;

keytool -export -alias client_dsa -keystore client.keystore -storepass 12344321 -file client.crt

keytool -export -alias client_rsa -keystore client.keystore -storepass 12344321 -file client.crt

现在生成了客户端证书文件 client.crt

5,把证书导入truststore:

尝试不输别名 keytool -import  -file server.crt -keystore client.truststore -storepass 12344321

可以,但好像只导入了一个rsa的证书,我们list看看

keytool -list  -v -keystore client.truststore -storepass 12344321 确实只有一个条目,那看看crt里面几个条目;

keytool -printcert -file server.crt  确实,看下只有一个,打印证书

keytool -printcert -file client.crt 这个也只有一个也是RSA的,看了一个证书文件只能存一个证书;密钥库是个库,证书是个单件,这能理解。

重新导出DSA的证书:

keytool -export -alias server_dsa -keystore keystore -storepass 12344321 -file server_dsa.crt

keytool -export -alias client_dsa -keystore client.keystore -storepass 12344321 -file client_dsa.crt

导入证书不需要输别名;

keytool -import  -file server_dsa.crt -keystore client.truststore -storepass 12344321

错误,别名mykey已存在,难改上面我打印证书的时候没看见别名,看来导入证书要指定别名,这个别名应该可以随便指定,说明上面没输别名的那个导入自动被指定别名为mykey了;

keytool -import  -alias server_dsa -file server_dsa.crt -keystore client.truststore -storepass 12344321   成功

继续,导入客户端证书至truststore:

keytool -import  -alias client_dsa -file client_dsa.crt -keystore truststore -storepass 12344321

keytool -import  -alias client_rsa -file client_rsa.crt -keystore truststore -storepass 12344321

成功,现在查看4个keystore:

keytool -list  -v -keystore client.truststore -storepass 12344321

keytool -list  -v -keystore client.keystore -storepass 12344321

keytool -list  -v -keystore truststore -storepass 12344321  这个里面有很多个条目,应该包含openfire的其他证书

keytool -list  -v -keystore keystore -storepass 12344321

现在把服务端文件放入D:\Program Files (x86)\Openfire\resources\security试试;

启动,到网页登陆后报错; 可能是keystore密码改了的原因 原来是changeit; 至数据库改密码

在ofproperty表加入

xmpp.socket.ssl.keypass 12344321

xmpp.socket.ssl.trustpass 12344321

重启,成功!

在服务器证书列表看到 Found RSA certificate that is not valid for the server domain.    显示证书不可用,证书状态:未解决的证明;

应该是证书未签名之类的,需要CA签名;

百度文库,发现

创建keystore后,在创建自签名证书,再导出;

keytool -selfcert -alias dty -keystore dty.jks -storepass 123456

-selfcert 自签名证书;

好吧,接近成功了,直接下载 Keytool Advanced GUI【不好用,太简洁了】,有桥就不摸着石头过河了,太累了

portecle-1.8,好点,都没找到自签名的。还是自己来吧

重新开始:

1,删除4个证书文件

2,server_dsa 

keytool -selfcert -alias server_dsa -keystore keystore -storepass 12344321 自签名

keytool -export -alias server_dsa -keystore keystore -storepass 12344321 -file server_dsa.crt  导出证书

keytool -delete -aliasserver_dsa  -keystore  client.truststore -storepass 12344321 删除原来truststore未签名的证书

keytool -import  -alias server_dsa -file server_dsa.crt -keystore client.truststore -storepass 12344321 导入证书至客户端truststore

3,server_rsa

keytool -selfcert -aliasserver_rsa -keystore keystore -storepass 12344321

keytool -export -alias server_rsa -keystore keystore -storepass 12344321 -file server_rsa.crt 

keytool -delete -alias server_rsa -keystore  client.truststore -storepass 12344321

keytool -import  -alias server_rsa -file server_rsa.crt -keystore client.truststore -storepass 12344321 

4,client_dsa

keytool -selfcert -alias client_dsa -keystore client.keystore -storepass 12344321

keytool -export -alias client_dsa -keystore client.keystore -storepass 12344321 -file client_dsa.crt 

keytool -delete -alias client_dsa -keystore  truststore -storepass 12344321

keytool -import  -alias client_dsa -file client_dsa.crt -keystore truststore -storepass 12344321 


5,client_rsa

keytool -selfcert -alias client_rsa -keystore client.keystore -storepass 12344321

keytool -export -alias client_rsa -keystore client.keystore -storepass 12344321 -file client_rsa.crt 

keytool -delete -alias client_rsa -keystore  truststore -storepass 12344321

keytool -import  -alias client_rsa -file client_rsa.crt -keystore truststore -storepass 12344321 

失败,还是一样

算了。使用openfire自己生成的那3个文件算了;

keytool -list  -v -keystore keystore -storepass 12344321

keytool -list  -v -keystore truststore -storepass 12344321

keytool -export -alias home_rsa -keystore keystore -storepass 12344321 -file home_rsa.cer

keytool -export -alias home_dsa -keystore keystore -storepass 12344321 -file home_dsa.cer

keytool -import  -alias home_rsa -file home_rsa.cer -keystore client.truststore -storepass 12344321

keytool -import  -alias home_dsa -file home_dsa.cer -keystore client.truststore -storepass 12344321

keytool -genkey -alias home_d -keypass 12344321  -keysize 1024 -validity 365 -keystore keystore -storepass 12344321 -dname "CN=(home), OU=(), O=(), L=(), ST=(), C=()"

keytool -selfcert -alias home_d -keystore keystore -storepass 12344321

keytool -genkey -alias home_ds -keypass 12344321  -keysize 1024 -validity 365 -keystore keystore -storepass 12344321 -dname "CN=home, OU=, O=, L=, ST=, C="

keytool -genkey -alias home_d1 -keypass 12344321  -keysize 1024 -validity 365 -keystore keystore -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="

keytool -selfcert -alias home_d1 -keystore keystore -storepass 12344321

keytool -genkey -alias home_d2 -keypass 12344321  -selfcert -keysize 1024 -validity 365 -keystore keystore -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="

=================================================【成功】================================================

-selfcert在java7已经被废弃 操,老子用的时候什么提示都没。

keytool -genkeypair -alias root -keypass 12344321   -keysize 1024 -validity 365 -keystore root.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="   生成root.jks密钥文件

keytool -genkeypair -alias server -keypass 12344321   -keysize 1024 -validity 365 -keystore server.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  生成server.jks密钥文件

keytool -certreq -file server.csr -alias server -keystore server.jks 生成证书请求文件server.csr

keytool -gencert -infile server.csr -outfile server.cer -alias root -keystore root.jks 使用root.jks里别名为root的私钥签发证书,保存至文件server.cer;

命令:keytool -exportcert -alias root -file root.cer -keystore root.jks

解释:从 root.jks 文件中导出别名为 root的证书并存放在 root.cer 文件中。

命令:keytool -importcert -alias root -file root.cer -keystore server.jks

解释:将证书 root.cer 以别名 root导入 server.jks 中。

注意:这里的目标 jks 文件里不含有指定的别名,此时的导入条目才会以 trustedCertEntry 信任证书的形式保存。

导入签发证书到 jks 文件 ( 更新证书 )

命令:keytool -importcert -alias server -file server.cer -keystore server.jks  【cmd显示证书回复已安装至密钥库中】

解释:将证书 server.cer 更新到已存在别名 server的 server.jks 文件中

注意:这里的命令和上述导入信任证书的命令在形式上完全一样,但作用不同。

【这里自签发证书的流程好像,获得被签发的证书请求,根据他的请求用我的私钥签发证书,然后把我的证书导入至被签发的密钥中,再把我刚签发的证书导入被签的密钥库中;】


1. 这里的目标 jks 文件里要含有指定的别名,这样 keytool 工具才会理解命令为更新证书,并以 PrivateKeyEntry 的形式保存。

2. 在更新被签发证书之前,一定要先将相应的 CA 证书,导入进 jks 文件,否则会报错“keytool 错误 : java.lang.Exception: 无法从回复中建立链”。

打印证书内容

命令:keytool – printcert – v – file test_server.cer

解释:将证书 test_server.cer 的内容打印出来

注意:也可以使用 -sslserver ip:port 的参数,直接从网络上打印出某个 ssl server 提供的证书的内容,详情见 参考资料中列出的 keytool 使用帮助。

显示 jks 文件里的内容

命令:keytool – list – v – keystore test_server.jks

解释:显示 test_server.jks 里存储的所有条目

注意:这里会要求提供 jks 文件的密码,如果不输入,也可以显示出所有条目信息,但会提示“存储在密钥库中的信息的完整性尚未得到验证!”

从 jks 文件删除条目


命令:keytool -delete -alias root -keystore server.jks

解释:从 server.jks 中删除别名为 root的条目


复制文件server.jks至openfire 文件夹名字改成keystore,重启;成功;

至此我们生成了自签名的密钥库文件server.jks,详细用同样的方法生成client.jks在生成truststore,也不会有问题了;


走了很多弯路只因为没找到对的文档,这个IBM的文档可以;

http://www.ibm.com/developerworks/cn/java/j-lo-socketkeytool/index.html#_toc57 此文档我已转载至本博客,文档还有更多营养;

下面继续,生成一个RSA算法的;

keytool -genkeypair -alias serverrsa -keypass 12344321   -keyalg RSA -keysize 1024 -validity 365 -keystore server.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  生成server.jks密钥文件,上面已经生成了 加入rsa算法的密钥;

keytool -certreq -file serverrsa.csr -alias serverrsa -keystore server.jks 生成证书请求文件serverrsa.csr

keytool -gencert -infile serverrsa.csr -outfile serverrsa.cer -alias root -keystore root.jks 使用root.jks里别名为root的私钥签发证书,保存至文件serverrsa.cer;

命令:keytool -exportcert -alias root -file root.cer -keystore root.jks 这一步上面做了,可以不做;

解释:从 root.jks 文件中导出别名为 root的证书并存放在 root.cer 文件中。

命令:keytool -importcert -alias root -file root.cer -keystore server.jks 这一步由于上面已经删除,需要做;

解释:将证书 root.cer 以别名 root导入 server.jks 中。

注意:这里的目标 jks 文件里不含有指定的别名,此时的导入条目才会以 trustedCertEntry 信任证书的形式保存。

导入签发证书到 jks 文件 ( 更新证书 )

命令:keytool -importcert -alias serverrsa -file serverrsa.cer -keystore server.jks  【cmd显示证书回复已安装至密钥库中】

解释:将证书 server.cer 更新到已存在别名 server的 server.jks 文件中

最后删除root: keytool -delete -alias root -keystore server.jks

好现在得到了自签名密钥库文件server.jks,里面有2个密钥,server和serverrsa;

现在把openfire原始D:\Program Files (x86)\Openfire\resources\security下的3个文件复制过来,先修改密码

keytool -storepasswd -keystore keystore -storepass changeit -new 12344321

keytool -storepasswd -keystore truststore -storepass changeit -new 12344321

keytool -storepasswd -keystore client.truststore -storepass changeit -new 12344321

openfire生成的密钥库里面有两个密钥,home_rsa和home_dsa;

导出keystore的证书:

keytool -exportcert -alias home_dsa -file home_dsa.cer -keystore keystore -storepass 12344321

keytool -exportcert -alias home_rsa -file home_rsa.cer -keystore keystore -storepass 12344321

把证书导入客户端信任证书库,client.truststore

keytool -importcert -alias home_dsa -file home_dsa.cer -keystore client.truststore -storepass 12344321

keytool -importcert -alias home_rsa -file home_rsa.cer -keystore client.truststore -storepass 12344321

导出server.jks的证书,这个作为客户端的密钥库;

keytool -exportcert -alias server -file server.cer -keystore server.jks -storepass 12344321

keytool -exportcert -alias serverrsa -file serverrsa.cer -keystore server.jks -storepass 12344321

把导出的证书导入到服务端的 truststore;这里openfire生成的truststore本身有186KB里面包含很多证书,不管它;

keytool -importcert -alias server -file server.cer -keystore truststore -storepass 12344321

keytool -importcert -alias serverrsa -file serverrsa.cer -keystore truststore -storepass 12344321

现在把服务端用的keystore和truststore复制到D:\Program Files (x86)\Openfire\resources\security覆盖;

把server.jks和client.truststore;不行,可能是openfire的keystore问题,下面在生成一个client.jks;

keytool -genkeypair -alias clientrsa -keypass 12344321   -keyalg RSA -keysize 1024 -validity 365 -keystore client.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  

keytool -genkeypair -alias client -keypass 12344321   -keysize 1024 -validity 365 -keystore client.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  

keytool -certreq -file clientrsa.csr -alias clientrsa -keystore client.jks -storepass 12344321

keytool -certreq -file client.csr -alias client -keystore client.jks  -storepass 12344321

keytool -gencert -infile clientrsa.csr -outfile clientrsa.cer -alias root -keystore root.jks  -storepass 12344321

keytool -gencert -infile client.csr -outfile client.cer -alias root -keystore root.jks  -storepass 12344321                             

keytool -exportcert -alias root -file root.cer -keystore root.jks -storepass 12344321                                                           

keytool -importcert -alias root -file root.cer -keystore client.jks -storepass 12344321  

keytool -importcert -alias clientrsa -file clientrsa.cer -keystore client.jks  -storepass 12344321

keytool -importcert -alias client -file client.cer -keystore client.jks  -storepass 12344321

keytool -delete -alias root -keystore client.jks -storepass 12344321


keytool -list -v -keystore client.jks  -storepass 12344321


现在有server.jks, 别名server和serverrsa;client.jkc,别名 client 和 clientrsa


keytool -exportcert -alias server -file server.cer -keystore server.jks -storepass 12344321

keytool -exportcert -alias serverrsa -file serverrsa.cer -keystore server.jks -storepass 12344321

keytool -exportcert -alias client -file client.cer -keystore client.jks -storepass 12344321

keytool -exportcert -alias clientrsa -file clientrsa.cer -keystore client.jks -storepass 12344321


keytool -importcert -alias server -file server.cer -keystore servertrust  -storepass 12344321

keytool -importcert -alias serverrsa -file serverrsa.cer -keystore servertrust  -storepass 12344321


keytool -importcert -alias client -file client.cer -keystore clienttrust  -storepass 12344321

keytool -importcert -alias clientrsa -file clientrsa.cer -keystore clienttrust  -storepass 12344321

现在服务器用server.jks 和 clienttrust【粘贴至openfire,改名,重启,可用】

客户端用client和servertrust

keytool -importcert -alias root -file root.cer -keystore clienttrust  -storepass 12344321

keytool -importcert -alias root -file root.cer -keystore servertrust  -storepass 12344321

重来:

keytool -genkeypair -alias clientrsa -keypass 12344321   -keyalg RSA -keysize 1024 -validity 365 -keystore client.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  

keytool -genkeypair -alias client -keypass 12344321   -keysize 1024 -validity 365 -keystore client.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  

keytool -exportcert -alias clientrsa -file clientrsa.cer -keystore client.jks -storepass 12344321 

keytool -exportcert -alias client -file client.cer -keystore client.jks -storepass 12344321     

keytool -importcert -alias clientrsa -file clientrsa.cer -keystore servertrust.jks -storepass 12344321  

keytool -importcert -alias client -file client.cer -keystore servertrust.jks -storepass 12344321  

keytool -certreq -file clientrsa.csr -alias clientrsa -keystore client.jks -storepass 12344321

keytool -certreq -file client.csr -alias client -keystore client.jks  -storepass 12344321

keytool -gencert -infile clientrsa.csr -outfile clientrsa.cer -alias root -keystore root.jks  -storepass 12344321

keytool -gencert -infile client.csr -outfile client.cer -alias root -keystore root.jks  -storepass 12344321                             

keytool -exportcert -alias root -file root.cer -keystore root.jks -storepass 12344321                                                           

keytool -importcert -alias root -file root.cer -keystore client.jks -storepass 12344321  

keytool -importcert -alias clientrsa -file clientrsa.cer -keystore client.jks  -storepass 12344321

keytool -importcert -alias client -file client.cer -keystore client.jks  -storepass 12344321

keytool -delete -alias root -keystore client.jks -storepass 12344321

至此得到client.jks和servertrust.jks;

keytool -genkeypair -alias serverrsa -keypass 12344321   -keyalg RSA -keysize 1024 -validity 365 -keystore server.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  

keytool -genkeypair -alias server -keypass 12344321   -keysize 1024 -validity 365 -keystore server.jks -storepass 12344321 -dname "CN=*.home, OU=, O=, L=, ST=, C="  

keytool -exportcert -alias serverrsa -file serverrsa.cer -keystore server.jks -storepass 12344321 

keytool -exportcert -alias server -file server.cer -keystore server.jks -storepass 12344321     

keytool -importcert -alias serverrsa -file serverrsa.cer -keystore clienttrust.jks -storepass 12344321  

keytool -importcert -alias server -file server.cer -keystore clienttrust.jks -storepass 12344321  

keytool -certreq -file serverrsa.csr -alias serverrsa -keystore server.jks -storepass 12344321

keytool -certreq -file server.csr -alias server -keystore server.jks  -storepass 12344321

keytool -gencert -infile serverrsa.csr -outfile serverrsa.cer -alias root -keystore root.jks  -storepass 12344321

keytool -gencert -infile server.csr -outfile server.cer -alias root -keystore root.jks  -storepass 12344321                             

keytool -exportcert -alias root -file root.cer -keystore root.jks -storepass 12344321                                                           

keytool -importcert -alias root -file root.cer -keystore server.jks -storepass 12344321  

keytool -importcert -alias serverrsa -file serverrsa.cer -keystore server.jks  -storepass 12344321

keytool -importcert -alias server -file server.cer -keystore server.jks  -storepass 12344321

keytool -delete -alias root -keystore server.jks -storepass 12344321

keytool -list -v -keystore client.jks  -storepass 12344321

keytool -importcert -alias root -file root.cer -keystore clienttrust.jks -storepass 12344321  

keytool -importcert -alias root -file root.cer -keystore servertrust.jks -storepass 12344321 

2天了没搞定这个,下面测试    【甲骨文官方文档】 的方法

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html

keytool -genkeypair -keystore root.jks -alias root -dname CN=root -ext bc:c -storepass 12344321  keytool -genkeypair -keystore ca.jks -alias ca -dname CN=ca -ext bc:c -storepass 12344321keytool -genkeypair -keystore server.jks -alias server -dname CN=home -storepass 12344321
keytool -genkeypair -keystore client.jks -alias client -dname CN=home -storepass 12344321

keytool -keystore root.jks -alias root -exportcert -rfc > root.pemkeytool -storepass 12344321 -keystore ca.jks -certreq -alias ca | keytool -storepass 12344321 -keystore root.jks -gencert -alias root -ext BC=0 -rfc > ca.pemkeytool -keystore ca.jks -importcert -alias ca -file ca.pem [这里报错:无法从回复中建立链][使用下面两行代替]
keytool -keystore ca.jks -importcert -alias root -file root.pem -storepass 12344321
keytool -keystore ca.jks -importcert -alias ca -file ca.pem -storepass 12344321keytool -storepass 12344321 -keystore server.jks -certreq -alias server | keytool -storepass 12344321 -keystore ca.jks -gencert -alias ca  -rfc > server.pemcat root.pem ca.pem server.pem | keytool -keystore server.jks -importcert -alias server [cat,这个linx命令,把多个文件合为一个的意思][使用下面3行代替]
keytool -keystore server.jks -importcert -alias root -file root.pem -storepass 12344321
keytool -keystore server.jks -importcert -alias ca -file ca.pem -storepass 12344321
keytool -keystore server.jks -importcert -alias server -file server.pem -storepass 12344321
生成clienttrust.jks
keytool -keystore clienttrust.jks -importcert -alias root -file root.pem -storepass 12344321
keytool -keystore clienttrust.jks -importcert -alias ca -file ca.pem -storepass 12344321
keytool -keystore clienttrust.jks -importcert -alias server -file server.pem -storepass 12344321
ca给client签名证书,client.pem
keytool -storepass 12344321 -keystore client.jks -certreq -alias client | keytool -storepass 12344321 -keystore ca.jks -gencert -alias ca  -rfc > client.pem
keytool -keystore client.jks -importcert -alias root -file root.pem -storepass 12344321keytool -keystore client.jks -importcert -alias ca -file ca.pem -storepass 12344321keytool -keystore client.jks -importcert -alias client -file client.pem -storepass 12344321生成servertrust.jkskeytool -keystore servertrust.jks -importcert -alias root -file root.pem -storepass 12344321keytool -keystore servertrust.jks -importcert -alias ca -file ca.pem -storepass 12344321keytool -keystore servertrust.jks -importcert -alias client -file client.pem -storepass 12344321


0 0
原创粉丝点击