Let's Encrypt+Apache+Tomcat實(shí)現(xiàn)免費(fèi)HTTPS

Let'sEncrypt是一個(gè)免費(fèi)SSL證書(shū)發(fā)行項(xiàng)目,發(fā)行的證書(shū)已經(jīng)獲得主流瀏覽器的支持。
這里說(shuō)如何使用Let'sEncrypt獲得免費(fèi)SSL證書(shū),配置apache的SSL功能,請(qǐng)求轉(zhuǎn)發(fā)到Tomcat并且訪問(wèn)HTTP的請(qǐng)求的時(shí)候自動(dòng)跳轉(zhuǎn)至HTTPS請(qǐng)求。

下列全部操作都是在centos6.8阿里云機(jī)器上測(cè)試通過(guò)的。
說(shuō)的有不明白的,建議事先網(wǎng)上了解下。

我這里有配置好的樣子,這個(gè)地方通過(guò)Apache轉(zhuǎn)發(fā)到Tomcat,配置的有SSL證書(shū)以及訪問(wèn)HTTP時(shí)自動(dòng)跳轉(zhuǎn)至HTTPS,這里直接訪問(wèn) s.hanyz.cn 自動(dòng)跳轉(zhuǎn):

測(cè)試
大致步驟:
  1. 準(zhǔn)備好一個(gè)域名,解析到你的公網(wǎng)服務(wù)器(我的是s.hanyz.cn)
  2. 安裝Let'sEncrypt
  3. 安裝及配置Apache
  4. 給準(zhǔn)備的域名生成ssl證書(shū)文件
  5. tomcat環(huán)境配置好(我這里準(zhǔn)備的一個(gè)項(xiàng)目名叫kind_editor測(cè)試使用)
  6. 給Apache設(shè)置HTTP請(qǐng)求轉(zhuǎn)發(fā)至HTTPS
一、安裝Let'sEncrypt

進(jìn)入到一個(gè)目錄下,在當(dāng)前目錄下載Let's Let'sEncrypt。

wget -p ./ https://github.com/certbot/certbot  

下載完是一個(gè)文件夾名稱為certbot的。

cd certbot進(jìn)入目錄,執(zhí)行命令,Let's Let'sEncrypt會(huì)自己安裝。

./letsencrypt-auto --help  
二、安裝配置Tomcat(事先配置好JDK)
  1. 下載安裝包(略)。
  2. 解壓(略)。
三、安裝Apache

安裝

yum install httpd  

配置ssl需要先按照ssl

yum install mod_ssl  

安裝完可以先啟動(dòng)一些Apache,看安裝好了沒(méi)。

Apache啟動(dòng)

service httpd start

啟動(dòng)完成后,地址欄上輸入公網(wǎng)IP地址,則會(huì)跳轉(zhuǎn)到Apache的首頁(yè)。

提示:

Apache 啟動(dòng): service httpd start
Apache 停止: service httpd stop
Apache 重啟: service httpd restart
Apache 配置文件: /etc/httpd/conf/httpd.conf
Apache ssl模塊的配置文件: /etc/httpd/conf.d/ssl.conf

四、配置Apache

配置Apache在http協(xié)議基礎(chǔ)上使用ProxyPass轉(zhuǎn)發(fā)URL到Tomcat
通俗的說(shuō)就是:我們使用Apache的請(qǐng)求轉(zhuǎn)發(fā)功能,轉(zhuǎn)發(fā)到哪?轉(zhuǎn)發(fā)到Tomcat 下。

在 httpd.conf 文件里面加入以下代碼:

NameVirtualHost *:80  

<VirtualHost *:80>  
ProxyPreserveHost On  
ServerName s.hanyz.cn  
ProxyPass / http://localhost:8080/  
ErrorLog logs/error_log  
CustomLog logs/access_log common  

RewriteEngine on  
RewriteCond %{SERVER_PORT} 80  
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]  
RewriteLog /var/log/httpd/rewrite.log  
RewriteLogLevel 10  

</VirtualHost>  

ServerName: 配置的是你的需要訪問(wèn)的域名。
ProxyPass: 你想能通過(guò)這個(gè)域名要訪問(wèn)到Tomcat下的什么項(xiàng)目。
Rewrite: 這些開(kāi)頭是配置將http協(xié)議的請(qǐng)求自動(dòng)跳轉(zhuǎn)到https協(xié)議。
這個(gè)地方不說(shuō)tomcat怎么配置域名綁定,百度一搜就知道。就在Host下配置一個(gè)就行了。

