最近有好幾位同窗直接微信贊助說快點更新文章。這個要和你們說聲抱歉,的確好久沒有寫文章了。咱們也不找藉口,我會盡力保證多寫文章。今天咱們的主題來說解 如何給本身的網站 加上HTTPSphp
相對於http,你會發現https 多了一個 S,沒錯這個S 表示的就是 Secure 安全的意思。爲何要加入這個? 主要是因爲HTTP是明文傳輸的,若是被不法相關人截取了能夠直接看到。而且在現在互聯網下面 不少人都很是在意隱私,因此HTTPS已是趨勢化的要求了。html
咱們所知道的這個東西是要收費的,目前不少雲服務商打着第一年免費的噱頭和主機一塊兒作活動(第二年就會收費的)。今天咱們要來講的是如何免費獲取HTTPS證書。linux
其實https證書基本上都是安全的,由於如今的加密算法基本已經很難破解。這裏面主要關注點應該在於 瀏覽器是否能夠顯示 綠標(或者安全鎖)android
而這個安全鎖的顯示 是瀏覽器內置了不少 信譽比較好的 SSL證書機構,這些機構頒發的SSL證書 瀏覽器認爲是安全的 就會顯示這個 安全鎖。nginx
而咱們要說的這個免費的SSL證書頒發機構就是被瀏覽器認爲安全的機構,因此不必定是免費的就必定不安全。git
letsencrypt 就是咱們要說的免費SSL證書頒發商。我我的在不少地方都用這家免費的,惟一的缺點就是每3個月證書就過時,就須要從新籤。3個月主要就是爲了安全。而關於如何獲取的 letsencrypt 不少大神都寫了不少腳本,讓咱們能夠傻瓜式的獲取的。這裏面很是出名的就是 ACME:github
https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E 。算法
接下來咱們就按照 官方的文檔說法,來給個人 我的博客 添加 https證書。我這裏所用的環境是linux ubuntu。ubuntu
#安裝很簡單,你們看我上面的連接文檔就能夠很清楚,我這裏再給你們照本宣科下 #執行了以下命令以後 會在 ~/.acme.sh/ 進行安裝,而且會自動建立 alias acme.sh=~/.acme.sh/acme.sh 和 crontab curl https://get.acme.sh | sh
以下圖你們能夠看看小程序
我這裏直說一個方式,暴力簡單方便 能夠支持泛域名。因爲咱們說的這個大神腳本 指定 dnsapi,而且我也建議你們將域名解析放在dnspod 很是方便。
以下命令很是簡單
export DP_Id="1234" export DP_Key="sADDsdasdgdsf" acme.sh --issue --dns dns_dp -d *.54php.cn --debug
如何獲取 DP_ID 和 DP_Key?
執行過程大概須要1 ~ 5分鐘,期間會在dnspod 自動經過api添加一條 txt記錄的
核心配置以下,其中裏面的 ssl_certificate 和 ssl_certificate_key 能夠看到就是咱們上面截圖的東西。配置好了就reload nginx 就行了
listen 443 ssl; ssl_certificate /home/ubuntu/.acme.sh/*.54php.cn/fullchain.cer; ssl_certificate_key /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA; ssl_session_cache shared:SSL:50m;
你們能夠訪問 https://www.54php.cn 看看效果的
能夠看到上圖 我用綠色圈起來的地方就是 有效期 3月26日 到 6月24日。有同窗可能發現 哎 爲何你的瀏覽器裏面沒有 安全鎖,是由於我剛開始寫博客的時候 不少圖片用的就是http ,而若是在https 中混合使用 http 就會出現混合狀況,就不會顯示 安全鎖。
listen 443 ssl; ssl on;
主要區別就是上面的,若是配置了 ssl on 那麼就會強制走https協議。因此通常咱們是使用最上面第一行代碼
在咱們使用acme.sh 生產了不少 證書文件 若是你使用以下配置就會不對(android 測試機器已經發現問題) ssl_certificate /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.cer; ssl_certificate_key /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.key; 正確的是應該是 ssl_certificate /home/ubuntu/.acme.sh/*.54php.cn/fullchain.cer; ssl_certificate_key /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.key;
你們對比下 就能夠發現了。而具體緣由還要分析下,確定是缺乏了中間證書致使的,後面我會發一篇文章專門來解答 每一個證書究竟是幹什麼的。