如何设置Apache,Tomcat(mod_jk),SSO(CAS,mod_auth_cas)
本文介绍如何设置与mod_jk链接的Apache和Tomcat。 它还解释了如何设置SSO(单点登录)解决方案JA-SIG CAS来保护servlet(由tomcat提供)和静态内容(由Apache提供)。 我与OpenSUSE 10.2和11,Apache2,Tomcat 5.5和6一起工作。它应该在其他发行版上工作。
1.安装Apache,Tomcat和mod_jk
Goto Yast,软件,软件管理,搜索和安装Apache(使用devel包),Tomcat(使用webapps包)和apache2-mod_jk。 下一步去系统,运行级别编辑器并启动两者。 您可以通过将浏览器指向本地主机(您应该获得访问被拒绝)和Tomcat,通过将浏览器指向localhost:8080(您应该获得默认的起始页)来检查Apache。
2.配置mod_jk
接下来,编辑/etc/apache2/httpd.conf
并添加:
LoadModule jk_module /usr/lib/apache2/mod_jk.so JkWorkersFile /etc/apache2/workers.properties JkMount /*.jsp worker1 JkMount /servlets-examples/* JkMount /cas/* worker1
你可以在你的vhost中做这个。 这个配置将把所有的jsp和路径/ servlet-examples / *都发送到Tomcat。 如果你知道servlet的确切路径,你可以写:
JkMount /trn-webapp-0.8.1/map worker1
例如,map是servlet
接下来,使用以下内容创建/etc/apache2/workers.properties
:
worker.list=worker1 worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13
然后,goto / etc / tomcat5 / base /
并检查你的server.xml。 你应该找到这样的东西:
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
确保它已启用(不使用<! - ... - >)。
此时,您还可以编辑/etc/tomcat5/base/tomcat-users.xml
。 您可以用以下代替:
<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <role rolename="admin"/> <user username="root" password="password" roles="admin,manager"/> </tomcat-users>
您应该用自己的设置替换root和密码
为了测试目的,编辑/etc/apache2/default-server.conf
并更改DocumentRoot
, 目录
和选项
:
[...] DocumentRoot "/srv/www/tomcat5/base/webapps/" [...] <Directory "/srv/www/tomcat5/base/webapps/"> [...] Options All [...]
在Yast中,Runlevel Editor首先重新启动Tomcat,然后重新启动Apache。 (如果您在Tomcat中更改某些内容,请首先重新启动Tomcat,然后重新启动Apache)!
现在再次在localhost上指向浏览器。 进入servlet - 示例目录,并通过点击执行链接来检查mod_jk。 如果一切顺利,继续。 否则,使用Apache日志( /var/log/apache2/error.log
)和Tomcat日志( /var/log/tomcat5/base/catalina.out
)进行故障排除
。
3.安装和配置JA-SIG CAS
从http://www.ja-sig.org/products/cas/index.html下载CAS Server, 并将其解压缩到某处。 将cas-server-webapp-xxwar
重命名为cas.war
模块目录。 使用浏览器转到localhost:8080
并打开管理员(使用“root”和“password”)。 您必须选择这个cas.war才能从文件中部署。 现在,您可以通过点击“应用程序”下面的cas链接检查CAS。 您可以使用任何相等的用户名/密码进行身份验证。
如果您成功,您可以使用CAS保护您的servlet。 但是,您可以更改身份验证方法(例如,针对LDAP服务器进行身份验证)。 阅读howto和wiki,网址为http://www.ja-sig.org/products/cas/如何完成!
4.安装并配置mod_auth_cas
从https://www.ja-sig.org/svn/cas-clients/mod_auth_cas/tags/mod_auth_cas-1.0.7/src/下载源
现在可以用apxs2编译mod_auth_cas:
apxs2 -i -c mod_auth_cas.c
如果mod_auth_cas在/ usr / lib / apache2
文件夹中,那么一切都很好。 现在在/ tmp目录中
创建一个文件夹。 现在是再次编辑/etc/apache2/httpd.conf
(或你的vhost)的时候了。 加:
LoadModule auth_cas_module /usr/lib/apache2/mod_auth_cas.so CASCookiePath /tmp/cas/ CASloginURL https://localhost/cas/login CASValidateURL https://localhost/cas/serviceValidate CASCertificatePath /root/Desktop/exported-pem.crt <Directory "/srv/tomcat6/webapps/"> AuthType CAS Require valid-user </Directory">
你必须用你的FQDN替换localhost! 配置保护/ srv / tomcat6 / webapps /
dir。
您将需要一个Tomcat SSL连接器! 编辑您的server.xml
:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" connectionTimeout="20000" />
现在,现在是测试您的配置的时间:重新启动Tomcat,然后重新启动Apache并指向localhost。 如果你可以登录,你赢了! 如果没有,故障排除开始。
我有SSL握手问题:“无法与(cas服务器)进行SSL握手”。 这是方式,我解决了。
首先,检查.keystore
文件:它应该在你的主目录或/ usr / share / tomcat5 /中
。 如果没有,生成一个:
linux-3pjy:~ # keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/share/tomcat6/.keystore
Geben Sie das Keystore-Passwort ein:
Geben Sie das Passwort erneut ein:
Wie lautet Ihr Vor- und Nachname?
[Unknown]: pm
Wie lautet der Name Ihrer organisatorischen Einheit?
[Unknown]: ivi
Wie lautet der Name Ihrer Organisation?
[Unknown]: fhg
Wie lautet der Name Ihrer Stadt oder Gemeinde?
[Unknown]: dd
Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz?
[Unknown]: sn
Wie lautet der Landescode (zwei Buchstaben) für diese Einheit?
[Unknown]: de
Ist CN=pm, OU=ivi, O=fhg, L=dd, ST=sn, C=de richtig?
[Nein]: ja
Geben Sie das Passwort für <tomcat> ein.
(EINGABETASTE, wenn Passwort dasselbe wie für Keystore):
您需要此密钥库中的证书:
linux-3pjy:~/Desktop # keytool -export -alias tomcat -keystore /usr/share/tomcat6/.keystore -file exported-der.crt
Geben Sie das Keystore-Passwort ein:
Zertifikat in Datei <exported-der.crt> gespeichert.
linux-3pjy:~/Desktop # openssl OpenSSL> x509 -out /root/Desktop/exported-pem.crt -outform pem -in /root/Desktop/exported-der.crt -inform der
或者您可以在server.xml中的Tomcat Connector中定义自己的密钥
:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" connectionTimeout="20000" keystoreFile="${catalina.home}/conf/server.jks" keystoreType="JKS" keystorePass="password" truststoreFile="${catalina.home}/conf/server.jks" truststoreType="JKS" truststorePass="password"/>