Openssl + JDK keytool 证书制作

1.创建CA的私钥 1.创建CA的私钥 
执行以下命令opensslgenrsa -des3 -out mykey/ca.key 1024   ( mykey/  当前目录下的mykey目录,事先要建立好)
接下来会提示你输入密码.


2.
创建CA证书 (根证书)
openssl req -new -x509 -key mykey/ca.key -out mykey/ca.crt -days 365
x509
是一种加密的标准,-out是指输出的文件路径,-key是指定私钥,也就是上一步生成的那个,-days是指证书有效期。
注:再输入commonname时你可以指定你自己的名字,但是不能输入你的服务器名(www.XX.X.com

 

3.创建server端的私钥 
因为咱们是要在server端提供SSLwebservice,所以在server端需要使用私钥库和信任库。
openssl genrsa -des3 -out  mykey/server.key1024

 

4.创建server证书签名请求 
我们可以发送签名请求到一个官方的CA机构,这些机构都是要收费的,而且还要严格审核,至于我们自己开发过程中的话实在是没必要。我们直接发送到我们刚才通过openssl构建的CA就可以了。
openssl req -new -key  mykey/server.key-out  mykey/server.csr
注意这里的commonname,此处填写你的服务器的ip或者域名,例如localhost,也就是你要为哪台服务器做证书就指定那台机器。

 

5.CA签署server证书 
如果是第一次通过CA签署证书的话,执行如下命令
openssl x509 -req -days 30 -in  mykey/server.csr-CA mykey/ca.crt -CAkey mykey/ca.key -CAcreateserial -out  mykey/server.crt
其中的-CAcreateserial是指创建一个新的序列文件。这样openssl会在当前目录下创建一个名为ca.srl的文件存储序列号(官方是这样说的,我本地产生的序列文件是.srl,搞不清怎么回事,可能是创建时没指定名字吧,不过不影响后面的操作)。下次再次签署证书时就可以直接指定这个序列文件了。命令如下:openssl x509 -req -days 30 -in  mykey/server.csr -CA mykey/ca.crt -CAkey mykey/ca.key-CAserial mykey/ca.srl -out  mykey/server.crt
输入CA私钥的密码后签署成功。

 

6.创建server端的pkcs12文件 
openssl pkcs12 -export -in  mykey/server.crt-inkey  mykey/server.key -out  mykey/server.p12 -name demo_server
注意其中的-namedemo_server,这个是指定keystore的别名,记下来,很重要哦(weblogic要用到)。

 

7.转换pkcs12JKS keystore文件 
这个过程需要用到jetty.jar,下载相应jar后添加到classpath),然后执行如下命令
java org.mortbay.util.PKCS12Import  mykey/server.p12 mykey/server.jks

如果不添加到classpath,则执行:

java -cp org.mortbay.jetty.jarorg.mortbay.util.PKCS12Import mykey/server.p12 mykey/server.jks
在此处输入上一步设置到export password

Server
端相关文件就完成了,现在可以用javakeytool命令查看一下生成的server.jks的内容
keytool -v -list -keystore  mykey/server.jks
接下来开始准备client端的相关文件,如果serverclient相互认证,客户端的相关操作与server端类似,不做过多说明。

 

8.创建client端的私钥 
openssl req -new -newkey rsa:1024 -nodes  -out  mykey/client.req -keyout  mykey/client.key

 

9.创建client端证书签名请求 
openssl x509 -CA mykey/ca.crt -CAkey mykey/ca.key -CAserial mykey/ca.srl -req-in  mykey/client.req -out  mykey/client.pem -days 365

 

10.创建client端的pkcs12文件 
openssl pkcs12 -export -clcerts -in  mykey/client.pem -inkey  mykey/client.key -out  mykey/client.p12

 

11.创建client端的jks文件 
java org.mortbay.util.PKCS12Import  mykey/client.p12 mykey/client.jks

 

12.创建信任密钥库 
这次用到javakeytool命令
keytool -genkey -alias dummy -keyalg RSA -keystore  mykey/truststore.jks
到此为止数字证书的部分就完成了,下面介绍一下tomcat如何配置ssl支持。

 

13.CA认证过的证书导入信任库

keytool -import -v -trustcacerts-alias my_ca -file mykey/ca.crt -keystore  mykey/truststore.jks

通过下面的命令可以查看信任库的详细信息

keytool -v -list -keystore  mykey/truststore.jks


二、 tomcat ssl支持的配置 
1. 
tomcatserver.xml中添加一个新的connector,配置如下 

<Connector  port="8443" maxHttpHeaderSize="8192"  
SSLEnabled="true"
        maxThreads="150"  
        minSpareThreads="25"  
        maxSpareThreads="75"  
        enableLookups="false"  
        disableUploadTimeout="true"  
        acceptCount="100"  
        scheme="https"  
        secure="true"  
        clientAuth="false"  
        sslProtocol="TLS"  
        keystoreFile="/conf/server.jks"  
        keystorePass="XXXXXX"  
        algorithm="SunX509"  
     />  
 
注: keystoreFile 对应 server 端的 jks 文件, keystorePass 对应其密码

2. 
重启 tomcat ,在浏览器中敲入 https://localhost:8443/ 测试一下  

 

你可能感兴趣的:(keytool)