前面已经在一个主机上安装了apache+git+openssl,实现了git服务器的https验证。还安装了tomcat,在tomcat上架起了tomcat manager,Jenkins,和微信小程序的后台程序。由于微信小程序必须走https,而且必须用默认端口,所以需要把apache实现git的验证访问,并且和tomcat的https连接访问。这里选择了用ajp来实现。

       1,由于当初编译apache的时候没有选上ajp模块,所以选择了从网上下载ajp模块,并放在 apachDir/modules目录下

        wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.26/x86_64/mod_jk-1.2.26-httpd-2.2.6.so

        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>

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