使用CA签发的服务器证书搭建Tomcat双向SSL认证服务
第一部分,先说证书的申请。
这步是要到正规的CA公司申请正式的设备证书必须走的步骤。
1、先生成证书的密钥对
打开命令行,切换到某个自己新建的目录下,执行如下命令
keytool -genkey -keyalg RSA -keysize 1024 -dname “CN=www.javastar.org,OU=翊天阁,O=翊天阁,L=南京市,ST=江苏省,C=CN” -alias server -keypass 123456 -keystore server.jks -storepass 123456 -validity 365
这里说明一下几个重要的地方,CN=www.javastar.org,这里的www.javastar.org一定要换成你实际要部署的站点的域名,如果是在内网,就要用服务器的hostname,一定不可以用IP,否则,是无法建立SSL链接的。
OU=翊天阁,O=翊天阁,这里可以替换成你自己的组织名称,或者公司名称。
-validity 365这里声明证书有效期为1年。
其他的参数自己可以参考keytool的使用帮助或相关文档。
好了,成功执行上面的命令后,我们在当前命令行所在目录得到server.jks文件,这个就是包含密钥对的基本证书信息库文件。
2、导出证书请求文件
keytool -certreq -alias server -sigalg “SHA1withRSA” -file server.pem -keypass 123456 -keystore server.jks -storepass 123456
这里可以得到一个server.pem的文件。
3、向CA公司申请签发设备证书
将上一步得到的server.pem证书发送给相关的CA公司,CA公司会通过这个申请签发一张设备证书,最后我们会得到一个.cer的文件,比如server.cer。
同时,我们要取得该CA公司的证书链,比如会有CA_ROOT.cer和CA_CA.cer,第一张为CA公司的根证书,第二张为CA公司的签名证书。
4、将CA根证书导入服务器证书库
keytool -import -alias CA_ROOT -keystore server.jks -trustcacerts -storepass 123456 -file CA_ROOT.cer
5、将CA签名证书导入服务器证书库
keytool -import -alias CA_CA -keystore server.jks -trustcacerts -storepass 123456 -file CA_CA.cer
6、使用CA签发的证书回复我们自己生成的包含私钥的证书
keytool -import -alias server -keystore server.jks -trustcacerts -storepass 123456 -file server.cer
7、导出回复成功后的服务器证书
keytool -export -alias server -storepass 123456 -file javastar.org.cer -keystore server.jks
好了,到这里我们需要的设备证书已经ok了。
最后对我们实际有用的是两个文件:server.jks,是服务器证书库,存储了含有私钥的服务器证书,及其证书链,这个就是主要的设备证书了,是放在服务器的SSL配置里面;还有一个是javastar.org.cer,这个是只包含服务器证书公钥的设备证书,是发给用户,让用户放入自己的可信任库的。
第二部分,配置Tomcat的SSL双向链接
1、准备客户端证书
keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore client.p12 -dname “CN=Client,OU=javastar.org,L=nj,ST=js,C=cn” -storepass 123456 -keypass 123456 -validity 365
执行完毕,我们会得到一张p12的客户证书client.p12。
2、导出.cer格式的客户证书
keytool -export -alias client -keystore client.p12 -storetype PKCS12 -storepass 123456 -rfc -file client.cer
执行完毕得到client.cer证书。
3、将客户端证书导入服务器的可信任证书库
keytool -import -v -file client.cer -keystore servertrust.keystore -storepass 123456
执行完毕得到servertrust.keystore,这个是给tomcat服务器端用的。
4、将服务器证书导入客户端可信任证书库
keytool -import -v -file javastar.org.cer -keystore clienttrust.keystore -storepass 123456
执行完毕会得到clienttrust.keystore证书库,留着备用。同时,也可以同样的方法,把CA_ROOT.cer和CA_CA.cer导入。
5、在和tomcat的bin目录并行的目录下新建一个cert文件夹,把server.jks和servertrust.keystore文件拷贝进去。
6、找到tomcat的server.xml文件,找到如下的内容
<!–
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”150″ scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” />
–>
去掉注释,并修改为
<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”
maxThreads=”500″ scheme=”https” secure=”true”
clientAuth=”true” sslProtocol=”TLS”
keystoreFile=”D:/apache-tomcat-6.0.20/cert/server.jks” keystorePass=”123456″
truststoreFile=”D:/apache-tomcat-6.0.20/cert/servertrust.keystore” truststorePass=”123456″/>
这里注意把D:/apache-tomcat-6.0.20/cert修改为你的tomcat实际的路径。
7、启动或者重启tomcat,在浏览器中导入client.p12的证书,然后,在地址栏输入https://www.javastar.org:8443,就会弹出证书选择框,选择证书后,就可以使用SSL协议访问tomcat服务器了。
第三部分,在程序中如何建立与服务器的SSL双向认证链接
其实这个就简单了,以java为例,比如我们现在要访问一个通过SSL双向认证保护的WebService接口,只需要在生成的客户端程序中开始部分加入
System.setProperty(“javax.net.ssl.keyStore”, “D:/client.p12″);
System.setProperty(“javax.net.ssl.keyStorePassword”, “123456″);
System.setProperty(“javax.net.ssl.keyStoreType”, “PKCS12″);
System.setProperty(“javax.net.ssl.trustStore”, “D:/clienttrust.keystore”);
System.setProperty(“javax.net.ssl.trustStorePassword”, “123456″);
System.setProperty(“javax.net.ssl.trustStoreType”, “JKS”);
JVM会自动将证书提交给服务器验证,由于服务器证书也在我们的可信任库,也会自动信任服务器端的证书。
下面的代码可以在需要的时候清除以上的环境内容
System.clearProperty(“javax.net.ssl.keyStore”);
System.clearProperty(“javax.net.ssl.keyStorePassword”);
System.clearProperty(“javax.net.ssl.keyStoreType”);
System.clearProperty(“javax.net.ssl.trustStore”);
System.clearProperty(“javax.net.ssl.trustStorePassword”);
System.clearProperty(“javax.net.ssl.trustStoreType”);
转自https://blog.csdn.net/lucett/article/details/6845386
使用CA签发的服务器证书搭建Tomcat双向SSL认证服务的更多相关文章
- 部署 CA 和 NPS 服务器证书
TechNet 库 Windows Server Windows Server 2008 R2 und Windows Server 2008 按类别提供的 Windows Server 内容 按类别 ...
- 使用openssl搭建CA并颁发服务器证书
本来整理了一份执行脚本,但是没有找到附件功能.只好直接贴当时自己看过的链接了. 文章标题:Openssl Certificate Authority 转载链接:https://jamielinux.c ...
- 关于如何在服务器上搭建tomcat并发布自己的web项目
最近在学习如何在服务起上搭建tomcat,并发布自己的项目,自己是花了一下午的时间才把里面的东西弄明白,各种百度,各种请教大神,真的是备受折磨啊.好了废话不多说,直接进入主题. 1:众所周知,tomc ...
- 自定义SSL证书实现单双向ssl认证记录
自定义SSL证书: 1.ca证书 #openssl genrsa -out ca.key 2048 #openssl req -new -key ca.key -out ca.csr #openssl ...
- Windows2008下RDP采用私有CA服务器证书搭建文档
在中小型公司建立企业根证书颁发机构 (CA) http://www.microsoft.com/china/smb/issues/sgc/articles/build_ent_root_ca.mspx ...
- andorid人员文件上传服务器的搭建(tomcat中)
1.将.war文件复制到tomcat服务器webapps下,启动服务器即可 2.访问工程路径http://localhost:8080/FileUpload/index.jsp即可测试上传 3.测试成 ...
- 信安实践——自建CA证书搭建https服务器
1.理论知识 https简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HT ...
- 自建CA证书搭建https服务器
由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...
- linux下安装Apache(https) 服务器证书安装配置指南
一. 安装准备 1. 安装Openssl 要使Apache支持SSL,需要首先安装Openssl支持.推荐下载安装openssl-0.9.8k.tar.gz 下载Openssl:http: ...
随机推荐
- Servlet.service() for servlet [jsp] in context with path [/Healthy_manager] threw exception [Unable to compile class for JSP] with root cause java.lang.IllegalArgumentException: Page directive: inval
严重: Servlet.service() for servlet [jsp] in context with path [/Healthy_manager] threw exception [Una ...
- C语言面试题分类->宏定义
1.写一个“标准”宏,这个宏输入两个参数并返回较小的一个 答:#define MIN(x, y) ((x)<(y)?(x):(y))//注意x,y要加括号,因为x,y如果有复合运算会出现问题. ...
- JDK8之The type java.util.Map$Entry cannot be resolved
eclipse+tomcat7+jdk1.6上面报错的方式我的解法方法是吧jre8换成6的就好了选中项目->右键->java build path ->找到jre system li ...
- 写一篇博文介绍JSP
一.JSP概述 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起建立的 ...
- 【托业】【跨栏】TEST04
16~20 16 17 18 19 20 REVIEW TEST4
- Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'系列一:
从库报这个错误:Got fatal error 1236 from master when reading data from binary log: 'Could not find first lo ...
- Linux安装常见问题
目录 1. SSL connect error 2. ERROR: certificate error 1. SSL connect error # fatal: unable to access ' ...
- 【Git】修改git远程连接ip
- keycode简记表
keycode值 实际含义 48到57 0到9 65到90 a到z(A到Z) 112到135 F1到F24 8 BackSpace(退格) 9 Tab 13 Enter(回车) 20 Caps_Loc ...
- charles-Andriod 手机手机抓包乱码
然后重启进行进行抓包