tomcat_ssl配置

简介:

一、TOMCAT自签名
1. 生成 server key :
以命令行方式切换到目录%TOMCAT_HOME%,在command命令行输入如下命令(jdk1.4以上带的工具): 
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600 
用户名输入域名,如localhost(开发或测试用)或hostname.domainname(用户拥有的域名),其它全部以 enter 跳过,最后确认,此时会在%TOMCAT_HOME%下生成server.keystore 文件。
注:参数 -validity 指证书的有效期(天),缺省有效期很短,只有90天。

2.将证书导入的JDK的证书信任库中:
这步对于Tomcat的SSL配置不是必须,但对于CAS SSO是必须的,否则会出现如下错误:edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator。。。
导入过程分2步,第一步是导出证书,第二步是导入到证书信任库,命令如下:
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(是导入时用的密码)

如果有提示,自己填。
第二步出错不影响TOMCAT的SSL使用。
其他有用keytool命令(列出信任证书库中所有已有证书,删除库中某个证书):
keytool -list -v -keystore D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts
keytool -delete -trustcacerts -alias tomcat  -keystore  D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass changeit
3.修改server.xml文件:
tomcat6加以下内容在SSL下面
  <Connector className="org.apache.catalina.connector.http.HttpConnector" 
port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true" 
               keystoreFile="d:/program files/java/jre6/bin/server.keystore" keystorePass="changeit"
   clientAuth="false" sslProtocol="TLS" />
4.可以访问了。

5.双向认证:
修改 clientAuth="false" 为 clientAuth="true" 即可。
6.签发用户证书

7.读取客户端证书项。
JAVA中:
<%@ page  import="java.security.cert.X509Certificate" contentType="text/html; charset=GB2312" %>
<pre>
<%
    java.security.cert.X509Certificate[] certs=null;
    try{
            certs=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");

                if (certs == null) {
                        out.println("No certificates");
                } else if (certs.length == 0) {
                        out.println("Certificates length is 0");
                } else {
                        java.security.cert.X509Certificate cert = certs[0];
                        String dn = cert.getSubjectX500Principal().toString();
                        out.println("SubjectDN: " + dn);
                        out.println();
                        out.println("------------------certification detail--------------------");
                        out.println(cert);
                        out.println("----------------------------------------------------------");
                }
    } catch(Exception e){
                out.println("Exception=" + e.getMessage());
    }
//如果只打印DN
out.println( (((X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate"))[0].getSubjectX500Principal().toString()));
%>
</pre>

二、用OPENSSL签发
1.生成自签密钥对
openssl genrsa -des3 -out key/cakey.pem 1024
输入密码,如123456
2.生成自签名根证书
openssl req -new -x509 -days 3650 -key key/cakey.pem -out cacert.pem -config openssl.cnf
3.用openssl为tomcat生成密钥对
openssl req -newkey rsa:1024 -keyout key/serverkey.pem -keyform PEM -out req/serverreq.pem -config openssl.cnf
4.用openssl签发设备证书
openssl ca -in req/serverreq.pem -out servercert.cer -cert cacert.pem -keyfile key/cakey.pem(用哪个根签,指定私钥) -notext -config openssl.cnf -days 3600
如果报“The organizationName field needed to be the same in the”之类的错误,修改openssl.cnf文件(用EDITPLUS打开)中CA_default节中的policy = policy_match为policy = policy_anything(76行)
5.生成P12设备证书
openssl pkcs12 -export -in servercert.cer -inkey key/serverkey.pem  -out server.p12 -name server -CAfile key/cacert.pem 
6.在TOMCAT中导入信任证书链(openssl自签的根证书)
keytool -import -v -trustcacerts  -alias my_ca_root -file cacert.pem -storepass changeit -keystore server.keystore
7.在TOMCAT中启用这个证书
把server.p12和server.keystore拷到TOMCAT下的conf/下。
修改server.xml,增加以下内容:
keystoreFile="conf/server.p12" keystorePass="111111" keystoreType="PKCS12" 
               truststoreFile="conf/server.keystore" truststorePass="changeit" truststoreType="JKS"
可以删除server.keystore,重做;只能指定一个服务器证书。

8.查看server端证书
   keytool -list -v -keystore server.keystore  
9.签发客户端证书:
A:生成密钥对
openssl genrsa -des3 -out client.key 1024
B:生成请求
openssl req -new -key client.key -out client.csr -config openssl.cnf
C:签发证书(1800天)
openssl ca -in client.csr -out client.crt -cert cacert.pem -keyfile key/cakey.pem -notext -config openssl.cnf -days 1800
D:导出为P12格式
openssl pkcs12 -export -inkey client.key -in client.crt -out client.p12


三、用java申请,第三方CA签发证书
1、生成密钥
keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -genkey -keyalg RSA 
2、生成证书请
keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -certreq -file serverreq.pem
3、用第三方CA签发证书
openssl ca -in serverreq.pem -out servercert.pem -config openssl.cnf -cert cacert.pem -keyfile key/cakey.pem(用哪个根签,指定私钥) -notext -days 3600
4、先导入CA的证书:
keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem
5、再导入服务器证书:
keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -import -file servercert.pem
6、导入信任链
keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem
7、修改server.xml文件
   <Connector port="8443"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="conf/tomcat.jks" keystorePass="222222" keystoreType="JKS" 
      truststoreFile="conf/truststore.jks" truststorePass="222222" truststoreType="JKS" />
8、重启TOMCAT服务。 










本文转自 makewong 51CTO博客,原文链接:http://blog.51cto.com/makewong/740754,如需转载请自行联系原作者
目录
相关文章
|
23天前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
5月前
|
安全 应用服务中间件 网络安全
Tomcat如何配置PFX证书?
【10月更文挑战第2天】Tomcat如何配置PFX证书?
382 7
|
5月前
|
存储 算法 应用服务中间件
Tomcat如何配置JKS证书?
【10月更文挑战第2天】Tomcat如何配置JKS证书?
621 4
|
2月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
86 4
|
2月前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
7月前
|
网络协议 Java 应用服务中间件
tomcat配置域名及HTTPS
tomcat配置域名及HTTPS
|
4月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
302 60
|
4月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
393 60
|
7月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
4月前
|
安全 应用服务中间件 网络安全
49.3k star,本地 SSL 证书生成神器,轻松解决 HTTPS 配置痛点
mkcert是一款由Filippo Valsorda开发的免费开源工具,专为生成受信任的本地SSL/TLS证书而设计。它通过简单的命令自动生成并安装本地信任的证书,使本地环境中的HTTPS配置变得轻松无比。mkcert支持多个操作系统,已获得49.2K的GitHub Star,成为开发者首选的本地SSL工具。
279 10