1.概述
1.1 HTTPS概述
HTTPS即HTTP + TLS,TLS 是傳輸層加密協議,它的前身是 SSL 協議。咱們知道HTTP協議是基於TCP的。簡而言之HTTPS就是在TCP的基礎上套一層TLS協議,對HTTP原來在TCP明文傳輸的內容進行加密,達到安全的目的。html
HTTP 和 TLS 在協議層的位置以及 TLS 協議的組成以下圖:nginx
目前不少網站都啓用了HTTPS,這確定是將來的趨勢。並且一些場景必須使用HTTPS協議的,好比微信公衆號的某些功能、小程序接入H5等等。
詳情參考:https://developer.baidu.com/resources/online/doc/security/https-pratice-1.html
1.2 Let’s Encripty介紹
Let’s Encrypt是一個非盈利的,免費的CA,能夠提供免費HTTPS認證服務。
提供了一套完整的工具,基於這套工具,咱們能夠免費來搭建HTTPS 網站。
詳情參考:https://letsencrypt.org/
1.3 ssllabs介紹
ssllabs能夠提供對https部署進行安全監測,評價的服務。
詳情參考:https://www.ssllabs.com/ssltest/analyze.htmlgit
2.Let’s Encrypt部署HTTPS服務
2.1 爲何使用Let’s Encrypt
國內有許多機構能夠提供免費的SSL證書,可是通常只有一年的免費服務。並且基於cron能夠實現定時更新證書,從而實現永久免費的目的。github
2.2 安裝Let’s Encrypt
第一步:安裝git
由於後面須要使用從github拉取安裝文件。
yum install git
第二步:獲取letencrypt安裝代碼
cd /home
git clone https://github.com/letsencrypt/letsencrypt.git
web
letsencrypt就是從github下載下來的安裝代碼;
小程序
certbot-auto 是主要的安裝命令。
第三步:簽發SSL證書和密鑰文件
./certbot-auto centonly --renew-by-default --email 1981715364@qq.com -d digdeep.diantusoft.com
能夠看到使用standalone模式對 域名 digdeep.diantusoft.com 簽發SSL證書成功。須要注意,standalone模式會使用本服務器的80端口來完成域名全部權的校驗。因此須要保證80端口和443端口沒有被佔用。
standalone是一個獨立的服務,能夠看做是一個小型的webserver,它使用80或443端口來和letsencrypt服務器進行通訊。所以,在使用standalone獲取證書時,須要關閉正在運行的webserver,除非webserver使用的是80端口和443端口以外特殊的端口。後端
在完成Let's Encrypt證書的生成以後,咱們能夠看到生成的密鑰證書文件:
cert.pem - Apache服務器端證書
chain.pem - Apache根證書和中繼證書
fullchain.pem - Nginx所須要ssl_certificate文件
privkey.pem - 安全證書KEY文件
若是咱們使用的Nginx環境,那就須要用到fullchain.pem和privkey.pem兩個證書文件,在部署Nginx的時候須要用到。
第四步:配置nginx啓用SSL
第五步:測試https
如何nginx –s reload 沒有加載證書,則重啓Nginx.
能夠看到https訪問正常。
2.3 證書續期
Let’s Encrypt證書的有效期爲90天,過時時須要手動更新續期。
下面咱們是有cron來進行按期更新:
在每月的1號,1點30分進行證書的更新;
在每月的1號,1點35分重啓nginx,使用新的證書;瀏覽器
2.4 對證書安全性進行測試
https://www.ssllabs.com/ssltest/analyze.html 訪問這個網址,輸入域名:
digdeep.diantusoft.com就能夠進行測試,測試結果:
能夠看到A級,是很好的安全級別。
這個測試結果還包括其餘有用的信息:
1. TLS版本支持信息tomcat
2. 模擬不一樣客戶端進行測試,測試兼容性信息:
安全
能夠看到不支持 XP下面的IE8,對XP的IE6沒有進行測試。
使用nginx配置了https,後端的tomcat就無需配置https。配置以下:
upstream配置,這裏由於測試沒有配置集羣和對集羣的健康檢查。
再次訪問測試:
能夠看到已經被nginx代理到了tomcat了。而且tomcat無需另外再配置https.
2.5 http強制跳轉https
瀏覽器訪問:http://digdeep.diantusoft.com:88 會被重定向到 https://digdeep.diantusoft.com
3.參考文檔1. https://developer.baidu.com/resources/online/doc/security/https-pratice-1.html2. https://letsencrypt.org/3. https://www.ssllabs.com/ssltest/analyze.html4. https://www.cnblogs.com/kevingrace/p/6187072.html5. https://www.cnblogs.com/intval/p/5763929.html