نصب 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"
بعد از تنظیم این مورد باید Tomcat دوباره راه اندازی گردد.

تنظیم 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>
	
پس از تنظیم مورد بالا باید Tomcat  مجددا راه اندازی گردد.
همچنین باید پورت 443 روی فایروال سرور باز گردد که می توانید مطابق راهنمای کاربری فایروال این کار را انجام دهید.

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 &quot;%r&quot; %s %b" />

      </Host>
  • فایل conf/Catalina/localhost/rewrite.config  را با محتویات زیر ایجاد کنید و Tomcat  را Restart  کنید. .
RewriteCond %{HTTPS} =off
RewriteRule ^(.*) https://%{HTTP_HOST}:443$1 [R=301]

 

10
قبلی