腾讯云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>
更多推荐
所有评论(0)