http網(wǎng)站快捷免費(fèi)升級(jí)到https

網(wǎng)站一直光著身子跑,這次我要加一件衣服 —— 知碼學(xué)院

前言

能看到這篇文章我想大家對(duì)http和https都不陌生,我也不做過多闡述,直接開干
通配符證書,需要續(xù)期的同學(xué)可以看我另外一篇文章 Let’s Encrypt 通配符證書如何續(xù)期

工具

  • 已備案域名一個(gè)
  • CentOS 7
  • Nginx
  • Let's Encrypt

先來個(gè)小廣告,君哥的Java零基礎(chǔ)初級(jí)學(xué)習(xí)全套視頻已經(jīng)推出啦
弟弟妹妹的可以看過來 https://hledu.ke.qq.com
想做在線講課的也可聯(lián)系

這里我詳細(xì)介紹下Let's Encrypt,它是國(guó)外一個(gè)公共的免費(fèi)SSL項(xiàng)目,由 Linux 基金會(huì)托管,它的來頭不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等組織發(fā)起,目的就是向網(wǎng)站自動(dòng)簽發(fā)和管理免費(fèi)證書,以便加速互聯(lián)網(wǎng)由 HTTP 過渡到 HTTPS,目前 Facebook 等大公司開始加入贊助行列。

Let's Encrypt 已經(jīng)得了 IdenTrust 的交叉簽名,這意味著其證書現(xiàn)在已經(jīng)可以被 Mozilla、Google、Microsoft 和 Apple 等主流的瀏覽器所信任,用戶只需要在 Web 服務(wù)器證書鏈中配置交叉簽名,瀏覽器客戶端會(huì)自動(dòng)處理好其它的一切,Let's Encrypt 安裝簡(jiǎn)單,使用非常方便。

這么多瀏覽器共同發(fā)起的,所以不要擔(dān)心過時(shí),重點(diǎn)是免費(fèi),是不是免費(fèi)就不好呢,并不是,開源精神所在,Linux免費(fèi),它不好嗎?

通配符證書支持

有個(gè)新的好消息,在2017年我使用該SSL的時(shí)候還不能對(duì)二級(jí)域名做https,一個(gè)站就只能做一個(gè),2018年3月14日,Let's Encrypt的執(zhí)行董事Josh Aas對(duì)外宣布,他們的通配符證書正式上線,用戶可以基于此特性輕松部署/開啟所有子域名的HTTPS功能。

通配符好處

假設(shè)你有個(gè)域名叫www.it235.com,在通配符不支持之前呢,你只能對(duì)www這個(gè)主域名做解析,但是現(xiàn)在你可以:
a.it235.com,v.it235.comz.it235.com,是不是很開心呢

上手就開干

獲取證書生成工具

certbot-auto作為我們的證書生成工具,我們先下載然后授權(quán)使用,命令如下

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

如果不知道下載到哪去了,通過如下命令查找位置

find / -name certbot-auto

獲取證書

這里我以域名: it235.com 舉例子,你們注意記得替換成你們的

  1. 首先請(qǐng)先打開阿里云或騰訊云域名解析網(wǎng)站,找到解析的地方,如下


    我的主機(jī)為阿里云
  2. 執(zhí)行前面下載的certbot-auto

./certbot-auto certonly  -d *.it235.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
image.png

執(zhí)行后有三個(gè)交互式的提示,不要著急一步步來,請(qǐng)仔細(xì)查看配置輸出:

  • 是否同意 Let's Encrypt 協(xié)議要求


    同意協(xié)議
  • 詢問是否對(duì)域名和機(jī)器(IP)進(jìn)行綁定


    添加TXT解析記錄
  • 輸入郵箱,給你發(fā)送一封驗(yàn)證郵件
    如果是第一次操作應(yīng)該需要驗(yàn)證郵箱,我這里因?yàn)橐呀?jīng)操作多次了,所以不需要再次驗(yàn)證了

記錄配置

阿里云配置完成后不要心急,等待3分鐘左右,云解析生效需要幾分鐘時(shí)間,否則你就前功盡棄重新來了

驗(yàn)證成功

輸入如下命令查看證書信息

./certbot-auto certificates

到這里的話證書申請(qǐng)已經(jīng)操作完了,接下來我們來看Nginx配置部分

nginx配置證書

要想讓 Web服務(wù)器支持 HTTPS ,首先你的服務(wù)器肯定要支持 SSL ,所以我們先檢查 Nginx 是否支持 SSL

