`

Tomcat SSL配置——服务端单向认证

阅读更多

----------------------------------------------------------------------------------------------

转自:http://www.diybl.com/course/webjsh/osgl/20071118/86487.html

----------------------------------------------------------------------------------------------

我使用的版本:

Tomcat 5.5 和 6.0
JDK 1.5

配置步骤如下:

 

1. 生成server key:

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

    随后会出现提示输入组织、地区等信息,按情况输入即可。 

 

2. 将证书导入JDK的证书信任库中:

keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass changeit  

 

keytool -import -trustcacerts -alias tomcat -file server.cer -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit 

 

注1) keypass、storepass 似乎都只能用changeit,试过用其他密码,结果在启动tomcat时出现如下异常:

java.io.IOException: Cannot recover key
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.init。

 

 

注2) 由此产生的证书,默认是属于非信任网站之列的。

 

3. copy server.keystore 、server.cer 、cacerts 文件到tomcat根目录;

 

4. 配置tomcat :

修改%TOMCAT_HOME%\conf\server.xml, 找到 

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!-- <Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" /> -->

 

 去掉注释,并在最后加上2个属性:

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
    <Connector 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" />

 

 

注1) 如不要保留http访问,则可以将 <Connector port="8080" ... 那段注释掉。

 

注2) https默认端口为443,将端口配置改为443,则URL无需端口号,如 https://localhost/ (类似http的80端口)。

 

 

分享到:
评论

相关推荐

    ssl双向认证密钥

    6. **SSL握手过程**:在SSL双向认证中,握手过程比单向认证复杂,包括了服务器发送其证书,客户端验证服务器证书并发送自己的证书,服务器验证客户端证书等步骤。 7. **安全性提升**:双向认证能有效防止中间人攻击...

    统一身份认证-CAS配置实现

    #### 三、统一认证配置实现 ##### 基础套件 - CAS Server 3.4.11 - Spring 3 - Hibernate 3 (可选) - DBCP (数据库连接池,可选) - SLF4J (LOG4J) ##### 概念解释 1. **通道安全性**:分为非SSL(HTTP)和SSL...

    Android调用大宝CA国密SSL密码套件(0.99版本)访问国密SSL安全服务的示例代码

    使用方法见:https://blog.csdn.net/upset_ming/article/details/89048916 1. 支持国密SSL单向认证和双向认证 2. 获取服务端的国密数字证书 3. 适用于Android 7.0(API 24)及以上

    Android调用大宝CA国密SSL密码套件(0.99版本)访问HTTPS(国密SSL安全通道)的示例代码

    使用方法见:... 1. Android使用HTTPCLIENT访问国密SSL协议的HTTPS服务 2. 示例代码为单向认证,可支持双向认证 3. 获取服务端的国密数字证书 4. 适用于Android 7.0(API 24)及以上

    使用httpclient无需证书调用https的示例(java调用https)

    接下来,我们将使用这个自定义的`SSLSocketFactory`来创建一个HttpClient实例,并配置它以接受任何证书: ```java import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache....

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

    为了让服务器支持HTTPS,你需要生成SSL证书,然后在Tomcat的`conf/server.xml`中配置`&lt;Connector&gt;`元素,设置`scheme="https"`,`port`为你想要的HTTPS端口,以及`keystoreFile`和`keystorePass`,分别指向SSL证书...

    HTML5 webSocket

    3. **编写WebSocket服务端**:创建一个继承自`javax.websocket.Endpoint`的类,覆盖其生命周期方法,如`onOpen`、`onClose`、`onMessage`等,处理客户端连接、关闭和消息接收。 4. **编写WebSocket客户端**:在...

    JAX-WS之旅(二)

    9. **安全与认证**: JAX-WS可以通过SSL/TLS加密、WS-Security、WS-Trust等标准实现Web服务的安全性,确保数据传输的机密性和完整性。 10. **工具支持**: 开发者可以使用诸如Apache CXF、Metro等JAX-WS实现工具,...

    BlazeDS开发者指南.pdf

    开发者需要设置开发环境,包括安装Java SDK和Flex SDK,配置Tomcat服务器,并将BlazeDS库添加到项目中。接着,创建服务适配器以连接后端数据源,编写客户端Flex或AJAX代码以调用这些服务。最后,部署BlazeDS配置文件...

    web service axis 1.6

    - **启动Axis服务器**:通常通过`wsdd2java`和`java2wsdd`工具进行配置,或使用Tomcat等应用服务器集成。 - **创建Web服务**:编写Java服务类,然后使用 Axis 的 wsdl2java 工具从Java类生成WSDL。 - **部署Web...

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

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

Global site tag (gtag.js) - Google Analytics