tomcat下https配置

1、测试Https请求的实验环境

服务器:Tomcat 7.0

JDK   : 1.8

Android端:Android studio

2、证书的生成

到jdk的bin目录下运行以下命令:

①生成自签名CA:

keytool -genkey -v -alias ca -keyalg RSA -keystore D:\ca_cert_lib.jks -validity 3650

生成服务器证书

keytool -genkey -v -alias  server  -keyalg  RSA -keystore D:\server_cert_lib.jks -validity 3650

注意证书名叫ca定义为自签名的CA证书,证书名叫server定义为服务器证书,它们分别保存在证书库路径为 D:\ca_cert_lib.jks D:\server_cert_lib.jks 中。之所以要分自签名的CA证书和server服务器证书,是因为正常情况下我们的server服务器证书是需要向第三方CA申请的,第三方CA会用它的根证书给你生成一份公钥证书(这个过程叫做第三方CA给你签名),而此处就是要自导自演展示自签名的CAserver证书签名这个过程。

3、用自签名的CAserver签上CA的签名

在给server签名之前,查看一下当前证书库情况,它们的确都是各自给自己签名的:
keytool -list -v -keystore D:\ca_cert_lib.jks

keytool -list -v -keystore D:\server_cert_lib.jks

现在使用自签名CA给server签名:

①生成server的证书请求文件:keytool -certreq -alias server -keystore D:\server_cert_lib.jks > D:\server.csr

②使用自签名的CA对server的证书请求文件进行签名颁发服务器server.cer公钥证书:keytool -gencert -alias ca -keystore D:\ca_cert_lib.jks -infile D:\server.csr -outfile D:\server.cer

③生成自签名CA的公钥文件:keytool -export -alias ca -keystore D:\ca_cert_lib.jks -rfc -file D:\ca.cer

此时可以先查看以下ca.cerserver.cer公钥证书具体内容(注意ca.cer是自签名CA的公钥文件,其颁发者还是它自己,而server.cerserver服务器的公钥文件,其颁发者是自签名的CA,两者是有本质区别的。

输入以下命令:

keytool -printcert -rfc -file D:\ca.cer

keytool -printcert -rfc -file D:\server.cer

安装证书回复(将CA颁发的cer公钥证书安装到server服务器端证书库,前提条件是CA的cer公钥证书也需要先被安装)

①先安装CA的公钥证书(这步不可以少,否则下面的证书回复没法安装):

keytool -importcert -alias ca -keystore D:\server_cert_lib.jks -file D:\ca.cer

②安装server的公钥证书(被CA签名过的):

keytool -importcert -alias server -keystore D:\server_cert_lib.jks -file D:\server.cer

此时再查看下服务器server证书:keytool -list -v -keystore D:\server_cert_lib.jks -alias server

server证书变化挺大的:

4、由于是双向认证,所以同理,需要生成客户端证书库和证书:

keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore D:\client_cert_lib.p12 -validity 90

注意证书名叫做client,保存的证书库路径为 D:\client_cert_lib.p12

5、客户端和服务器端证书库和证书都生成好了后,将客户端证书导入到服务器端证书库中:(这个过程叫做让服务器端证书库信任指定的客户端证书,信任只需要信任其公钥证书就行了,即cer格式)

先从p12格式的客户端证书库导出cer格式的client证书公钥:

keytool -export -alias client -keystore D:\client_cert_lib.p12 -storetype PKCS12 -rfc -file D:\client.cer

②将cer格式的client证书公钥导入到服务器端证书库里

keytool -import -alias client -v -file D:\client.cer -keystore D:\server_cert_lib.jks

入后检查一下服务端证书库当前包含的证书情况,看看有没有将客户端证书导入成功

keytool -list -v -keystore D:\server_cert_lib.jks

 

6、做双向认证还需要同时将服务器端证书导入到客户端证书库里

①先从jks格式的服务器端证书库导出cer格式的服务器端公钥证书

keytool -keystore D:\server_cert_lib.jks -export -alias server -file D:\server.cer

②先将p12格式的客户端证书库转成bks格式的证书库,因为Android上只能用bks的证书库bcprov-jdk16-1.45.jar

keytool -importkeystore -srckeystore D:\client_cert_lib.p12 -srcstoretype pkcs12 -destkeystore D:\client_cert_lib.bks   –deststoretype   bk    -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath D:\bcprov-jdk16-1.45.jar

到此证书制作完毕。

将服务器端公钥证书server.cer客户端证书库client_cert_lib.bks放入安卓assert目录。

7、tomcat的安装目录/conf/server.xml中配置和启用以下port 8443Connector

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

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

               clientAuth="true" sslProtocol="TLS"

               keystoreFile="D:\\server_cert_lib.jks" keystorePass="123456"

               truststoreFile="D:\\server_cert_lib.jks" truststorePass="123456"

               />

注意配置完之后eclipse必须重新导入tomcat,否则不会生效。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值