我這里顯示支持

如果configure arguments沒有with-http_ssl_module描述的話則需要安裝,這里因?yàn)槲乙呀?jīng)配置過了,所以沒辦法再次演示,大家可以去查看nginx開通ssh支持的具體配置

證書準(zhǔn)備
接下來我們將生成的證書放到一個(gè)指定的目錄,隨你放哪都行,nginx能讀取到即可

[root@iz2zeip7gvbiukof8kwdapz it235]# pwd
/usr/local/nginx/conf/cert/it235
[root@iz2zeip7gvbiukof8kwdapz it235]# ls
cert.pem  chain.pem  fullchain.pem  privkey.pem

將如上四個(gè)文件copy到自定義的文件夾,然后進(jìn)入nginx.conf

改造前的配置

改造前
改造后的配置

這時(shí)候,你就可以打開瀏覽器訪問一下試試了。如果訪問不到,請(qǐng)先檢查443端口是否開放,設(shè)置一下防火墻,如果能成功訪問到,那么恭喜你。

改造后

到這里,服務(wù)器支持 HTTPS 升級(jí)已經(jīng)完成,但是很多人在瀏覽器地址欄輸入域名的時(shí)候都不輸入http://或https://的,因?yàn)闉g覽器會(huì)自動(dòng)幫我們加上http://的,所以,這時(shí)候輸入我們剛剛設(shè)置的域名其實(shí)還是沒有走h(yuǎn)ttps://請(qǐng)求,那怎么讓就是輸入http://也走HTTPS呢?

同級(jí)server加入如下代碼做跳轉(zhuǎn)

server
{
    listen 80;
    server_name *.it235.com;
    rewrite ^(.*)$  https://$host$1 permanent;
}

修改完配置后一定要重新加載讓配置生效

$ ./nginx -s reload

有效期

該證書的有效期只有3個(gè)月,切記在快滿3個(gè)月的時(shí)候重新更新一次,執(zhí)行如下代碼即可

./certbot-auto renew

回收

  • 若需要回收的同學(xué),注意,過期了就不用回收了,如果有多個(gè)賬號(hào),需要指定account
  • 文件目錄一定要寫對(duì),否則會(huì)出錯(cuò)
相關(guān)命令:./certbot-auto revoke

[root@rxblog certbot-0.22.2]$ ./certbot-auto revoke --cert-path /etc/letsencrypt/archive/51object.com/cert1.pem
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Would you like to delete the cert(s) you just revoked?
-------------------------------------------------------------------------------
(Y)es (recommended)/(N)o: Y

-------------------------------------------------------------------------------
Deleted all files relating to certificate 51object.com.
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Congratulations! You have successfully revoked the certificate that was located
at /etc/letsencrypt/archive/51object.com/cert1.pem

-------------------------------------------------------------------------------

刪除

  • 如果不使用了建議先回收,再刪除,若已過期則可直接刪除
  • 如有多個(gè)則按照需要選擇,下圖我回收的為第四個(gè)域名,所以輸入4
相關(guān)命令:./certbot-auto delete

[root@iz2zeip7gvbiukof8kwdapz wildcard]$ ./certbot-auto delete
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Which certificate(s) would you like to delete?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: 51object.com-0001
2: hliedu.com
3: it235.com
4: 51object.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 4

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Deleted all files relating to certificate 51object.com.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

總結(jié)

上面講解了怎么將http升級(jí)到https,其實(shí)很簡(jiǎn)單,但是需要考慮的卻有很多,系統(tǒng)從http升級(jí)到https都需要考慮服務(wù)中代碼配置情況,比如代碼底部如果有寫死的http盡量配置成靈活的,否則系統(tǒng)在做升級(jí)的時(shí)候很麻煩,一些靜態(tài)資源都需要進(jìn)行路徑的配置,如果文件中存在http路徑請(qǐng)求,在地址欄是會(huì)出現(xiàn)信任但https警告的情況。

http慢慢的會(huì)被拋棄,所以升級(jí)為https是項(xiàng)目一開始就需要考慮進(jìn)去的

需要續(xù)期的同學(xué)可以看我另外一篇文章 Let’s Encrypt 通配符證書如何續(xù)期


喜歡的話就請(qǐng)移步知碼學(xué)院,請(qǐng)自備水,更多干、干、干貨等著你

如果你有過人的技術(shù),如果你有好的文章,歡迎投稿,我們將在公眾號(hào)和網(wǎng)站首發(fā)

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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