如何设置Apache,Tomcat(mod_jk),SSO(CAS,mod_auth_cas)

如何设置Apache,Tomcat(mod_jk),SSO(CAS,mod_auth_cas) 本文介绍如何设置Apache和Tomcat,链接 与mod_jk。它...

如何设置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中的T​​omcat 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"/>