java tomcat https 配置

1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 
2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 
如果只是加密,我感觉单向就行了。 
如果想要用系统的人没有证书就访问不了系统的话,就采用双向 

前提Java环境配置好了

 

tomcat服务器配置https双向认证

第一步:为服务器生成证书

使用keytoolTomcat生成证书,假定目标机器的域名是“localhost”keystore文件存放在“D:\home\tomcat.keystore”,口令为“password”,使用如下命令生成:

 

keytool-genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore-validity 36500

 

(参数简要说明:“D:\home\tomcat.keystore”含义是将证书文件的保存路径,证书文件名称是tomcat.keystore“-validity 36500”含义是证书有效期,36500表示100年,默认值是90 “tomcat”为自定义证书名称)

在命令行填写必要参数:

A输入keystore密码:此处需要输入大于6个字符的字符串。

B您的名字与姓氏是什么?这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com或者 10.1.25.251](就是你将来要在浏览器中输入的访问地址),否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。在本地做开发测试时,应填入“localhost”

C你的组织单位名称是什么?您的组织名称是什么?您所在城市或区域名称是什么?您所在的州或者省份名称是什么?该单位的两字母国家代码是什么?可以按照需要填写也可以不填写直接回车,在系统询问正确吗?时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息。

D输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以,完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件。

(附另外一种写法

keytool -genkey -v -alias tomcat -keyalg RSA -keystoreD:/downloads/tomcat.keystore -dname"CN=192.168.1.1,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN"-validity 3650 -storepass logiscn -keypass logiscn 

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

为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IEFirefox,证书格式应该是PKCS12,因此,使用如下命令生成:

 

keytool-genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystoreD:\home\mykey.p12 mykey为自定义)。

 

对应的证书库存放在“D:\home\mykey.p12”,客户端的CN可以是任意值。双击mykey.p12文件,即可将证书导入至浏览器(客户端)。

 

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

由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

 

keytool-export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepasspassword -rfc -file D:\home\mykey.cer 

 

(mykey为自定义与客户端定义的mykey要一致,password是你设置的密码)。通过以上命令,客户端证书就被我们导出到“D:\home\mykey.cer”文件了。

下一步,是将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:

 

 Keytool-import -v -file D:\home\mykey.cer -keystoreD:\home\tomcat.keystore

 

通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

 

keytool -list-keystore D:\home\tomcat.keystore

 

(tomcat为你设置服务器端的证书名)

 

 

 

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

由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览的受信任的根证书颁发机构。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:

 

keytool-keystore D:\home\tomcat.keystore -export -alias tomcat -fileD:\home\tomcat.cer

 

(tomcat为你设置服务器端的证书名)

通过以上命令,服务器证书就被我们导出到“D:\home\tomcat.cer”文件了。双击tomcat.cer文件,按照提示安装证书,将证书填入到受信任的根证书颁发机构

 

第五步:配置tomcat服务器

打开Tomcat根目录下的/conf/server.xml,找到Connectorport="8443"配置段,修改为如下:

 

<Connector

port="8443"protocol="org.apache.coyote.http11.Http11NioProtocol"

SSLEnabled="true"maxThreads="150" scheme="https"

secure="true" clientAuth="true"sslProtocol="TLS"

keystoreFile="D:\\home\\tomcat.keystore"keystorePass="123456"

truststoreFile="D:\\home\\tomcat.keystore"truststorePass="123456" />

 

tomcat要与生成的服务端证书名一致)

属性说明:

clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证

keystoreFile:服务器证书文件路径

keystorePass:服务器证书密码

truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书

truststorePass:根证书密码

 

 

 

打开$CATALINA_HOME/conf/web.xml,在该文件末尾增加:

