1. 程式人生 > >騰訊雲Linux伺服器搭建(七) Apache+Tomcat+HTTPS加密的配置

騰訊雲Linux伺服器搭建(七) Apache+Tomcat+HTTPS加密的配置

       前面已經在一個主機上安裝了apache+git+openssl,實現了git伺服器的https驗證。還安裝了tomcat,在tomcat上架起了tomcat manager,Jenkins,和微信小程式的後臺程式。由於微信小程式必須走https,而且必須用預設埠,所以需要把apache實現git的驗證訪問,並且和tomcat的https連線訪問。這裡選擇了用ajp來實現。

       1,由於當初編譯apache的時候沒有選上ajp模組,所以選擇了從網上下載ajp模組,並放在 apachDir/modules目錄下

        2,在apacheDir/conf目錄下新增workers.properties檔案,並新增如下內容:    

             該檔案中定義了3個worker,對應3個web應用,這裡只指向同一個tomcat,實際中可以指向不同的機器或不同的埠。

	      1 ps=/
	      2
	      3 workers.tomcat_home=/usr/local/tomcat/
	      4 workers.java_home=/usr/local/jdk
	      5 worker.list=worker1,worker2,worker3
	      6
	      7 worker.worker1.port=8009
	      8 worker.worker1.host=127.0.0.1
	      9 worker.worker1.type=ajp13
	     10
	     11 worker.worker2.port=8009
	     12 worker.worker2.host=127.0.0.1
	     13 worker.worker2.type=ajp13
	     14
	     15 worker.worker3.port=8009
	     16 worker.worker3.host=127.0.0.1
	     17 worker.worker3.type=ajp13

      3,修改apacheDir/conf/extra/httpd-ssl.conf,在VirtualHost前面追加以下內容。

	     12 LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.6.so
	     13 JkWorkersFile /usr/local/apache2/conf/extra/workers.properties
	     14 JkLogFile jklog.log
	     15 JkLogLevel info
	     16 JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

     4,在VirtualHost前面追加以下內容。

	     96 ScriptAlias /git/ /usr/local/git/libexec/git-core/git-http-backend/
	     97 JkMount  /jpy/* worker1
	     98 JkMount  /jenkins/* worker2
	     99 JkMount  /manager/* worker3

    5,至此Apache的指向tomcat的設定完成。apache的SSL設定參照《Centos上apache+git的https認證實現

 重啟後,用https://域名/manager/  https://域名/jenkins/  https://域名/jpy/ 都能訪問。https://域名/git/sample.git

    6,現在實現了客戶端到apache的ssl加密,但是實際從tomcat返回的值還是明文傳送的,所以現在的https只實現了一半。如果需要完全實現https,還需要把tomcat配置上ssl加密。利用從阿里雲下載的tomcat用的證書。在Tomcat的安裝目錄下建立cert目錄,並且將下載的全部檔案拷貝到cert目錄中。   

-rw-r--r-- 1 root root 1674 Jun 29 23:15 1530652701965.key
-rw-r--r-- 1 root root 3674 Jun 29 23:15 1530652701965.pem
-rw-r--r-- 1 root root 4546 Jun 29 23:15 1530652701965.pfx
-rw-r--r-- 1 root root   13 Jun 29 23:15 pfx-password.txt

    7,找到安裝Tomcat目錄下該檔案server.xml,一般預設路徑都是在 conf 資料夾中。找到 <Connection port="8443"標籤,增加如下屬性:

keystoreFile="cert/1530652701965.pfx"
keystoreType="PKCS12"
#此處的證書密碼,請參考附件中的密碼檔案或在第1步中設定的密碼
keystorePass="證書密碼"
完整的配置如下,其中port屬性根據實際情況修改:
<Connector port="8443"
	    protocol="HTTP/1.1"
	    SSLEnabled="true"
	    scheme="https"
	    secure="true"
	    keystoreFile="cert/1530652701965.pfx"
	    keystoreType="PKCS12"
	    keystorePass="證書密碼"
	    clientAuth="false"
	    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"	    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

重啟 Tomcat後,小程式以及Jenkins,tomcat manager都能正常執行,到此大功告成。

遇到的坑:

1,第6步設定完之後,會出現,所有應用都有git一樣的apache的基本使用者驗證。研究了一下,把git的目錄單獨抽出來,另外三個jkmount單獨設定,重啟後,解決了。

	     96 ScriptAlias /git/ /usr/local/git/libexec/git-core/git-http-backend/
	     97 JkMount  /jpy/* worker1
	     98 JkMount  /jenkins/* worker2
	     99 JkMount  /manager/* worker3

	    100 <Location /git-data/git>
	    101     AuthType Basic
	    102     AuthName "Git"
	    103     AuthUserFile /usr/local/apache2/conf/git-team.htpasswd
	    104     Require valid-user
	    105 </Location>