在Java环境中配置SSL双向认证


在Java环境中配置Https双向认证,需要使用JDK自带的keytool工具,在命令行方式下,生成服务器证书申请文CSR,然后到CA签发服务器证书。

以下为在Tomcat和Weblogic中配置Https双向认证的步骤,环境为JDK1.5。

Tomcat下keystore密码与服务器密钥密码必须一致。

1.在Tomcat中配置HTTPS双向认证

在Tomcat5.0中配置Https双向认证的步骤如下:

1. 产生keystore文件:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore




java paho使用ssl java ssl证书连接_服务器


此时可在当前目录下看到keystore文件。

申请服务器证书时,CN需要和网站的域名或者IP相同,否则IE7会认为该证书是为别的网站颁发的。


2. 生成服务器证书申请文件CSR:

keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore keystore




java paho使用ssl java ssl证书连接_java paho使用ssl_02



此时可在当前目录下看到文件certreq.csr。

把certreq.csr文件内容和DN提交到CA管理员,即可申请到服务器证书。

DN为:CN=192.168.1.25, OU=research, O=cwca, L=YC, ST=NX,C=CN。

从CA获得的服务器证书为user.p7b,可从其中分别导出base64格式的根证和服务器证书:

NXCA.cer和client.cer。

3. 将根证书导入到keystore文件中:

keytool -import -trustcacerts -alias root -file NXCA.cer -keystore keystore




java paho使用ssl java ssl证书连接_java paho使用ssl_03


4. 将服务器证书导入到keystore文件中:

keytool -import -alias tomcat -file client.cer -keystore keystore





java paho使用ssl java ssl证书连接_java paho使用ssl_04

5. 

  把keystore文件拷入%CATALINA_HOME%/conf目录下;

修改文件%CATALINA_HOME%/conf/server.xml,知道 <Connector port="8443"这一行,默认是注释掉的;去掉注释,然后增加两行:

  keystoreFile="/conf/keystore" keystorePass="12345678"

      truststoreFile="/conf/keystore"truststorePass="12345678"

      修改结果如下图:

java paho使用ssl java ssl证书连接_java paho使用ssl_05


  如果clientAuth="false",则服务器不需要客户端证书;

  如果clientAuth="true",则客户端必须提供证书才能进行访问。

  Tomcat6以后还需增加SSLEnabled="true"。


6. 启动Tomcat,输入https://192.168.1.25:8443/,即可访问应用;

Https默认端口为443,如果把监听端口改为443,则访问时就不需要加端口号了。

Tomcat5.0和Tomcat6.0的配置过程相同。


2.在Weblogic中配置HTTPS双向认证

在Weblogic8.1中配置Https双向认证的步骤如下:

1. 产生keystore文件:

     

keytool -genkey -alias weblogic -keyalg RSA -keystore weblogic.jks



java paho使用ssl java ssl证书连接_双向认证_06

此时可在当前目录下看到weblogic.jks文件。

2. 

keytool -certreq -keyalg RSA -alias weblogic -file certreq.csr -keystore weblogic.jks




此时可在当前目录下看到文件certreq.csr。

java paho使用ssl java ssl证书连接_java paho使用ssl_07

把certreq.csr文件内容和DN提交到CA管理员,即可申请到服务器证书。

DN为:CN=192.168.1.25, OU=research, O=cwca, L=YC, ST=NX,C=CN。

从CA获得的服务器证书为user.p7b,可从其中分别导出base64格式的根证和服务器证书:

NXCA.cer和TESTSERVER.cer。


3.      导入根证书NXCA.cer到weblogic.jks中

keytool -import -alias testroot -trustcacerts -file NXCA.cer -keystore weblogic.jks



java paho使用ssl java ssl证书连接_SSL_08


4.      导入服务器证书TESTSERVER.cer到weblogic.jks中

keytool -import -trustcacerts -alias weblogic -file TESTSERVER.cer -keystore weblogic.jks




java paho使用ssl java ssl证书连接_服务器_09

5. 

  A.进入Weblogic控制台:http://localhost:7001/console

