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 签发免费SSL 证书

CentOS7下Apache及Tomcat开启SSL

Linux下配置apache与Tomcat连接

Linux配置Apache2的经验总结

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

  1. apache Tomcat配置SSL(https)步骤

    Tomcat配置https 1      生成Server端安全证书 要实现通信加密,首先要在本地准备一份符合X.509标准的Server端安全证书.如果有条件的话,可以向权威CA申请一份经过认证的安 ...

  2. linux apache Tomcat配置SSL(https)步骤

    https简介 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果.HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的 ...

  3. 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 ...

  4. 指定页面配置https(apache/tomcat)

    apache/tomcat服务器下配置https         apache下配置https:             首先在网站根目录下,找到.htaccess文件(如果没有则新建),apache ...

  5. 免费靠谱的 Let’s Encrypt 免费 https 证书申请全过程

    申请 Let’s Encrypt证书的原因: 现在阿里云等都有免费的 https 证书,为什么还要申请这个呢(估计也是因为阿里云这些有免费证书的原因,所以 Let’s Encrypt 知道的人其实并不 ...

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

    Linux Nginx网站:Certbot安装配置Lets Encrypt SSL免费HTTPS加密证书 原文地址:https://renwole.com/archives/157 实验环境:Cent ...

  7. 阿里云申请免费SSL证书,并配置到Tomcat,实现https访问

    第一步:阿里云免费https证书安装  https://jingyan.baidu.com/article/fdffd1f8619481f3e98ca196.html 第二步:阿里云申请免费SSL证书 ...

  8. 关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

  9. Apache/Tomcat/JBOSS/Nginx区别

    先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...

随机推荐

  1. 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)

    一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...

  2. Swift(二,元组,可选类型,类型转化)

    一,首先,元组是Swift中特有的,OC中没有元组相关类型,具体怎么用,看下面的例子吧 //1.使用元组来定义一组数据 let infoTuple = (,1.8) let nameTuple = i ...

  3. Entity Framework Code First 数据迁移

    需要在[工具 --> NuGet 程序包管理器 --> 程序包管理器控制台]中输入三个命令: Enable-Migrations (初次迁移时使用) Add-Migration [为本次迁 ...

  4. java中关于移位运算符的demo与总结

    首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0 ...

  5. C#方法定义和调用-2

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  6. 【HDU 3810】 Magina (01背包,优先队列优化,并查集)

    Magina Problem Description Magina, also known as Anti-Mage, is a very cool hero in DotA (Defense of ...

  7. SPRING IN ACTION 第4版笔记-第一章-003-AOP介绍

    一.目标 要在BraveKnight调用embarkOnQuest()前后各做一些处理(调用Minstrel的方法) 二. 1.minstrel.xml <?xml version=" ...

  8. ANDROID_MARS学习笔记_S04_001_OAUTH获取request_token

    一.代码 1.xml(1)main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  9. PCB快速打样规范

    基本情况 板材为FR-4,板厚1.6mm    板材铜厚为1/2oz,成品铜厚为1oz(加工过程中的沉铜工艺会让铜层增加厚度) 绿油白字    喷锡工艺    最小孔内铜厚1.27um    电铜18 ...

  10. 【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】

    原文:[Xamarin 挖墙脚系列:IOS 开发界面的3种方式] xcode6进行三种基本的界面布局的方法,分别是手写UI,xib和storyboard.手写UI是最早进行UI界面布局的方法,优点是灵 ...