设为首页 收藏本站
查看: 382|回复: 0

[经验分享] Tomcat SLL加密(opensll方式)

[复制链接]

尚未签到

发表于 2017-1-22 08:56:46 | 显示全部楼层 |阅读模式
转自 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来访问项目 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-331825-1-1.html 上篇帖子: 【转】主题: Tomcat详解 下篇帖子: 关于tomcat的类加载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表