B.选择:mydomain->Servers->myserver->General页面,找到属性:SSL Listen Port Enabled,

将其选中,如图:   

java paho使用ssl java ssl证书连接_服务器_10


    在此可以修改SSL监听端口为443。

  C.进入D:\bea\weblogic81目录,新建文件夹jks,把weblogic.jks拷入其中。

  D.进入myserver->Keystores &SSL页面,做如下配置:

属性KeystoreConfiguration-> Identity中:

Custom Identity Keystore的值为:D:\bea\weblogic81\jks\weblogic.jks;

Type值为:jks;

输入两次Keystore密码;

属性KeystoreConfiguration-> Trust的属性值和Identity相同;

      属性SSLConfiguration->Identity中:

      Private Key Alias的值为Keystore的别名weblogic;

输入两次Keystore密码;

配置如下图:

java paho使用ssl java ssl证书连接_java paho使用ssl_11

java paho使用ssl java ssl证书连接_服务器_12

    

java paho使用ssl java ssl证书连接_服务器_13

       配置完成,点击页面右下角的Apply即可。

       E.以上为SSL单项认证,如果要配置SSL双向认证,在Keystores &SSL  页面中:

          点击属性Advanced Options的show,如图:

        

java paho使用ssl java ssl证书连接_java paho使用ssl_14

          找到属性Two Way Client Cert Behavior,

          将其值改为:Client Certs RequestedAnd Enforced,

          如图:

        

java paho使用ssl java ssl证书连接_SSL_15

          点击页面右下角的Apply即可。

     F.重启Weblogic服务,在IE地址栏中输入:https://192.168.1.25/ROOT/index.jsp

       即可访问应用。

     Weblogic8.1以上版本与此配置方法相同。

3.在Websphere6.1中配置HTTPS双向认证

1.      产生keystore文件:

      

keytool -genkey -alias server -keyalg RSA -keystore keystore



      

java paho使用ssl java ssl证书连接_java paho使用ssl_16


2.      生成服务器证书申请文件CSR:

 

keytool -certreq -keyalg RSA -alias server -file certreq.csr -keystore keystore



  

java paho使用ssl java ssl证书连接_SSL_17


3.      将根证书导入到keystore文件中:

keytool -import  -trustcacerts -alias root -file NXCA.cer -keystore keystore



java paho使用ssl java ssl证书连接_SSL_18


4.      将服务器证书导入到keystore文件中:

keytool -import -alias tomcat -file client.cer -keystore keystore




java paho使用ssl java ssl证书连接_服务器_19


5.      Webphere6.1双向认证设置,打开Webphere6.1控制台,点击左侧窗口安全性,

  点开后里边有ssl证书和密钥管理选项点击它。

  

java paho使用ssl java ssl证书连接_SSL_20

然后点击管理端点安全配置,点击

java paho使用ssl java ssl证书连接_服务器_21

java paho使用ssl java ssl证书连接_SSL_22

java paho使用ssl java ssl证书连接_双向认证_23

点击密钥库和证书,然后点击新建

java paho使用ssl java ssl证书连接_java paho使用ssl_24

新建密钥库和证书,

java paho使用ssl java ssl证书连接_服务器_25

填入名称,keystore文件的路径,keystore文件的密码,类型选为jks

java paho使用ssl java ssl证书连接_java paho使用ssl_26

 

 

java paho使用ssl java ssl证书连接_服务器_27

 

     

java paho使用ssl java ssl证书连接_SSL_28

     选择你信任库密钥库名为设置的名称。本例为server,然后点获取证书别名,如下图所示:

     

java paho使用ssl java ssl证书连接_双向认证_29

     然后确定,然后点击保护质量设置,将客户机认证选为必须,协议选为ssl,如下图所示:

     

java paho使用ssl java ssl证书连接_SSL_30

     然后保存为主配置。

     然后设置入站点ssl配置,如下图所示:

     

java paho使用ssl java ssl证书连接_双向认证_31

     设为我们新建的ssl主配置,本例为oa,然后点击更新证书别名列表,双向配置完成,

     我们重新启动websphere服务,就必须用证书才能登陆。