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

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上搞,结果一天就弄好了,呵呵!

我的网站是小云工作室(www.xiaoyun.studio) ,我就是给这个网站弄的https

这是一些参考网站:

使用 Let‘s Encrypt 签发免费SSL 证书

CentOS7下Apache及Tomcat开启SSL

Linux下配置apache与Tomcat连接

Linux配置Apache2的经验总结

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

时间: 2024-10-06 16:41:46

Let's Encrypt+Apache+Tomcat实现免费HTTPS的相关文章

let&#39;s encrypt生成免费https证书 ubuntu+tomcat+nginx+let&#39;s encrypt

1. 下载let's encrypt $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install certbot 2. 生成密钥,调用之前需要停止nginx certbot certonly --standalone -d www.域名1.com -d www.域名2.com 生成成功,提示如下 IMPORTANT NOTES: - Congratulations! Your

apache tomcat https应用

一.总结前一天的学习 在前一天的学习中我们知道.了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验. 这样的架构的好处在于: ü   减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负责处理Java请求,这对系统的performance是一个极大的提升. ü   安全,Web Server端没有任何J

免费 Https 证书(Let&#39;s Encrypt)申请与配置

之前要申请免费的 https 证书操作步骤相当麻烦,今天看到有人在讨论,就搜索了一下.发现现在申请步骤简单多了. 1. 下载 certbot git clone https://github.com/certbot/certbot cd certbot ./certbot-auto --help 解压打开执行就会有相关提示 2. 生成免费证书 ./certbot-auto certonly --webroot --agree-tos -v -t --email 邮箱地址 -w 网站根目录 -d

nginx安装Lets Encrypt SSL免费HTTPS加密证书

Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书 原文地址:https://renwole.com/archives/157 实验环境:CentOS Linux release 7.2内核版本:Linux version 3.10.0-514.26.2.el7.x86_64Nginx版本: Nginx-1.13.0 Let's Encrypt是一个免费的.自动化.开放的证书颁发机构.由Mozilla.Cisco.Chrome.faceboo

生成 Let&#39;s Encrypt 免费https证书

1.打开 SSL For Free 官网:https://www.sslforfree.com/ 2.在输入框内输入你要申请证书的域名,输入完点击 Create Free SSL Certificate 3.如果你是申请的是一级域名直接输入你的域名即可不用加 WWW 系统会自动给你申请带WWW和不带WWW的域名 4.域名输入完后系统会提示你要验证你的域名使用权,提供3种验证方式: a.Automatic FTP Verification (FTP账户验证,输入你对应网站的FTP信息,系统会上传一

免费https

文本摘要:https://www.xiaoyun.studio/article/https.html 免费HTTPS Let's Encrypt是一个免费SSL证书发行项目,发行的证书已经获得主流浏览器的支持 本文讲解如何使用Let's Encrypt获得免费SSL证书,配置apache的SSL功能,并将请求转发到tomcat 大致思路如下: 1.使用Let's Encrypt获得SSL证书 2.开启apache的SSL功能,用户请求首先到apache,使用http协议或者https协议 3.a

Apache/Tomcat/JBOSS/Nginx区别(转)

先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. 在Apache基金会里面ApacheServer永远会被赋予最大的支持,毕竟大儿子最亲嘛,而Apache的开源服务器软件Tomcat同样值得关注,毕竟Tomcat是开源免费的产品,用户会给予最大的支持.但是经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系,在用

Apache/Tomcat/JBOSS/Nginx区别

先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. 在Apache基金会里面ApacheServer永远会被赋予最大的支持,毕竟大儿子最亲嘛,而Apache的开源服务器软件Tomcat同样值得关注,毕竟Tomcat是开源免费的产品,用户会给予最大的支持.但是经常在用Apache和Tomcat等这些服务器时,你总感觉还是不清楚他们之间有什么关系,在用

总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .

总结:Apache/Tomcat/JBOSS/Nginx区别 .1.Apache是Web服务器,Tomcat是应用(Java)服务器.Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用.Apache支持静态页,Tomcat支持动态的.2.Jetty:Tomcat内核作为其Servlet容器引擎,并加以审核和调优.大中型系统可以应用.能够提供数据库连接池服务,还支持其他 Web 技术的集成,譬如PHP..NET 两大阵营.3.JBoss是一个管理EJB的容器和服务器,但JBoss核心