共计 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