<security-constraint> 

       <web-resource-collection > 

              <web-resource-name>SSL</web-resource-name> 

             <url-pattern>/*</url-pattern> 

       </web-resource-collection>

       <user-data-constraint> 

             <transport-guarantee>CONFIDENTIAL</transport-guarantee> 

       </user-data-constraint> 

</security-constraint>

测试

到这里启动tomcat,输入https://localhost:8443/,是访问不了的:原因客户端证书没有导入浏览器 
双击 “C:\mykey.p12” 即可将证书导入至 IE :输入创建时候的密码,password 
这时再打开会弹出一个提示框:证书不可信任,有一个警告,说什么需要机构颁发。 
这时再双击第一步生成的tomcat.cer。一直下一步,最后选“是”。 
导入后,再输入地址就不是提示了。直接转向tomcat的猫页,说明成功了。

 

tomcat服务器配置https向认证

第一步:同双向第一步

第二步:同双向第四步

第三步:配置tomcat 同双向第五步

        注意:clientAuth="true"改为clientAuth="false";去掉:

truststoreFile="D:\\home\\tomcat.keystore"truststorePass="123456"

 

 

 

 

其它配置

ssl默认端口是443,如果web系统不需要带端口访问的,可以修改 如下

配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录 

 

配置Tomcat,打开$CATALINA_HOME/conf/server.xml,修改如下, 

<Connectorport="8080"protocol="HTTP/1.1" 
              connectionTimeout="20000" 
              redirectPort="8443"/> 
修改参数=> 


<Connector port="80" protocol="HTTP/1.1" 
              connectionTimeout="20000" 
              redirectPort="443"/> 

 

<Connectorport="8443"protocol="HTTP/1.1" SSLEnabled="true"

 maxThreads="150"scheme="https" secure="true"

 clientAuth="false"sslProtocol="TLS"/>

 

修改参数=>

 

<Connectorport="443"protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150"scheme="https" secure="true"

clientAuth="false"sslProtocol="TLS" keystoreFile="/etc/tomcat.keystore"keystorePass="www.gbcom.com.cn"/>

 

<Connectorport="8009" enableLookups="false"protocol="AJP/1.3" redirectPort="8443"/>

       

修改参数=>

 

<Connectorport="8009" enableLookups="false"protocol="AJP/1.3" redirectPort="443"/>

 

JDKkeytool常用命令:

-genkey     在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:\Documents andSettings\UserName\文件名为“.keystore”)


-alias       产生别名,每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写


-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中)


-keyalg      指定密钥的算法 ( RSA  DSA(如果不指定默认采用DSA)


-validity    指定创建的证书有效期多少天


-keysize     指定密钥长度


-storepass   指定密钥库的密码(获取keystore信息所需的密码)


-keypass     指定别名条目的密码(私钥的密码)


-dname       指定证书拥有者信息

例如:  "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"


-list        显示密钥库中的证书信息     


-v           显示密钥库中的证书详细信息


-export      将别名指定的证书导出到文件 

keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass密码

-file       参数指定导出到文件的文件名


-delete      删除密钥库中某条目 

keytool -delete -alias 指定需删除的别名  -keystore 指定keystore  -storepass 密码     

-printcert  查看导出的证书信息

keytool -printcert -fileyushan.crt        

-keypasswd  修改密钥库中指定条目口令   

keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new  新密码  -storepasskeystore密码 -keystore

-import     将已签名数字证书导入密钥库 

keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

下面是各选项的缺省值 
-alias "mykey"

-keyalg "DSA"

-keysize 1024

-validity 90

-keystore 用户宿主目录中名为 .keystore 的文件

-file 读时为标准输入,写时为标准输出 
          


1keystore的生成:

(1)分阶段生成:
     keytool -genkey -alias yushan(
别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore e:\yushan.keystore(指定生成证书的位置和证书名称)-storepass 123456(获取keystore信息的密码);回车输入相关信息即可;
     

(2)一次性生成:
     keytool -genkey -alias yushan -keypass yushan 
-keyalg RSA -keysize 1024 -validity365 -keystore e:\yushan.keystore -storepass 123456 -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)";(中英文即可)

2keystore信息的查看: 
   keytool -list  -v -keystore e:\keytool\yushan.keystore-storepass 123456
显示内容:
---------------------------------------------------
…………………………
---------------------------------------------------

缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。

keytool -list  -rfc -keystoree:\yushan.keystore -

storepass 123456

显示:

---------------------------------------------------

………………….

---------------------------------------------------

3、证书的导出:

keytool -export -alias yushan -keystoree:\yushan.keystore -file e:\yushan.crt(指定导出的证书位置及证书名称) -storepass 123456

4、查看导出的证书信息

keytool -printcert -file yushan.crt
显示:(在windows下可以双击yushan.crt查看)
……………………..
---------------------------------------------------

 

 

5、证书的导入: 
准备一个导入的证书:
keytool -genkey -alias shuany -keypass shuany -keyalg RSA -keysize 1024-validity 365 -keystore  
e:\shuany.keystore-storepass 123456 -dname "CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx";
keytool -export -alias shuany -keystore e:\shuany.keystore -file e:\shuany.crt-storepass 123456
 现在将shuany.crt 加入到yushan.keystore中:keytool -import -aliasshuany(指定导入证书的别名,如果不指定默认为mykey,别名唯一,否则导入出错) -file e:\shuany.crt-keystore e:\yushan.keystore -storepass 123456 keytool -list  -v -keystoree:\keytool\yushan.keystore -storepass 123456
显示:
---------------------------------------------------

……………….
---------------------------------------------------

6、证书条目的删除: 
keytool -delete -alias shuany(指定需删除的别名) -keystore yushan.keystore -storepass 123456
  

7、证书条目口令的修改: 
keytool -keypasswd -alias yushan(需要修改密码的别名) -keypass yushan(原始密码) -new 123456(别名的新密码)  -keystoree:\yushan.keystore -storepass 123456

8keystore口令的修改: 
keytool -storepasswd -keystore e:\yushan.keystore(
需修改口令的keystore) -storepass123456(原始密码-new yushan(新密码)

9、修改keystore中别名为yushan的信息

keytool -selfcert -alias yushan-keypass yushan -keystore e:\yushan.keystore -storepass 123456 -dname"cn=yushan,ou=yushan,o=yushan,c=us"

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值