能看到這篇文章我想你們對http和https都不陌生,我也不作過多闡述,直接開幹nginx
這裏我詳細介紹下Let's Encrypt
,它是國外一個公共的免費SSL項目,由 Linux 基金會託管,它的來頭不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等組織發起,目的就是向網站自動簽發和管理免費證書,以便加速互聯網由 HTTP 過渡到 HTTPS,目前 Facebook 等大公司開始加入贊助行列。面試
Let's Encrypt 已經得了 IdenTrust 的交叉簽名,這意味着其證書如今已經能夠被 Mozilla、Google、Microsoft 和 Apple 等主流的瀏覽器所信任,用戶只須要在 Web 服務器證書鏈中配置交叉簽名,瀏覽器客戶端會自動處理好其它的一切,Let's Encrypt 安裝簡單,使用很是方便。api
這麼多瀏覽器共同發起的,因此不要擔憂過期,重點是免費,是否是免費就很差呢,並非,開源精神所在,Linux免費,它很差嗎?瀏覽器
有個新的好消息,在2017年我使用該SSL的時候還不能對二級域名作https,一個站就只能作一個,2018年3月14日,Let's Encrypt的執行董事Josh Aas對外宣佈,他們的通配符證書正式上線,用戶能夠基於此特性輕鬆部署/開啓全部子域名的HTTPS功能。ruby
假設你有個域名叫www.itmsbx.com
,在通配符不支持以前呢,你只能對www這個主域名作解析,可是如今你能夠:a.itmsbx.com
,v.itmsbx.com
,z.timsbx.com
,是否是很開心呢服務器
certbot-auto
做爲咱們的證書生成工具,咱們先下載而後受權使用,命令以下ssh
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
若是不知道下載到哪去了,經過以下命令查找位置工具
find / -name certbot-auto
這裏我以域名: itmsbx.com
舉例子,大家注意記得替換成大家的網站
首先請先打開阿里雲或騰訊雲域名解析網站,找到解析的地方,以下阿里雲
執行前面下載的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配置部分
要想讓 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面試必修首發