Tomcat HTTPS配置

来源:互联网 发布:长春java培训 编辑:程序博客网 时间:2024/06/04 19:36
第一步:为服务器生成证书 
使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“E:\tomcat.keystore”,口令为“password”,使用如下命令生成 

keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -dname "CN=gavin-pc,OU=cn,o=cn,L=cn,ST=cn,C=cn" -storepass changeit -keypass changeit 

第二步:为客户端生成证书 

下一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成: 
keytool -genkey -v -alias myKey -keyalg RSA -storetype PKCS12 -keystore my.p12 -dname "CN=MyKey,OU=cn,o=cn,L=cn,ST=cn,C=cn" -storepass password1 -keypass 

password2 



第三步:让服务器信任客户端证书 

由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出 

为一个单独的CER文件,使用如下命令: 
keytool -export -alias myKey -keystore my.p12 -storetype PKCS12 -storepass password1 -rfc -file my.cer 

通过以上命令,客户端证书就被我们导出到“C:\my.cer”文件了。下一步,是将该文件导入到服务器的证书库,添加为一个信任证书: 

keytool -import -v -file my.cer -keystore tomcat.keystore -storepass changeit 


最后: 
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="150" scheme="https" secure="true" 
    clientAuth="false" sslProtocol="TLS" 
    keystoreFile="e:/tomcat.keystore" keystorePass="changeit" 
    truststoreFile="e:/tomcat.keystore" truststorePass="changeit" 
/> 

验证:其中,clientAuth指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。如果clientAuth设置为“true”,表示强制双向SSL验证 

,必须验证客户端证书。如果clientAuth设置为“want”,则表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。 
true是 服务器不会颁发证书必须由客户端导入 


一、我用自己的证书请求客户端生成了密钥和证书请求: 
    my.key和my.req 
二、CA签署服务端程序自签署根CA证书:root.cer和root.key 
三、CA签署了my.req,生成my.crt 
四、用keytool生成了tomcat的keystore     
        1、keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.ketstore 
        2、keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore       
        
tomcat.ketstore 
        3、用CA签署了certreq.csr,生成tomcat.crt 
        4、导入根证书和tomcat证书 
        keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file r 
oot.cer 
        keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file 
                
tomcat.crt 
五、设置tomcat的server.xml文件,其中clientAuth="false" 
六、https://localhost:8843,正确连上 
七、改clientAuth="true",安装my.crt,但是这时 
    https://localhost:8843弹出一个对话框让我选择 
    使用的证书,就无法选择了。 
    所以我想请问将clientAuth="true"这样的设置后, 
    为了完成客户和服务器的双向认证需要做如何的设置 
0 0
原创粉丝点击