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} 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+Apache+Tomcat实现免费HTTPS的更多相关文章
- apache Tomcat配置SSL(https)步骤
Tomcat配置https 1 生成Server端安全证书 要实现通信加密,首先要在本地准备一份符合X.509标准的Server端安全证书.如果有条件的话,可以向权威CA申请一份经过认证的安 ...
- linux apache Tomcat配置SSL(https)步骤
https简介 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果.HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的 ...
- Let's Encrypt 正式出發(免费HTTPS证书即将到来)
转自:https://blog.gslin.org/archives/2015/10/20/6073/lets-encrypt-%E6%AD%A3%E5%BC%8F%E5%87%BA%E7%99%BC ...
- 指定页面配置https(apache/tomcat)
apache/tomcat服务器下配置https apache下配置https: 首先在网站根目录下,找到.htaccess文件(如果没有则新建),apache ...
- 免费靠谱的 Let’s Encrypt 免费 https 证书申请全过程
申请 Let’s Encrypt证书的原因: 现在阿里云等都有免费的 https 证书,为什么还要申请这个呢(估计也是因为阿里云这些有免费证书的原因,所以 Let’s Encrypt 知道的人其实并不 ...
- nginx安装Lets Encrypt SSL免费HTTPS加密证书
Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书 原文地址:https://renwole.com/archives/157 实验环境:Cent ...
- 阿里云申请免费SSL证书,并配置到Tomcat,实现https访问
第一步:阿里云免费https证书安装 https://jingyan.baidu.com/article/fdffd1f8619481f3e98ca196.html 第二步:阿里云申请免费SSL证书 ...
- 关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解
先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...
- Apache/Tomcat/JBOSS/Nginx区别
先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...
随机推荐
- tar 分包压缩与合并
要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令: tar cjf - logs/ |split -b 1m - logs.tar.bz2.完成后会产生下列文件: logs.tar.b ...
- 【web安全】第一弹:利用xss注入获取cookie
首先一定要先来吐槽一下tipask系统.这是一枚开源的类似百度知道的系统,但是漏洞多多,最基本的XSS注入都无法防御. 言归正传: [准备1] cookie接收服务器. 平时喜欢用sae,所以在sae ...
- 什么是马甲APP?怎么用马甲APP导流
一.什么是马甲APP? 马甲APP指的是为了让认识你的人猜不到,在常用的用户名外再注册的其他名字的APP. 二.马甲APP与真实APP的区别是什么?相同的地方是什么? 1.应用名称不一样. 2.关键词 ...
- C/S和B/S两种软件体系结构
目前两种流行的软件体系结构就是C/S和B/S体系结构,下面对两种体系结构进行一下总结: 1.C/S(客户端/服务器模式): 客户端和服务器都是独立的计算机,客户端是面向最终用户的应用程序或一些接口设备 ...
- 李洪强漫谈iOS开发[C语言-032]-三目运算符
- init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件
Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径:system/core/init,编译 ...
- bzoj1558
好题,初看以为只要差分然后维护相同的段数目但是请注意下面的情况2 3 5 8 9 1 2 3 4 这显然答案是3而不是4因此我们还要再维护ld,rd表示左右单独的段长度和s表示不包括左右单独的段,中间 ...
- VS2010中 为图片添加背景图片
很简单的东西,嘿嘿 void CTestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage( ...
- POJ_3176_Cow_Bowling_(数字三角形)_(动态规划)
描述 http://poj.org/problem?id=3176 给出一个三角形,每个点可以走到它下面两个点,将所有经过的点的值加起来,问最大的和是多少. Cow Bowling Time Limi ...
- jQuery 分步引导 插件
转自:http://blog.libnav.com/js/57.html 很多时候一个网站或者一个Web应用出品,为了让你的用户知道你的站点(或应用)有些什么?如何操作?为了让你的用户有更好的体验.往 ...