`

Tomcat SLL加密(opensll方式)

 
阅读更多

 

转自 http://blog.csdn.net/STK_tianwen/article/details/6298648

 

                   Tomcat 双向认证

不过我按照上面的步骤做下来,https的服务起不来,总是提示证书文件不存在或者格式非法。搞了好久终于搞定了,在这里总结一下。

 

环境信息:


软件                            版本                                                   安装路径


Tomcat                       apache-tomcat-7.0.11                      D:/tomcat/apache-tomcat-7.0.11

OpenSSL                    OpenSSL 0.9.8k 25 Mar 2009           D:/OpenSSL

JDK                             jdk1.6.0_12                                      D:/Program Files/Java/jdk1.6.0_12


 

说明:


我的Openssl使用的是工具包,就是目录下只有一些exe文件和.manifest文件什么的。根据后面步骤的需要我们还需要做如下工作。

1、从Openssl的带源代码的完整包的openssl-x.x.x/apps目录下拷贝一个Openssl.cnf配置文件放在D:/OpenSSL下

2、在D:/OpenSSL下面创建ca、jks、server、client四个文件夹。

3、下面步骤中红色标识的是我曾经遇到的问题,或者跟原文不一样的地方。

 

 

开始:


一:生成CA证书

 

目前不使用第三方权威机构的CA来认证,自己充当CA的角色。

网上下载一个openssl软件

1.       创建私钥 :

D:/OpenSSL>openssl genrsa -out ca/ca-key.pem 1024

2.创建证书请求 :

注意:这一步我执行是提示缺少openssl文件,这就是为什么我们需要拷贝一个openssl.cnf文件到这里的原因。

         当然也可以使用 -config 参数指定一个别的完整路径或者自己写一个简单的配置文件。偶是不会写啦^_^

D:/OpenSSL>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf 

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:zhejiang

Locality Name (eg, city) []:hangzhou

Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision

Organizational Unit Name (eg, section) []:test

Common Name (eg, YOUR name) []:root

Email Address []:sky

3.自签署证书 :

D:/OpenSSL>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

4.将证书导出成浏览器支持的.p12格式 :

D:/OpenSSL>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

密码:changeit      

二.生成server证书。

1.创建私钥 :

D:/OpenSSL>openssl genrsa -out server/server-key.pem 1024

2.创建证书请求 :

D:/OpenSSL>openssl req -new -out server/server-req.csr -key server/server-key.pem -config openssl.cnf

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:zhejiang

Locality Name (eg, city) []:hangzhou

Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision

Organizational Unit Name (eg, section) []:test

Common Name (eg, YOUR name) []:localhost   注释:一定要写服务器所在的ip 地址 //红色这里是本机测试,所以我写localhost

Email Address []:sky

3.自签署证书 :

D:/OpenSSL>openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

4.将证书导出成浏览器支持的.p12格式 :

D:/OpenSSL>openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12

密码:changeit

三.生成client证书。

1.创建私钥 :

D:/OpenSSL>openssl genrsa -out client/client-key.pem 1024

2.创建证书请求 :

D:/OpenSSL>openssl req -new -out client/client-req.csr -key client/client-key.pem -config openssl.cnf

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:zhejiang

Locality Name (eg, city) []:hangzhou

Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision

Organizational Unit Name (eg, section) []:test

Common Name (eg, YOUR name) []:sky

Email Address []:sky      注释:就是登入中心的用户(本来用户名应该是Common Name ,但是中山公安的不知道为什么使用的Email Address ,其他版本没有测试)

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:123456

An optional company name []:tsing

3.自签署证书 :

D:/OpenSSL>openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

4.将证书导出成浏览器支持的.p12格式 :

D:/OpenSSL>openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12

密码:changeit

四.根据ca证书生成jks文件

 

命令提示行下到jre目录下执行 keytool -keystore C:/openssl/bin/jks/truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file C:/openssl/bin/ca/ca-cert.pem

到jre

五.配置tomcat ssl

修改conf/server.xml。原文是5.5和6.0版本的配置,我用的是7.0,配置如下。

xml 代码

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="server.p12 " keystorePass="changeit" keystoreType="PKCS12"
               truststoreFile="truststore.jks " truststorePass="222222" truststoreType="JKS"
               SSLCertificateFile="../server-cert.pem" 
               SSLCertificateKeyFile="../server-key.pem"
 />

      红色部分的配置原文没有提到,我在启动tomcat时总是提示证书不存在或者格式非法,搞了好久=.=!

      后来在帮助文档中看到这两个配置才找到原因。

      这里使用到了四个文件,各个文件都是在前面的步骤中生成的。四个文件都是放在tomcat的根目录下。

      蓝色标识的server.p12和truststore.jks这两个文件需要放在tomcat的根目录下。

      红色的server-cert.pem和server-key.pem默认是放在tomcat的bin文件夹下的,我放在了根目录下,所以这里使用了相对路径../。

六.导入证书

将ca.p12,client.p12分别导入到IE中去(打开IE->;Internet选项->内容->证书)。

ca.p12导入至受信任的根证书颁发机构,client.p12导入至个人

 

七.验证ssl配置是否正确访问你的应用http://localhost :8443/ ,如果配置正确的话会出现请求你数字证书的对话框。

 

验证

在我验证时,我没有导入ca.p12和client.p12也能访问http://localhost:8443,只是提示证书不安全。安装了以后也没有变化。是不是没有对客户端进行验证?

 

 

 

 

               Tomcat单向认证

 

转自 http://www.iteye.com/topic/347719

 

在命令提示符窗口,进入Tomcat目录,执行以下命令: 

keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600 

通过以上步骤生成server.keystore证书文件、 

 

将servlet.xml一下的的注释打开(最好拷贝此段) 

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->   

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

                     port="8443" maxHttpHeaderSize="8192"   

           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"   

           enableLookups="false" disableUploadTimeout="true"   

           acceptCount="100" scheme="https" secure="true"   

           clientAuth="false" sslProtocol="TLS"                    

           keystoreFile="server.keystore"     

           keystorePass="changeit"/>  

到这一步访问https;//ip:8443/item 

 

一般Tomcat默认的SSL端口号是8443,但是对于SSL标准端口号是443,这样在访问网页的时候,直接使用https而不需要输入端口号就可以访问,如https://loalhost/webserver 

想要修改端口号,需要修改Tomcat的server.xml文件: 

1.non-SSL HTTP/1.1 Connector定义的地方,一般如下: 

     <Connector port="80" maxHttpHeaderSize="8192" 

                maxThreads="500" minSpareThreads="25" maxSpareThreads="75" 

                enableLookups="false" redirectPort="443" acceptCount="100" 

                connectionTimeout="20000" disableUploadTimeout="true" /> 

将其中的redirectPort端口号改为:443 

2.SSL HTTP/1.1 Connector定义的地方,修改端口号为:443,如下: 

<Connector     

   port="443" maxHttpHeaderSize="8192" 

   maxThreads="150" minSpareThreads="25" 

   maxSpareThreads="75" 

   enableLookups="false" 

   disableUploadTimeout="true" 

   acceptCount="100" scheme="https" 

   secure="true" 

   clientAuth="false" sslProtocol="TLS" 

   keystoreFile="conf/tomcat.keystore" 

   keystorePass="123456" /> 

3.AJP 1.3 Connector定义的地方,修改redirectPort为443,如下: 

     <Connector port="8009" 

                enableLookups="false" redirectPort="443" protocol="AJP/1.3" /> 

 

重新启动Tomcat就可以了。到这一步可以形成访问方式 http://ip/item 

 

到tomcat下面的webapps下面的ROOT下面的index.jsp文件的内容 

<?xml version="1.0" encoding="ISO-8859-1"?> 

  <%response.sendRedirect("/item");%> 

 

修改web.xml文件的内容 

<?xml version="1.0" encoding="ISO-8859-1"?> 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 

    version="2.4"> 

 

  <display-name>Welcome to Tomcat</display-name> 

  <description> 

     Welcome to Tomcat 

  </description> 

 

  <welcome-file-list> 

   <welcome-file>/index.jsp</welcome-file> 

  </welcome-file-list> 

</web-app> 

删除lib目录下的lib文件 

重启Tomcat服务器,在这一步可以直接通过https:ip来访问项目 

分享到:
评论

相关推荐

    opensll 加密解密

    1. **对称加密**:这是最基本的数据加密方式,如AES(高级加密标准)、DES(数据加密标准)和3DES(三重DES)。对称加密使用相同的密钥进行加密和解密,速度快,适合大量数据的处理。在OpenSSL中,可以使用`openssl ...

    QtWebsocket SLL加密通信Demo(包含客户端和服务端 QTcreator项目).rar

    在本文中,我们将深入探讨如何使用Qt库中的QWebSocket实现SSL加密通信,特别是在Windows和Linux双平台上。首先,让我们理解一下关键概念。 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双方进行...

    Win64OpenSSL-1_0_2u(win10可用).exe

    OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。OpenSSL漏洞不仅影响以https开头的网站,黑客还可利用此漏洞直接对个人电脑发起"心脏出血"(Heartbleed)攻击。据分析,...

    openssl书籍

    6. **API使用**:解析OpenSSL的C语言接口,包括加密、解密、哈希计算、随机数生成等函数的用法。 7. **实战案例**:提供实际编程示例,如构建HTTPS服务器、实现加密文件传输等,帮助读者巩固理论知识。 8. **错误...

    openssl数字签名和加密

    在IT领域,尤其是在网络安全和数据保护方面,OpenSSL库是一个至关重要的工具,它提供了丰富的功能,包括加密、解密、数字签名以及证书管理等。在这个主题中,我们将深入探讨"openssl数字签名和加密",主要关注如何在...

    openssl-win32绿色版

    **OpenSSL介绍** OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。在Windows平台上,OpenSSL通常以静态库...

    QTcpSocket SLL加密Demo(包含客户端和服务端,QTCreator项目).rar

    QTcpSocket是Qt库中的一个类,用于处理TCP网络通信,它是Qt对标准C++套接字库的封装,提供了一种方便的方式来实现客户端和服务器之间的数据传输。在这个"QTcpSocket SSL加密Demo"中,重点是展示了如何在QTcpSocket的...

    适用于Windows平台的OpenSSL(v3.0.4)安装包.zip

    OpenSSL是一款开源的加密库,包含了各种安全协议和算法,如SSL/TLS协议以及常用的哈希函数、RSA、DSA等公钥加密算法。在Windows平台上,OpenSSL的安装包通常包含两个版本:完整版和轻量级版。"Win64OpenSSL-3_0_4....

    OpenSSL 最新编译后的文件

    OpenSSL 是一个强大的安全套接层(SSL/TLS)加密库,它包含了各种加密算法、常用的密钥和证书处理工具,以及SSL协议实现。在IT领域,OpenSSL被广泛应用于服务器端的安全通信,如HTTPS、FTP、SMTP等协议的加密传输。...

    安装openssl和openssl-develd 的依赖包

    这里我们关注的是“openssl”和“openssl-devel”这两个关键组件,它们是实现安全套接字层(SSL)和传输层安全(TLS)协议的基础。SSL/TLS协议用于加密网络通信,确保数据在传输过程中不被窃取或篡改。 **openssl**...

    OpenSSL 1.1.1b Windows版 openssl.exe

    在Windows环境中,这些文件的使用方式通常是将它们放置在系统的PATH环境变量所包含的目录下,这样就可以在任何地方通过命令行运行 `openssl.exe` 命令。或者,如果你的项目需要使用 OpenSSL,可以将这些库文件与你的...

    openssl-3.1.1.zip

    Openssl-3.1.1, a binary pre-built version of Windows platform, can be used for the dependence of webassembly packaging of rust on openssl. You can also get it from the following address. ...

    Qt 低版本可以用的openssl库(直接用)

    在开发过程中,有时我们需要集成加密功能,这时OpenSSL库就显得尤为重要。OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时也包含了大量的加密算法、证书处理和其他功能。 标题"Qt低版本...

    QTwindows下OpenSSL的使用

    OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时也包含了许多常用的加密算法、证书处理等功能。本教程将详细介绍如何在Qt Windows平台下配置和使用OpenSSL。 首先,你需要下载适用于...

    openssl-1.0.2c win x64静态库

    - 加密:OpenSSL提供了大量的加密算法,如AES、DES、Blowfish等,可以用于数据的加密解密。 - 密钥管理:包括密钥生成、存储和交换,支持RSA、DSA、ECDSA等多种公钥算法。 - 数字签名:利用非对称加密进行数据...

    易语言调用openssl实现RSA加解密

    做了一些小修改,主要是演示 RSA有关 加密和解密 安全性的部分。公钥加密,必须用私钥才能解密,有公钥无法解密。私钥加密,必须用公钥才能解密,有私钥无法解密。回来实际使用中,本地保存公钥,发送数据时候数据...

    openssl-1.1.0j.tar.gz.zip

    《OpenSSL 1.1.0j:加密库的核心与应用》 OpenSSL 是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。在这个讨论中...

    openssl(arm64,armv7s,armv7,x86_64,i386)

    OpenSSL 是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现库,同时也包含了大量的加密算法、证书处理和其他安全相关功能。在 iOS 开发中,OpenSSL 经常被用于提供加密通信、数据保护以及安全认证等关键...

    Win32_64OpenSSL完整包和light包_版本1.1.1d.rar

    完整包包含了所有OpenSSL的功能,包括开发所需的头文件和库文件,以及用于命令行工具,如`openssl.exe`,这个工具可以执行各种加密操作,如生成RSA密钥对、创建自签名证书等。对于开发者而言,完整包是必不可少的,...

    Windows OpenSSL-1_1_1b 内含32位和64位版本

    安装完成后,OpenSSL的命令行工具(如openssl.exe)将可以用来进行SSL/TLS相关操作,例如生成证书、进行加密解密等。 总的来说,这个压缩包提供了一个方便的途径,让用户能够在Windows环境中快速部署OpenSSL,无论...

Global site tag (gtag.js) - Google Analytics