نصب SSL در Tomcat و Centos برای حالت Multi Domain - نصب و تنظیمات لایفری - Developer
نصب SSL در Tomcat و Centos برای حالت Multi Domain
Tomcat 8.5 and Centos 6.x
جهت نصب SSL روی Tomcat 8.5 در حالت Multi Domain نیاز است تا Connector در Tomcat با استفاده از پروتوکول APR تعریف شود که جهت استفاده از این ویژگی در Tomcat 8.5 باید tomcat-native-1.2 نصب گردد که این نسخه در Repository Yum وجود ندارد و باید از طریق Source نصب گردد.
پیش نیاز های نصب Tomcat Native
- OpenSSL
آخرین نسخه Open SSL در سیستم عامل Centos 6.x مناسب Build کردن Tomcat Native نیست وباید ابتدا آخرین نسخه را از لینک زیر دانلود کنید و با استفاده از راهنمای بعدی آنرا نصب کنید :
دانلود :
https://github.com/openssl/openssl/releases
نصب :
https://www.hugeserver.com/blog/tutorials/how-to-install-apache-on-centos
/etc/ld.so.conf
اضافه کنید و دستور زیر را اجرا کنید :
nano /etc/ld.so.conf
# Insert
/usr/local/openssl/lib
/usr/local/lib64
باید پس از نصب Openssl بدون خطا اجرا گردد :
[root@liferayportal ~]# /usr/bin/openssl
OpenSSL> version
OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL>
- نصب APR
از طریق راهنمای زیر می توانید APR را نصب کنید :
https://www.hugeserver.com/blog/tutorials/how-to-install-apache-on-centos/
نصب Tomcat Native
- از این صفحه Source را دانلود کنید. (Native 1.2.21 Source Release zip)
tar zxvf tomcat-native-1.2.21-src.tar.gz
rm tomcat-native-1.2.21-src.tar.gz
cd tomcat-native-1.2.21-src/native
mkdir /usr/share/portal/tomcat/bin/tomcat-native
./configure --with-apr=/usr/bin/apr-1-config \
--with-java-home=/usr/java/jdk1.7.0_80 \
--with-ssl=/usr/local/openssl/bin/openssl \
--prefix=/usr/share/portal/tomcat/bin/tomcat-native
تنظیم کتابخانه Tomcat Native در Tomcat
پس از نصب موارد بالا باید مسیر Tomcat Native را در Tomcat تنظیم کنید که برای این منظور باید فایل setenv.sh را مانند زیر تغییر دهید :
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/share/portal/tomcat/bin/tomcat-native"
تنظیم Conncetor جهت نصب SSL
در این مرحله باید Connector جدیدی برای پورت 443 ایجاد گردد که درخواست های HTTPS را پاسخ دهد برای این منظور فایل $CATALINA_HOME/conf/server.xml را مانند زیر ویرایش کنید :
<Connector executor="tomcatThreadPool" port="80"
protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxKeepAliveRequests="-1"
URIEncoding="UTF-8" redirectPort="443" connectionTimeout="20000"
acceptCount="100" disableUploadTimeout="true" enableLookups="false" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol" enableLookups="false" maxThreads="150"
maxKeepAliveRequests="-1" RIEncoding="UTF-8" connectionTimeout="20000" acceptCount="300" disableUploadTimeout="true"
SSLCACertificateFile="${catalina.base}/conf/ssl/domain1.ir/ca-bundle.crt" SSLCertificateFile="${catalina.base}/conf/ssl/domain1.ir/ca.crt"
SSLEnabled="true" defaultSSLHostConfigName="domain1.ir" SSLCertificateKeyFile="${catalina.base}/conf/ssl/domain1.ir/privatekey.key" >
<SSLHostConfig hostName="domain1.ir" caCertificateFile="${catalina.base}/conf/ssl/domain1.ir/ca-bundle.crt" >
<Certificate certificateKeyFile="${catalina.base}/conf/ssl/domain1.ir/privatekey.key"
certificateFile="${catalina.base}/conf/ssl/domain1.ir/ca.crt"
/>
</SSLHostConfig>
<SSLHostConfig hostName="domain2.ir" caCertificateFile="${catalina.base}/conf/ssl/domain2.ir/Certum-CA.pem" >
<Certificate certificateKeyFile="${catalina.base}/conf/ssl/domain2.ir/privatekey.key"
certificateFile="${catalina.base}/conf/ssl/domain2.ir/certificate.cer"
/>
</SSLHostConfig>
</Connector>
Redirect HTTP to HTTPS
نیاز است تا تمامی درخواست های HTTP به HTTPS منتقل گردد و این کار توسط Tomcat با تنظیمات در فایل server.xml مانند زیر انجام می شود :
-
مانند زیر
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> را اضافه کنید.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
- فایل conf/Catalina/localhost/rewrite.config را با محتویات زیر ایجاد کنید و Tomcat را Restart کنید. .
RewriteCond %{HTTPS} =off
RewriteRule ^(.*) https://%{HTTP_HOST}:443$1 [R=301]