使用Openssl为Tomcat配置SSL(双向认证)
来源:互联网 发布:淘宝客云建站 编辑:程序博客网 时间:2024/05/16 15:23
转载请注明出处:http://blog.csdn.net/sunyujia/
其实我手头上有许多正规ca颁发的证书不过都是过期的,每次使用都需要调整系统日期,不方便,所以就想自己做一套以备平时测试使用。
本文只介绍如何配置,至于理论性的东西请读者自行 百度或者google 网上很多
配置步骤:
1.安装检查openssl环境
安装openssl的方法见http://blog.csdn.net/sunyujia/archive/2008/10/03/3014667.aspx
安装完成后将openssl/bin添加到环境变量path中,该目录下正常有4个文件
openssl.exe,ssleay32.dll,libeay32.dll,openssl.cnf
注意:cnf扩展名会被操作系统当成快捷方式,看不到扩展名,在dos下使用dir就可以看到。
进入cmd后输入openssl可能会提示
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
提示找不到openssl.cnf ,没有关系在输入openssl命令前添加环境变量OPENSSL_CONF即可。
set OPENSSL_CONF=openssl.cnf
本教程使用openssl.cnf默认配置即可无需修改。
2.在openssl安装目录(bin目录的上一级目录,有openssl.cnf文件的目录即可)新建如下批处理脚本
在贴脚本前我先说明下脚本实现主要功能:
建立CA证书
签发Server端证书
签发Client端证书
用keytool生成tomcat使用的jks文件
此批处理文件较长,我已检查多次如果错误请读者指正,谢谢!
- @echo off
- echo.
- echo.
echo 单向SSL验证 TOMCAT_HOME/conf/server.xml文件配置示例
echo. - echo My Blog:ht^tp://blog.csdn.net/sunyujia/
- echo.
- set OPENSSL_CONF=openssl.cnf
- echo.
- echo 制作根证书
- echo 1.创建根证私钥
- if not exist root-key.key (
- echo 创建一个不加密的PEM格式的私钥root-key.key
- rem genrsa 用于生成一个 RSA 私钥
- rem 1024是私钥的长度,默认是 512 ,最大是 1024
- openssl genrsa -out root-key.key 1024
- ) else (
- echo 私钥root-key.key已经存在
- )
- echo 2.创建根证书请求文件
- if not exist root-req.csr (
- echo 使用root-key.key私钥 创建一个根证书请求文件root-req.csr
- rem -new 产生一个新的CSR, 它会要用户输入创建CSR的一些必须的信息.
- rem 至于需要哪些信息,是在config文件里面定义好了的.
- rem -key 指明我们的私有密钥文件名.允许该文件的格式是PKCS#8.
- rem 如果-key没有被set, 那么就将根据config文件里的信息先产生一对新的RSA密钥
- rem -keyform 指定输入的私有密钥文件的格式是DEM还是DER.DER格式采用ASN1的DER标准格式。
- rem PEM格式就是base64编码格式.
- openssl req -new -out root-req.csr -key root-key.key -keyform PEM
- ) else (
- echo 根证书请求文件root-req.csr已经存在
- )
- echo 3.自签根证书
- if not exist root-cert.cer (
- echo 使用root-req.csr证书和root-key.key私钥签发x509格式的自签根证书root-cert.cer
- rem -in 要处理的CSR的文件名称,只有-new和-newkey俩个option没有被set,本option才有效
- rem -signkey 签名私钥
- rem -days证书的有效日期
- openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial -days 3650
- ) else (
- echo 自签根证书root-cert.cer已经存在
- )
- echo 4.导出p12格式根证书
- if not exist root.p12 (
- openssl pkcs12 -export -clcerts -in root-cert.cer -inkey root-key.key -out root.p12
- ) else (
- echo p12格式根证书root-cert.cer已经存在
- )
- echo 生成root.jks文件
- set password=
- echo 输入jks的密码,密码至少必须为6个字符:
- set /p password=
- echo 密码是 %password% 稍后提示 信任这个认证?输入 y 即可
- echo.
- if exist root.jks (
- del root.jks
- )
- keytool -import -v -trustcacerts -storepass %password% -alias root -file root-cert.cer -keystore root.jks
- echo 已生成root.jks文件
- echo.
- echo 制作服务端证书
- call :sub server
- echo.
- echo 制作客户端证书
- call :sub client
- goto :end
- :sub
- echo 1.创建私钥
- if not exist %1-key.key (
- openssl genrsa -out %1-key.key 1024
- ) else (
- echo 私钥%1-key.key已经存在
- )
- echo 2.创建证书请求文件
- if not exist %1-req.csr (
- openssl req -new -out %1-req.csr -key %1-key.key
- ) else (
- echo 证书请求文件%1-req.csr已经存在
- )
- echo 3.自签证书
- if not exist %1-cert.cer (
- openssl x509 -req -in %1-req.csr -out %1-cert.cer -signkey %1-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650
- ) else (
- echo 自签证书%1-cert.cer已经存在
- )
- echo 4.导出p12格式证书
- if not exist %1.p12 (
- openssl pkcs12 -export -clcerts -in %1-cert.cer -inkey %1-key.key -out %1.p12
- ) else (
- echo 自签证书%1.p12已经存在
- )
- goto :eof
- :end
- echo.
- echo 整理归档生成的证书文件
- if not exist root (
- md root
- )
- move root.p12 root/root.p12
- move root-cert.cer root/root-cert.cer
- move root-key.key root/root-key.key
- move root-req.csr root/root-req.csr
- move root-cert.srl root/root-cert.srl
- move root.jks root/root.jks
- if not exist server (
- md server
- )
- move server.p12 server/server.p12
- move server-cert.cer server/server-cert.cer
- move server-key.key server/server-key.key
- move server-req.csr server/server-req.csr
- if not exist client (
- md client
- )
- move client.p12 client/client.p12
- move client-cert.cer client/client-cert.cer
- move client-key.key client/client-key.key
- move client-req.csr client/client-req.csr
- if not exist 证书 (
- md 证书
- )
- move root 证书/root
- move client 证书/client
- move server 证书/server
- echo 整理完毕
- pause
最终生成一个证书目录
我们所需的文件列表
证书/root/root.jks
证书/root/root.p12 可选
证书/server/server.p12
证书/client/client.p12
3.配置tomcat的conf/server.xml文件
将root.jks和server.p12 复制到tomcat目录下,文件可以不放置在这里如下配置支持绝对路径和相对路径。
在conf/server.xml中加入如下配置
- <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
- maxThreads="150" scheme="https" secure="true"
- clientAuth="true" sslProtocol="TLS"
- acceptCount="100"
- keystoreFile="server.p12"
- keystorePass="密码"
- keystoreType="PKCS12"
- truststoreFile="root.jks"
- truststorePass="密码"
- truststoreType="JKS"
- />
4.简单验证
登录https://127.0.0.1/会提示请求的网站要求证书,将client.p12导入到浏览器中即可
位置在internet选项-内容-证书
client.p12导入到个人证书选项卡里面
root.p12导入到受信任的根证书颁发机构里面
本文测试环境tomcat6
本文参考文章:
http://blog.chinaunix.net/u/12066/showart_491871.html
http://hi.baidu.com/favesoft/blog/item/9b94dbef3e573735acafd5ff.html
http://blog.chinaunix.net/u/12066/showart_491899.html
http://www.icnote.com/read.php?80
http://www.dedecms.com/web-art/fuwuqi/20060913/26244.html
- 使用Openssl为Tomcat配置SSL(双向认证)
- Tomcat配置使用SSL双向认证(使用openssl生成证书)
- Tomcat配置SSL双向认证
- SSL双向认证Tomcat配置
- tomcat配置SSL双向认证
- 配置使用SSL双向认证
- 使用java内置keytool配置tomcat双向SSL认证
- Tomcat双向SSL认证的配置
- tomcat实现SSL配置(双向认证)
- Tomcat 6中配置SSL双向认证
- TOMCAT-SSL双向认证-配置实例
- TOMCAT-SSL双向认证-配置实例
- Tomcat 6中配置SSL双向认证
- TOMCAT-SSL双向认证-配置实例
- tomcat中配置SSL双向认证
- TOMCAT-SSL双向认证-配置实例
- TOMCAT-SSL双向认证-配置实例
- TOMCAT-SSL双向认证-配置实例
- 安装 SQL Server 2005 的硬件和软件要求
- C/C++编译的程序占用的内存
- 学计算机学生的困惑
- 一个程序员的奋斗历程——来自百度贴吧《程序员》
- 3Q
- 使用Openssl为Tomcat配置SSL(双向认证)
- 组合框
- 宁静以致远——浅析《临江仙.滚滚长江东逝水》
- java多线程设计模式
- 仿真windows?
- 收藏的js表单验证控制码大全
- 如何在WORD2007去掉封面上(首页的)页码
- 控制台程序不显示控制台
- 专科教育与本科教育的区别 ——网上摘抄