CAS SSO系列教程:(二)Tomcat安装SSL全过程

本系列教程为gevin.me原创文章,转载请注明: CAS SSO系列教程:(2)Tomcat安装SSL全过程 | Gevin’s Blog

要实现CAS SSO,必须让Tomcat支持SSL,下面将讲一下如何配置SSL。

本文使用的Tomcat版本是:apache-tomcat-6.0.30-windows-x64.zip

一、生成Key Store

C:\Java\jdk1.6.0_27\bin>keytool -genkey -alias "tomcat" -keyalg "RSA" -keystore "C:\Tomcat6_CAS\keystore\gevinme.keystore" -validity 360

注意:第一个问一定要填写cas server的域名,否则到时访问客户端程序时将会报以下的错误:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching xxx.xxx.xx found

参数介绍:

-alias 密钥的别名

-keyalg 密钥使用的加密算法,此处使用RSA

-keystore 密钥存储的位置,默认是存在用户主目录下,此处则指定存储位置

-validity 密钥的有效期

更多关于keytool的参数说明请参考《JDK keytool参数说明

keystore的密码我设置为gevinme,与Tomcat的管理员密码一样,tomcat-user.xml额外增加了以下权限:

<tomcat-users>
<user username="admin" password="gevinme" roles="admin,manager"/>
</tomcat-users>

执行完上述命令后,将会在指定的目录下生成gevinme.keystore文件,如图:

 

二、配置SSL连接器

修改Tomcat\conf\server.xml文件

将以下的内容的注释去掉,并增加以下密钥位置和密码:

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

此时启动后会报以下错误:

java.lang.exception connector attribute sslcertificatefile must be defined when using ssl with apr

只需要将conf\server.xml里面的以下内容注释掉即可:

  <!--
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  -->

 三、测试访问:

启动Tomcat,访问https://127.0.0.1:8443

点击“证书错误”后,可以查看到我们刚刚生成的密钥的相关信息:

 

至此,Tomcat的SSL配置过程已完成,下面将介绍如何导出证书和客户端如何导入服务器端生成的证书,为之后的SSO做准备。

四、导出证书

C:\Java\jdk1.6.0_27\bin>keytool -export -alias tomcat -file "C:\Tomcat6_CAS\keystore\gevinme.cert" -keystore "C:\Tomcat6_CAS\keystore\gevinme.keystore"

五、客户端导入证书

在运行客户端程序的机器上导入证书,需要注意的是此入导入的jre必须是Tomcat指向的jre。(本文在同一台机器上测试)

C:\Java\jdk1.6.0_27\bin>keytool -import -alias tomcat_client -trustcacerts -file "C:\Tomcat6_CAS\keystore\gevinme.cert" -keystore "C:\Java\jre6\lib\security\cacerts"

若在执行导入操作的时候提示以下错误:
keytool错误:java.io.IOException:keystore was tampered with,or password was incorrect
原因是C:\Java\jre6\lib\security\cacerts已存在,请备份后将其删除即可解决。

本文固定链接: http://gevin.me/451.html | Gevin's Blog

该日志由 admin 于2012年04月01日发表在 Java 分类下, 通告目前不可用,你可以至底部留下评论。
原创文章转载请注明: CAS SSO系列教程:(二)Tomcat安装SSL全过程 | Gevin's Blog
关键字: , , , ,

CAS SSO系列教程:(二)Tomcat安装SSL全过程:目前有8 条留言

  1. 4楼
    chinaren:

    楼主你好看了你的文章还是有一些地方不是很明白,能加你的QQ聊一下吗。最近我在做SSO CAS,遇到了不少问题。。希望能得到你的帮助。谢谢

    2012-04-23 22:46 [回复]
    • admin:

      其实我也刚学这个,很多都不是很懂,只是边学边做下笔记而已。大家可以互相交流交流,如果觉得文章有什么不清楚的,可以在这里提出来,我也好修改一下文章。

      2012-04-24 07:20 [回复]
  2. 地板
    chinaren:

    不是,主要是有很多原理性的东西我没有搞明白,但网上也没有讲,我看你们的文章都是在官方DEMO的基础上改动一下,然后放在TOMCAT下运行,但我现在多个项目做SSO不是这样的,所以有些地方想具体问你,不知能否先用QQ和你交流,指点我一些我不懂的地方

    2012-04-24 09:12 [回复]
    • chinaren:

      并且这里我制作的证书然后启动TOMCAT 打不开https://127.0.0.1:8443/

      2012-04-24 10:26 [回复]
      • admin:

        我在安装的时候也遇到过各种各样的错误,你可以根据tomcat的报错去google查下解决办法。我大部分问题都在google上面找到答案。

        2012-04-24 17:21 [回复]
        • chinaren:

          问题是不报错呀。

          2012-04-24 22:19 [回复]
  3. 板凳
    admin:

    嗯,我加你QQ或者你把例子代码发给我,我看看是代码问题还是Tomcat的配置问题。

    2012-04-25 08:17 [回复]
  4. 沙发
    小小:

    我也弄这个遇到不少问题啊加我Qq282802218

    2012-10-08 16:47 [回复]

发表评论

快捷键:Ctrl+Enter