SSL相关

ssl配置

 
首先要配置tomcat使其支持SSl,具体配置方式如下(我的是tomcat8):
  • 生成证书:

cmd窗口运行:
keytool -genkey -alias tomcat -keyalg RSA -keystore D:keystore.keystore 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: xxx 您的组织单位名称是什么? [Unknown]: xxx 您的组织名称是什么? [Unknown]: xxx 您所在的城市或区域名称是什么? [Unknown]: xxx 您所在的省/市/自治区名称是什么? [Unknown]: xxx 该单位的双字母国家/地区代码是什么? [Unknown]: CN CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=CN是否正确? [否]: y 输入 <tomcat> 的密钥口令 (如果和密钥库口令相同, 按回车): C:Usersgaogang>
  • 将生成的keystore.keystore复制到tomcat根目录的bin目录下
  • 配置tomcat,修改server.xml:
将这段配置注释去掉:
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->
改成如下形式:
<Connector SSLEnabled="true" clientAuth="false" keystoreFile="D:Program Filesapache-tomcat-8.0.36inkeystore.keystore" keystorePass="xxx" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS"/>
项目使用SSl,即https,目前支持通过两种方式进行配置,一种是通过shiro,添加过滤器实现,一种是通过Java Web的安全验证机制实现,注意两种方式二选一。
  • 第一种: 配置shiro过虑器: 在spring-shiro.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">
        <!-- shiro的核心安全接口 -->
        <property name="securityManager" ref="securityManager" />
        <!-- 要求登录时的链接 -->
        <property name="loginUrl" value="/login.html" />
        <!-- 登陆成功后要跳转的连接 -->
        <property name="successUrl" value="/index.html" />
        <!-- 未授权时要跳转的连接 -->
        <property name="unauthorizedUrl" value="/denied.jsp" />

        <!-- Shiro连接约束配置,即过滤链的定义 -->
        <!-- 此处可配合我的这篇文章来理解各个过滤连的作用http://blog.csdn.net/jadyer/article/details/12172839 -->
        <!-- 下面value值的第一个'/'代表的路径是相对于HttpServletRequest.getContextPath()的值来的 -->
        <!-- anon:它对应的过滤器里面是空的,什么都没做,这里.do和.jsp后面的*表示参数,比方说login.jsp?main这种 -->
        <!-- authc:该过滤器下的页面必须验证后才能访问,它是Shiro内置的一个拦截器org.apache.shiro.web.filter.authc.FormAuthenticationFilter -->
        <!-- 动态加载权限 -->
        <property name="filterChainDefinitions" value="#{chainDefinitionService.initFilterChainDefinitions()}" />
        <!-- 这里暂时静态加载方式 -->
        <!-- <property name="filterChainDefinitions"> <value> /login.html = authc 
            /logout.html = logout /register.html = anon /captcha.html = anon /denied.jsp 
            = anon /resources/** = anon /view/error/** = anon /*/withoutAuth/** = anon 
            /** = authc </value> </property> -->
        <!-- 自定义过滤器 -->
        <property name="filters">
            <map>
                <entry key="kickout" value-ref="kickoutFilter" />
                <entry key="kickoutAuth" value-ref="kickoutAuthFilter"/>
                <entry key="login" value-ref="loginFilter" />
                <entry key="remember" value-ref="rememberMeFilter"/>
                <entry key="perm" value-ref="permissionFilter"/>
                <entry key="roles" value-ref="roleFilter"/>
                <entry key="baseUrl" value-ref="baseUrl"/>
                 <entry key="ssl" value-ref="sslFilter"></entry>
            </map>
        </property>
    </bean>

在shiroAuth.props文件中做如下配置:

#需要登录,并使用ssl
/**=ssl,login,remember,perm,baseUrl
  • 第二种: web.xml中配置如下节点:
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>webside</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
原文地址:https://www.cnblogs.com/smailpeanut/p/7242997.html