阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Let’s Encrypt+Apache+Tomcat实现免费HTTPS

145次阅读
没有评论

共计 2684 个字符,预计需要花费 7 分钟才能阅读完成。

Let’s Encrypt 是 一个免费 SSL 证书发行项目,发行的证书已经获得主流浏览器的支持,亲测谷歌浏览器 (桌面版)、火狐浏览器(桌面版)、UC 浏览器(手机版)、360 浏览器(手机版) 支持,其它的暂没测试;

本文讲解如何使用 Let’s Encrypt 获得免费 SSL 证书,配置 apache 的 SSL 功能,并将请求转发到 tomcat

大致思路如下:

    1. 使用 Let’s Encrypt 获得 SSL 证书

    2. 开启 apache 的 SSL 功能,用户请求首先到 apache,使用 http 协议或者 https 协议

    3.apache 将请求转发到 tomcat 上,使用 http 协议或者 ajp 协议

这样做的原因有以下几点:

    1. 我的网站是 Java 编写的,需要一个类似于 tomcat 的 servlet 容器

    2. 虽然 tomcat 也支持 ssl,但 Let’s Encrypt 原生支持 apache,所以在 apache 上配置 ssl 比较简单

    3.apache 处理静态资源的能力 比 tomcat 好

    4. 可以配置多个 tomcat 实现负载均衡,可以在不终止服务的情况下重启 tomcat

一、安装 Let’s Encrypt

    Let’s Encrypt 的项目主页是 https://github.com/certbot/certbot,可以使用 git 下载,也可以到主页直接下载 ZIP 压缩包

    进入文件夹中,执行如下命令,之后 Let’s Encrypt 会安装一些软件

./letsencrypt-auto --help

二、安装 apache

     在 CentOS7 中安装 apache 的命令

yum install httpd

      在 centos7 中安装 apache 的 ssl 模块

yum install mod_ssl

     在 Ubuntu 中安装 apache

sudo apt-get install apache2

三、安装 tomcat

     到官网下载一个 tomcat,解压就能用,当然先要装 jre

四、配置 apache

     我安装的版本是 2.4.6,这个版本的配置和其它版本不太一样

     在 centos7 中 apache 配置文件的路径是 /etc/httpd/conf/httpd.conf , ssl 模块的配置文件的路径是 /etc/httpd/conf.d/ssl.conf

     在 ubuntu 中 apache 配置文件的路径是 /etc/apache2/apache2.conf

     修改 httpd.conf 文件

        添加如下代码,功能是将 http 协议的请求自动跳转到 https 协议

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

     修改 ssl.conf 文件

         将 Listen 443 https 删掉,不然会和后边的虚拟主机配置冲突

         将 <VirtualHost *:443> 标签中 #ServerName www.example.com:443 前边的 #去掉,域名改为自己的域名,Let’s Encrypt 生成的证书就是绑定这个域名的,我试过改成 ip 后,Let’s Encrypt 不支持

         在 <VirtualHost *:443> 标签中添加以下代码,功能是将所有请求转发到 tomcat 服务器,这里用的是 ajp 协议,如果想用 http 协议,将 ajp 改为 http,8009 改为 8080   

ProxyVia On
ProxyRequests Off
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
<Proxy *>
 Require all granted
</Proxy>
<Location />
 Require all granted
</Location>

    配置文件改好后,使用 httpd - t 命令检查配置文件是否有错误,没错误的话,就可以使用 service httpd start 启动服务

     启动服务的时候还出了一个错误:AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, 将 httpd.conf 中 #ServerName localhost:80 的 #去掉,localhost 改为实际的 ip 就好了

 五、生成证书

   Let’s Encrypt 支持 3 种认证方式 

    –apache          Use the Apache plugin for authentication & installation

    –standalone      Run a standalone webserver for authentication  

    –webroot         Place files in a server’s webroot folder for authentication

   这里使用 apache 的认证方式,命令如下,

./letsencrypt-auto --apache --apache-le-vhost-ext /etc/httpd/conf.d/ssl.conf --register-unsafely-without-email

  –apache-le-vhost-ext 参数指定配置虚拟主机的配置文件;–register-unsafely-without-email 参数是忽略邮箱,如果没有这个参数,Let’s Encrypt 会要求输入邮箱,我输入 foxmail 邮箱,却提示无效,不知道为什么

  证书生成后会放在 /etc/letsencrypt/live/www.example.com/ 目录中,Let’s Encrypt 会自动修改 ssl.conf 文件,关联证书

六、运行 apache、tomcat

  运行 tomcat 并输出日志

cd /etc/tomcat
sh bin/startup.sh;tail -f logs/catalina.out

  运行 apache

service httpd start

七、其它

   总的来说配置过程很简单,但对于没做过的人来说却很困难。比如说我就花了一周多时间研究这个,网上的资料和我电脑上总是有些差异,文件路径不对啊,有些配置项没有啊什么的。我先在自己的 ubuntu 上搞的,弄了几天也不行,只好放弃治疗,直接在服务器上的 centos 上搞,结果一天就弄好了,呵呵!

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132140.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2684字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中