`
jinnianshilongnian
  • 浏览: 21431295 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2404439
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:2997176
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5631077
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:257424
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1592994
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:248909
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5846988
Group-logo
跟我学Nginx+Lua开...
浏览量:697938
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:780275
社区版块
存档分类
最新评论

第十四章 SSL——《跟我学Shiro》

阅读更多

 

目录贴: 跟我学Shiro目录贴

 

对于SSL的支持,Shiro只是判断当前url是否需要SSL登录,如果需要自动重定向到https进行访问。

 

首先生成数字证书,生成证书到D:\localhost.keystore

使用JDKkeytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore

keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA

输入密钥库口令:

再次输入新口令:

您的名字与姓氏是什么?

  [Unknown]:  localhost

您的组织单位名称是什么?

  [Unknown]:  sishuok.com

您的组织名称是什么?

  [Unknown]:  sishuok.com

您所在的城市或区域名称是什么?

  [Unknown]:  beijing

您所在的省//自治区名称是什么?

  [Unknown]:  beijing

该单位的双字母国家/地区代码是什么?

  [Unknown]:  cn

CN=localhost, OU=sishuok.com, O=sishuok.com, L=beijing, ST=beijing, C=cn是否正确

?

  []:  y

 

输入 <localhost> 的密钥口令

        (如果和密钥库口令相同按回车):

再次输入新口令:

 

通过如上步骤,生成证书到D:\ localhost.keystore

 

然后设置tomcat下的server.xml

此处使用了apache-tomcat-7.0.40版本,打开conf/server.xml,找到:

 

<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" />
--> 

替换为  

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" 
       keystoreFile="D:\localhost.keystore" keystorePass="123456"/> 

keystorePass就是生成keystore时设置的密码。

 

添加SSL到配置文件(spring-shiro-web.xml

此处使用了和十三章一样的代码:

<bean id="sslFilter" class="org.apache.shiro.web.filter.authz.SslFilter">
    <property name="port" value="8443"/>
</bean>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    ……
    <property name="filters">
        <util:map>
            <entry key="authc" value-ref="formAuthenticationFilter"/>
            <entry key="ssl" value-ref="sslFilter"/>
        </util:map>
    </property>
    <property name="filterChainDefinitions">
        <value>
            /login.jsp = ssl,authc
            /logout = logout
            /authenticated.jsp = authc
            /** = user
        </value>
    </property>
</bean> 

SslFilter默认端口是443,此处使用了8443;“/login.jsp = ssl,authc”表示访问登录页面时需要走SSL。

 

 

测试

最后把shiro-example-chapter14打成war包(mvn:package),放到tomcat下的webapps中,启动服务器测试,如访问localhost:9080/chapter14/,会自动跳转到https://localhost:8443/chapter14/login.jsp

 

如果使用Maven Jetty插件,可以直接如下插件配置: 

<plugin>
   <groupId>org.mortbay.jetty</groupId>
   <artifactId>jetty-maven-plugin</artifactId>
   <version>8.1.8.v20121106</version>
   <configuration>
     <webAppConfig>
       <contextPath>/${project.build.finalName}</contextPath>
     </webAppConfig>
     <connectors>
     <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
       <port>8080</port>
     </connector>
     <connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
       <port>8443</port>
       <keystore>${project.basedir}/localhost.keystore</keystore>
       <password>123456</password>
       <keyPassword>123456</keyPassword>
     </connector>
     </connectors>
   </configuration>
</plugin>

 

  

示例源代码:https://github.com/zhangkaitao/shiro-example;可加群 231889722 探讨Spring/Shiro技术。

  

请你欣赏春天美景 http://user.qzone.qq.com/314154083/photo/V10a4ot72FxYVR?ptlang=2052


 

  • 大小: 11.1 KB
10
4
分享到:
评论
14 楼 今晚吃肉 2018-01-05  
tao哥(不能打汉字 ),我参照你这样的配置后,直接打个war包放在tomcat上启动后连接无法访问,给出的信息如下
05-Jan-2018 16:22:54.638 INFO [http-apr-8443-exec-2] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
2018-01-05 16:22:54.785 [http-apr-8443-exec-4] WARN  org.springframework.web.servlet.PageNotFound:1205 - No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'springServlet'

我在tomcat中的配置为
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
       maxThreads="150" scheme="https" secure="true"  
       clientAuth="false" sslProtocol="TLS"   
       keystoreFile="D:\localhost.keystore" keystorePass="fengzxia"/>

在shiro的配置文件中的配置为
<!-- SSL配置 -->
    <bean id="sslFilter" class="org.apache.shiro.web.filter.authz.SslFilter">
        <!-- 要和tomcat中配置的一样 -->
        <property name="port" value="8443" />
    </bean>
,这是为什么呢
13 楼 johnmann 2016-08-11  
您的名字与姓氏是什么?
  [Unknown]:  localhost

生成证书的时候特别注意一定要“名字与姓氏”用localhost,要不然在15章节里面会会有错误。参考:http://java.globinch.com/enterprise-java/security/fix-java-security-certificate-exception-no-matching-localhost-found/
12 楼 zain_xu 2016-05-18  
很受用!!!
11 楼 cherishit 2014-08-06  
请问楼主 , 如果单向认证https
这样第一次访问需要添加可信站点 .   这个要怎么破 ?
这个是因为证书没有经过机构颁发吗?
10 楼 Long_yuan 2014-05-16  
tomcat 开启了ssl会受 Heartbleed影响么?
9 楼 Long_yuan 2014-05-16  
能把tomcat配置全文 贴出来么
8 楼 jinnianshilongnian 2014-03-27  
inotgaoshou 写道
jinnianshilongnian 写道
inotgaoshou 写道
tao哥结婚了,恭喜恭喜~

从哪里看到我结婚了   木有啊

tao哥,不好意思看错了,你好像是伴郎~
http://user.qzone.qq.com/314154083/photo/V10a4ot72FxYVR?ptlang=2052

哈哈
7 楼 inotgaoshou 2014-03-27  
jinnianshilongnian 写道
inotgaoshou 写道
tao哥结婚了,恭喜恭喜~

从哪里看到我结婚了   木有啊

tao哥,不好意思看错了,你好像是伴郎~
http://user.qzone.qq.com/314154083/photo/V10a4ot72FxYVR?ptlang=2052
6 楼 jinnianshilongnian 2014-03-26  
zqb666kkk 写道
我总感觉 涛 哥 写的很空泛

那应该如何写? 请指点。
5 楼 zqb666kkk 2014-03-26  
我总感觉 涛 哥 写的很空泛
4 楼 jinnianshilongnian 2014-03-26  
amberlike 写道
谢谢涛_哥的无私奉献,您的代码很让人感动,尤其是详细的注释

3 楼 amberlike 2014-03-25  
谢谢涛_哥的无私奉献,您的代码很让人感动,尤其是详细的注释
2 楼 jinnianshilongnian 2014-03-25  
inotgaoshou 写道
tao哥结婚了,恭喜恭喜~

从哪里看到我结婚了   木有啊
1 楼 inotgaoshou 2014-03-25  
tao哥结婚了,恭喜恭喜~

相关推荐

Global site tag (gtag.js) - Google Analytics