1. 程式人生 > >http網站快捷免費升級到https

http網站快捷免費升級到https

訪問 底部 ner per centos encrypt name 過時 manual

前言

能看到這篇文章我想大家對http和https都不陌生,我也不做過多闡述,直接開幹

工具

  • 已備案域名一個
  • CentOS 7
  • Nginx
  • Let‘s Encrypt

這裏我詳細介紹下Let‘s Encrypt,它是國外一個公共的免費SSL項目,由 Linux 基金會托管,它的來頭不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等組織發起,目的就是向網站自動簽發和管理免費證書,以便加速互聯網由 HTTP 過渡到 HTTPS,目前 Facebook 等大公司開始加入贊助行列。

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

這麽多瀏覽器共同發起的,所以不要擔心過時,重點是免費,是不是免費就不好呢,並不是,開源精神所在,Linux免費,它不好嗎?

通配符證書支持

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

通配符好處

假設你有個域名叫www.itmsbx.com,在通配符不支持之前呢,你只能對www這個主域名做解析,但是現在你可以:
a.itmsbx.comv.itmsbx.comz.timsbx.com

,是不是很開心呢

上手就開幹

獲取證書生成工具

certbot-auto作為我們的證書生成工具,我們先下載然後授權使用,命令如下

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

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

find / -name certbot-auto

獲取證書

這裏我以域名: itmsbx.com 舉例子,你們註意記得替換成你們的

  1. 首先請先打開阿裏雲或騰訊雲域名解析網站,找到解析的地方,如下


    技術分享圖片 我的主機為阿裏雲
  2. 執行前面下載的certbot-auto

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

技術分享圖片

執行後有三個交互式的提示,不要著急一步步來,請仔細查看配置輸出:

  • 是否同意 Let‘s Encrypt 協議要求


    技術分享圖片
  • 詢問是否對域名和機器(IP)進行綁定


    技術分享圖片
  • 輸入郵箱,給你發送一封驗證郵件
    如果是第一次操作應該需要驗證郵箱,我這裏因為已經操作多次了,所以不需要再次驗證了

技術分享圖片

阿裏雲配置完成後不要心急,等待3分鐘左右,雲解析生效需要幾分鐘時間,否則你就前功盡棄重新來了

技術分享圖片

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

./certbot-auto certificates

到這裏的話證書申請已經操作完了,接下來我們來看Nginx配置部分

nginx配置證書

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

技術分享圖片

如果configure arguments沒有with-http_ssl_module描述的話則需要安裝,這裏因為我已經配置過了,所以沒辦法再次演示,大家可以去查看nginx開通ssh支持的具體配置

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

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

將如上四個文件copy到自定義的文件夾,然後進入nginx.conf

技術分享圖片

技術分享圖片 改造前 技術分享圖片 改造後的配置

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

技術分享圖片 改造後

到這裏,服務器支持 HTTPS 升級已經完成,但是很多人在瀏覽器地址欄輸入域名的時候都不輸入http://或https://的,因為瀏覽器會自動幫我們加上http://的,所以,這時候輸入我們剛剛設置的域名其實還是沒有走https://請求,那怎麽讓就是輸入http://也走HTTPS呢?

同級server加入如下代碼做跳轉

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

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

$ ./nginx -s reload

有效期

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

./certbot-auto renew

總結

上面講解了怎麽將http升級到https,其實很簡單,但是需要考慮的卻有很多,系統從http升級到https都需要考慮服務中代碼配置情況,比如代碼底部如果有寫死的http盡量配置成靈活的,否則系統在做升級的時候很麻煩,一些靜態資源都需要進行路徑的配置,如果文件中存在http路徑請求,在地址欄是會出現信任但https警告的情況。

http慢慢的會被拋棄,所以升級為https是項目一開始就需要考慮進去的


文章轉載至:Java面試必修網 www.itmsbx.com ,請自備水,更多幹、幹、幹貨等著你

如果你有過人的技術,如果你有好的文章,歡迎投稿,我們將在Java面試必修首發

http網站快捷免費升級到https