`
gwh_08
  • 浏览: 335723 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

tomcat+ssl服务器端单向认证

    博客分类:
  • ssl
 
阅读更多
<!—  
    Define a SSL HTTP/1.1 Connector on port 8443  
    This connector uses the JSSE configuration, when using APR, the   
    connector should be using the OpenSSL style configuration  
    described in the APR documentation   
    --> 
     
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
              maxThreads="150" scheme="https" secure="true" 
              clientAuth="false" sslProtocol="TLS"   
              keystoreFile="C:\Documents and Settings\Administrator\.keystore" 
              keystorePass="SUNCHIS" 
              ciphers="sunchis" 
    /> 

 

Tomcat既可以作为独立的Servlet容器,也可以作为其他HTTP服务器附加的Servlet容器。如果Tomcat在非独立模式下工作,通常不必配置SSL,由它从属的HTTP服务器来实现和客户的SSL通信。Tomcat和HTTP服务器之间的通信无须采用加密机制,HTTP服务器将解密后的数据传给Tomcat,并把Tomcat发来的数据加密后传给客户。

如果Tomcat作为独立的Java Web服务器,则可以根据安全需要,为Tomcat配置SSL,它包含以下两个步骤:

1) 准备安全证书。

(2) 配置Tomcat的SSL连接器(Connector)。
一、准备安全证书

前面的《SSL简介》一文中讲过,获得安全证书有两种方式:一种方式是到权威机构购买,还有一种方式是创建自我签名的证书。这里就介绍第二种获取证书的方式,毕竟免费的嘛!

SUN公司提供了制作证书的工具keytool。在JDK 1.4以后的版本中都包含了这一工具,它的位置为<JAVA_HOME>\bin\keytool.exe。此外,也可以到SUN的网站上下载,下载地址如下:

http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

通过keytool工具创建证书的命令为:

keytool -genkeypair -alias "tomcat" -keyalg "RSA" 

 以上命令将生产一对非对称密钥和自我签名的证书,这个命令中几个参数的意思如下:

    -genkeypair:生成一对非对称密钥。
    -alias:指定密钥对的别名,该别名是公开的。
    -keyalg:指定加密算法,本例中的采用通用的RAS加密算法

首先会提示输入keystore的密码,这里我输入的密码是sunchis。

然后提示输入个人信息,如姓名、组织单位和所在城市等,只要输入真实信息即可。

接着会提示输入信息是否正确,输入“y”表示信息正确。

最后要求输入<Tomcat>的主密码,这里设置与keystore相同的密码,因此只需根据提示按回车键即可。

keytool生成证书的过程

以上命令将在操作系统的用户目录下生成名为“.keystore”的文件。我当前登录到操作系统的用户名是Administrator,那么在Wnidows下,文件的位置为:

C:\Documents and Settings\Administrator\.keystore

 

另外,如果希望生成的keystore文件存放在其他目录中,可以再keytool命令中加入-keystore参数,这个参数用来指定keystore文件的存放位置,例如以下命令将在D:\下生成名为“sunchis.keystore”的文件:

keytool -genkeypair -alias "tomcat" -keyalg "RSA" –keystore "D:\sunchis.keystore" 

 查看已生成的证书的命令为:

keytool -list -keystore "C:\Documents and Settings\XuLiang\.keystore" 

 二、配置SSL连接器

在Tomcat的server.xml文件中,已经提供了现成的配置SSL连接器的代码,只要把<Connector>元素的注释去掉即可:

<!—  
    Define a SSL HTTP/1.1 Connector on port 8443  
    This connector uses the JSSE configuration, when using APR, the   
    connector should be using the OpenSSL style configuration  
    described in the APR documentation   
    --> 
     
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
              maxThreads="150" scheme="https" secure="true" 
              clientAuth="false" sslProtocol="TLS"   
              keystoreFile="C:\Documents and Settings\Administrator\.keystore" 
              keystorePass="SUNCHIS" 
              ciphers="sunchis" 
    /> 

 实际上,基于SSL的HTTPS使用的默认端口是443。但Tomcat在这里将HTTPS端口设置为8443。<Connector>配置里的一些属性参数如下:

clientAuth 	如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证

 

keystoreFile 	指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<CATALINA_HOME>(Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为“.keystore”的文件。
 keystorePass     指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用“changeit”作为默认密码。

 

sslProtocol 	指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。

 

ciphers 	指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。

 三、访问支持SSL的Web站点

由于SSL技术已建立到绝大多数浏览器和Web服务器程序中,因此,仅需在Web服务器端安装服务器证书就可以激活SSL功能了。

如果上述的第一步和第二步已经配置完毕,那么就可以重启Tomcat服务器了,然后从IE浏览器中以HTTPS方式来访问在Tomcat服务器上的任何一个Web应用。现在我们就来访问一下这个地址:

https://localhost:8443

当Tomcat收到这一HTTPS请求后,会向客户的浏览器发送服务器的安全证书,IE浏览器接受到证书后,将向客户显示安全警报窗口,如下图:

在安全警报窗口中的第一行提示信息为:“您与该站点交换的信息不会被其他人查看或更改。但该站点的安全证书有问题。”这句话的意思是,一方面,该安全证书非权威机构颁发,不能作为有效的验证对方身份的凭据。另一方面,假如与对方通信,通信数据会经过加密后在网络上传输,因此不会被他人监视或修改。

如果单击“【否】”按钮,就表示不信任该服务器出示的安全证书,因此浏览器会结束与Tomcat服务器的通信。

如果单击“【是】”按钮,表示信任Tomcat服务器出示的安全证书,浏览器将建立与Tomcat服务器的SSL会话,Tomcat服务器就会把客户请求的数据发送过来。

如果单击“【查看证书】”按钮,将出现证书窗口,如下图:

从图中可以看到证书的“颁发者”和“颁发给”都是同一个人,这说明是自我签名的证书,非权威机构颁发。

从证书的详细信息中可以看出,在证书中公布了证书发送者的身份和公钥。而私钥只有证书发送者拥有,不会向证书接受者公开。

  • 大小: 62 KB
  • 大小: 47.6 KB
  • 大小: 34.5 KB
  • 大小: 68.2 KB
分享到:
评论

相关推荐

    AndroidHttpClient访问Tomcat双向SSL验证服务器.pdf

    - 最后一步是对`Android WebView`进行配置,使其能够访问`Tomcat`的双向SSL服务器。 - 由于默认情况下`WebView`可能不支持SSL双向验证,因此可能需要修改`WebView`的源码以实现这一功能。 - 完成研究后将单独撰写...

    Tomcat_SSL配置[归类].pdf

    确认导入并信任后,服务器端证书认证完成。 在实际部署过程中,需要注意的是,每个环节的证书和KeyStore的管理都需要谨慎处理,以防止安全漏洞。此外,根据实际需求,可能还需要配置信任的证书颁发机构(CA),以及...

    ssl双向认证密钥

    1. **keystore**:这是服务器端使用的文件,包含了服务器的私钥和证书。生成keystore通常使用Java的`keytool`命令行工具。`keytool`可以创建一个新的keystore,并在其中生成自签名的服务器证书。这个证书包含了...

    利用keytools为tomcat 7配置ssl双向认证的方法

    单向认证主要是服务器端向客户端提供证书以验证自身身份,而双向认证则在单向认证的基础上,还要求客户端向服务器提供证书以验证客户端的身份。这种方式增强了安全性,适用于需要更高安全级别的场景,例如网银系统、...

    AndroidHttps服务器端和客户端简单实例

    本实例将探讨如何在Android环境下实现HTTPS服务器端和客户端的简单交互,支持单向和双向验证。以下是对实现这一功能所需的知识点的详细解释: ### 1. 安装与配置环境 首先,确保你已经安装了以下工具: - **...

    WEB服务器上配置

    通过Java的数据证书管理工具Keytool生成服务器端的数字证书,这个证书用于在HTTPS连接中提供服务器的身份验证。 **实践步骤:** 1. **生成服务器证书:** 进入到JDK安装目录的bin文件夹,使用Keytool命令生成...

    Openssl与数字证书

    1. **生成自签名证书**:使用OpenSSL生成服务器端的私钥和自签名证书。 2. **导入证书到Keystore**:将生成的自签名证书导入到Tomcat的keystore中。 3. **配置Tomcat服务器**:编辑Tomcat的`server.xml`配置文件,...

    HTML5 webSocket

    - **跨域限制**:WebSocket也有同源策略,需要在服务器端配置允许跨域。 - **浏览器兼容性**:不是所有浏览器都支持WebSocket,需要考虑旧版本浏览器的替代方案,如使用轮询或者长轮询等技术。 - **安全问题**:...

    BlazeDS开发者指南.pdf

    BlazeDS开发者指南是针对WEB开发者的专业参考资料,主要介绍了如何使用BlazeDS这一服务器端技术来构建富互联网应用程序(RIA)。BlazeDS是Adobe公司推出的一个开源项目,它为Flex和AJAX应用提供了实时数据通信,使得...

    超级有影响力霸气的Java面试题大全文档

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。  对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器...

Global site tag (gtag.js) - Google Analytics