<Context path="" docBase="/你的tomcat的webapp的路徑/你的項(xiàng)目名" reloadable="true" />

然后就到了配置SSL了,它來(lái)實(shí)現(xiàn)http自動(dòng)轉(zhuǎn)換成https協(xié)議。

ProxyPass /test http://localhost:8080/examples
ProxyPassReverse /test http://localhost:8080/examples
ProxyPass /docs http://localhost:8080/docs
ProxyPassReverse /docs http://localhost:8080/docs
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

第一個(gè)是當(dāng)我訪問(wèn) s.hanyz.cn/test 的時(shí)候,自動(dòng)跳轉(zhuǎn)到 https://s.hanyz.cn/test ,那Apache會(huì)給指向到 http://localhost:8080/examples 下,也就是Tomcat下的 examples 目錄

我這里是事先已經(jīng)配置好了證書(shū),所以是帶綠鎖的。

如下圖所示是通過(guò)Apache請(qǐng)求轉(zhuǎn)發(fā)了的:

測(cè)試

下面是主動(dòng)通過(guò)tomcat訪問(wèn)到的,效果是一樣的:

測(cè)試

到這個(gè)地方基本完成了那些呢?

  1. Apache配置請(qǐng)求轉(zhuǎn)發(fā)。
  2. 自動(dòng)跳轉(zhuǎn)到https請(qǐng)求。

下面就是給域名簽名獲取免費(fèi)的SSL證書(shū)了。

五、給域名生成證書(shū)

修改ssl.conf,將<VirtualHost *:443>標(biāo)簽中 #ServerName www.example.com:443 前邊的#去掉,域名改為自己的域名,Let's Let'sEncrypt生成的證書(shū)就是綁定這個(gè)域名的 。

 Let's Let'sEncrypt支持3種認(rèn)證方式   
 --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的認(rèn)證方式,命令如下:

cd certbot進(jìn)入目錄:

./letsencrypt-auto --apache --apache-le-vhost-ext /etc/httpd/conf.d/ssl.conf --register-unsafely-without-email  
這個(gè)地方需要注意的是可能會(huì)有的坑:

確保公網(wǎng)服務(wù)器有開(kāi)放安全組的端口,除了服務(wù)器上 iptables 設(shè)置了,阿里云或騰訊云上管理控制臺(tái)上也需要手動(dòng)開(kāi)放端口。

不然在敲完上面的命令以后,生成證書(shū)的時(shí)候,安全組的安全設(shè)置導(dǎo)致域名沒(méi)有開(kāi)發(fā)443端口,就會(huì)出現(xiàn)下面的錯(cuò)。

生成配置文件ERROR

類型那里說(shuō)是: 未知的Host ,一開(kāi)始也覺(jué)得奇怪,ping通了呀,為啥生成配置文件就錯(cuò)誤了呢,后來(lái)突然想到了443端口是否被限了。

然后敲完上面這個(gè)命令以后,Let'sEncrypt 會(huì)問(wèn)你給哪個(gè)域名配置證書(shū), 選擇數(shù)字對(duì)應(yīng)自己設(shè)置的域名 (也就是之前ssl.conf中設(shè)置的域名)。

選擇完數(shù)字,還有一個(gè)選項(xiàng) ,選擇對(duì)應(yīng)數(shù)字就行了。

最后生成成功以后, 有個(gè) 祝賀的xxx 英文單詞一堆,就沒(méi)細(xì)看了,知道是生成ssl證書(shū)成功了。

下面是ssl證書(shū)生成完的路徑
/etc/letsencrypt/live/www.example.com/
Let's Let'sEncrypt會(huì)自動(dòng)修改ssl.conf文件,關(guān)聯(lián)證書(shū)

生成配置文件ERROR

ssl證書(shū)也有了,再通過(guò)地址訪問(wèn)的時(shí)候,就會(huì)出現(xiàn)小綠鎖了,并且Apache能轉(zhuǎn)發(fā)Tomcat的請(qǐng)求。
我的博客文章地址:http://www.hanyz.cn/2017/07/01/Let-sEncrypt-Apache-Tomcat%E5%AE%9E%E7%8E%B0%E5%85%8D%E8%B4%B9HTTPS/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容