https webservice通讯 参考网址 http://blog.csdn.net/small____fish/article/details/8214938
一、生成密钥库和证书
可参考以下密钥生成脚本,根据实际情况做必要的修改,其中需要注意的是:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意。
1、生成服务器证书库
keytool -validity 365 -genkey -v -alias server -keyalg RSA -keystore E:\ssl\server.keystore -dname "CN=127.0.0.1,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456
2、生成客户端证书库
keytool -validity 365 -genkeypair -v -alias client -keyalg RSA -storetype PKCS12 -keystore E:\ssl\client.p12 -dname "CN=client,OU=icesoft,O=icesoft,L=Haidian,ST=Beijing,c=cn" -storepass 123456 -keypass 123456
3、从客户端证书库中导出客户端证书
keytool -export -v -alias client -keystore E:\ssl\client.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:\ssl\client.cer
4、从服务器证书库中导出服务器证书
keytool -export -v -alias server -keystore E:\ssl\server.keystore -storepass 123456 -rfc -file E:\ssl\server.cer
5、生成客户端信任证书库(由服务端证书生成的证书库)
keytool -import -v -alias server -file E:\ssl\server.cer -keystore E:\ssl\client.truststore -storepass 123456
6、将客户端证书导入到服务器证书库(使得服务器信任客户端证书)
keytool -import -v -alias client -file E:\ssl\client.cer -keystore E:\ssl\server.keystore -storepass 123456
7、查看证书库中的全部证书
keytool -list -keystore E:\ssl\server.keystore -storepass 123456
二、Tomat配置
使用文本编辑器编辑${catalina.base}/conf/server.xml
找到Connector port="8443"的标签,取消注释,并修改成如下:
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="${catalina.base}/key/server.keystore" keystorePass="123456"
truststoreFile="${catalina.base}/key/server.keystore" truststorePass="123456"/>
# truststoreFile、keystoreFile为已经生成的服务器证书的地址
# truststorePass、keystorePass为自定义的服务器证书的密码
备注:
keystoreFile:指定服务器密钥库,可以配置成绝对路径,如“D:/key/server.keystore”,本例中是在Tomcat目录中创建了一个名称为key的文件夹,仅供参考。
keystorePass:密钥库生成时的密码
truststoreFile:受信任密钥库,和密钥库相同即可
truststorePass:受信任密钥库密码
最新文章
- MVVM大比拼之knockout.js源码精析
- 1.openGL 初探
- Dev用于界面按选中列进行分组统计数据源(实用技巧)
- CodeForces 450B 矩阵
- ListView为什么用setOnItemClick这个方法和onTouch这个方法有冲突
- Pritunl:简易搭建个人VPN及年费200的超编译独立主机 BandwagonHost
- Andoid实现手动绘图
- 用JSmooth制作java jar文件的可运行exe文件教程【图文】
- webservice发送字符串
- 多线程下HashMap的死循环是如何产生的
- plsql使用
- android手机旋转方向识别
- 并发编程(CountDownLatch使用)
- SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。
- Javascript模式小记(一)
- SQL Server 中用DBCC Opentran语句查看未关闭的事务(转载)
- 使用EF操作不同数据库(以SQLite为例)
- 【CH4201】楼兰图腾
- jQuery全屏滚动插件fullPage.js中文帮助文档API
- jquery购物车添加功能
热门文章
- Hadoop的学习前奏(二)——Hadoop集群的配置
- 在GNU Linux中怎样得到一个进程当前的流量
- 苹果官方Instruments工具之Automation的介绍
- java-javabean Introspector的应用
- centos上装eclipse步骤
- python 循环高级用法 [expression for x in X [if condition] for y in Y [if condition] ... for n in N [if condition] ]按照从左至右的顺序,分别是外层循环到内层循环
- windows 下 opencv 3.x 的安装及常见问题的解决
- JAVA基础(多线程Thread和Runnable的使用区别(转载)
- [Swift通天遁地]四、网络和线程-(2)通过BlockOperation实现线程的队列
- celery定时执行ansible api返回为空的问题