<s id="ux55u"><sub id="ux55u"></sub></s><thead id="ux55u"><legend id="ux55u"><sup id="ux55u"></sup></legend></thead>

    1. <strike id="ux55u"><u id="ux55u"><xmp id="ux55u"><dd id="ux55u"></dd>

      LAMP網站申請Let’s Encrypt SSL證書升級https

      2018-08-27 11:02:00
      薛才杰
      原創
      17898

      基本概念:

      HTTP: 是互聯網上應用很廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準,用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。

      HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

      谷歌、火狐等瀏覽器廠商也已經扛起HTTPS大旗,對于HTTP站點會提示不安全警告。而且像谷歌、百度等搜索引擎也早已響應HTTPS號召,都聲稱對HTTPS站點頁面友好甚至優先抓取,排名靠前,當然具體實際實施情況就另當別論了。要讓互聯網站點都升級到HTTPS協議還需一段時間,但不可否認HTTPS是大勢所趨。

      網站環境:

      操作系統:centos6.5 x64 (阿里云ECS服務器)

      web服務:Apache 2.4+ 

      免費證書商家:Let's Encrypt SSL

      網站程序: 蟬知企業門戶系統

      操作流程:

      1.安裝證書

      Let's Encrypt SSL免費證書,有效期3個月,需要定期更新。( 更多國內外免費SSL證書推薦參考

      安裝SSL證書可以使用 certbot 工具,操作十分簡單方便。

      下載 certbot,并設置權限:

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

      使用certbot申請安裝證書:

      ./certbot-auto certonly --webroot --apache -w /data/wwwroot/www.chanzhi
                          cms
      .com -d www.chanzhicms.com --no-self-upgrade

       -w后面是網站的根目錄路徑,-d后面是申請證書的域名,多個域名的話,在后面繼續添加設置多個-d即可。


      申請成功后,可以查看到SSL證書的有效截止日期。申請的證書默認存放在 /etc/letsencrypt 目錄下。

      2.修改Apache配置文件

      設置apache的配置文件 /usr/local/apache/conf/httpd.conf,要修改兩個地方,找到下面兩行將其前面的#去掉即可。

      LoadModule ssl_module modules/mod_ssl.so
      Include conf/extra/httpd-ssl.conf
      然后修改/usr/local/apache/conf/extra/httpd-ssl.conf 文件,將里面內容清空,放入下面內容:
      Listen 443
      AddType application/x-x509-ca-cert .crt
      AddType application/x-pkcs7-crl .crl
      SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
      SSLProxyCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
      SSLHonorCipherOrder on
      SSLProtocol all -SSLv2 -SSLv3
      SSLProxyProtocol all -SSLv2 -SSLv3
      SSLPassPhraseDialog builtin
      SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
      SSLSessionCacheTimeout 300
      Mutex sysvsem default
      SSLStrictSNIVHostCheck on

      最后修改網站的單獨配置文件,/usr/local/apache/conf/vhost/www.chanzhicm.com.conf ,原本只有80端口配置,這里需要我們加上443端口的配置:

          ServerAdmin admin@linuxeye.com
          DocumentRoot "/data/wwwroot/www.chanzhicms.com"
          ServerName www.chanzhicms.com
          ServerAlias chanzhicms.com
          ErrorLog "/data/wwwlogs/www.chanzhicms.com_error_apache.log"
          CustomLog "/data/wwwlogs/www.chanzhicms.com_apache.log" combined    SetOutputFilter DEFLATE
          Options FollowSymLinks ExecCGI
          Require all granted
          AllowOverride All
          Order allow,deny
          Allow from all
          DirectoryIndex index.html index.phpListen 443    DocumentRoot "/data/wwwroot/www.chanzhicms.com"
          ServerName www.chanzhicms.com:443
          ServerAlias www.chanzhicms.com
          ErrorLog "/data/wwwlogs/www.chanzhicms.com_error_apache.log"
          ServerAdmin admin@linuxeye.com
          SSLEngine on
          SSLCertificateFile /etc/letsencrypt/live/www.chanzhicms.com/fullchain.pem
          SSLCertificateKeyFile /etc/letsencrypt/live/www.chanzhicms.com/privkey.pem
                  SetOutputFilter DEFLATE
              Options FollowSymLinks
              AllowOverride All
              Order allow,deny
              Allow from all
              DirectoryIndex index.html index.php
              Require all granted

      上面配置中的網站名稱、網站路徑、證書路徑等信息,大家根據自己的具體情況填寫。

      注意:

      這里必須要特別強調一點,因為我的Apache版本是2.4+的,在Directory中,一定要加上一條 Require all granted ,否側會出現網站HTTP訪問正常,但https訪問提示 403 forbidden。這條命令是apache2.4新增加的,用以替代allow,deny以及order指令。

      最后, 重啟Apache!重啟Apache!重啟Apache!


      使用https訪問網站,查看是否生效。

      3.更新證書

      證書快到期時,我在使用 certbot-auto renew 命令進行證書更新:

      certbot-auto renew  --no-self-upgrade

      成功后,檢查更新到期日期

      ./certbot-auto certificates
      證書到期之前會有郵件提醒,這里介紹修改新訂閱郵箱的方法:
      ./certbot-auto update_account --email 963370407@qq.com  --no-self-upgrade

      使用 crontab 自動續期證書

      每隔兩三個月更新一次證書,萬一忘了怎么辦?有木有版本讓系統自動定期更新呢?當然可以,這里就需要用到 crontab 工具。

      如果系統沒有 crontab ,則先安裝:

      yum install vixie-cron crontabs //安裝Crontab
      chkconfig crond on //設為開機自啟動
      service crond start //啟動
      /var/spool/cron 這里是所有的自動執行任務的 cron 文件存放位置(root文件)
      在/var/spool/cron/root文件里添加:
      30 20 1 * * /root/certbot-auto renew --no-self-upgrade
      即每月1號晚上8點半更新證書。


      重啟服務生效:

      service crond restart 

      查看crontab定時執行任務列表

      crontab -l 


      4.常見問題

      1.升級HTTPS后,前臺界面樣式錯亂。

      蟬知系統用戶升級https后,如果前臺界面樣式錯亂,可以嘗試在后臺--站點--網絡 中關閉 CDN 功能。

      2.安裝證書時提示錯誤,無法對網站進行驗證。

      這個問題折騰了半天,最后在stackoverflow上看到類似問題,有人提及跟cdn有關,因為我把域名都添加了百度CDN云加速,所以就把CDN去除試了下,沒想到問題真的解決了。這里也記一下,或許對大家有幫助。

      3.網站http://訪問正常,但https://訪問提示 403 forbidden。

      因為我的Apache版本是2.4+的,在Directory中,一定要加上一條 Require all granted ,否側會出現網站HTTP訪問正常,但https訪問提示 403 forbidden。這條命令是apache2.4新增加的,用以替代allow,deny以及order指令。

      4.更新SSL證書時卡住在Installing Python packages...不動。

      證書只能免費試用3個月,后期更新ssl證書時出現了問題,卡在Installing Python packages不動,如下圖:

      我用的是阿里云的ECS服務器centos6.5 x64。解決這個問題只需要修改下pip.conf文件,將阿里云的鏡像改為清華的鏡即可。方法如下:
      vim ~/.pip/pip.conf
      [global]
      index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
      [install]
      trusted-host=pypi.tuna.tsinghua.edu.cn
      改保存后,再試試 ./certbot-auto renew --no-self-upgrade  就正常了。

      5.更新證書時,提示錯誤 The manual plugin is not working。

      更新證書時,如果提示如下錯誤:
      Attempting to renew cert (www.chanzhicms.com) from /etc/letsencrypt/renewal/www.chanzhicms.com.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
      The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.
      All renewal attempts failed. The following certs could not be renewed:
        /etc/letsencrypt/live/www.chanzhicms.com/fullchain.pem (failure)

      解決方法:
      創建手動授權腳本,輸入如下命令
      vim /etc/letsencrypt/renewal/www.chanzhicms.com.sh
      #!/bin/bash
      echo $CERTBOT_VALIDATION > /path/to/wwwroot/.well-known/acme-challenge/$CERTBOT_TOKEN
      其中,/path/to/wwwroot/ 為您域名驗證的網站根目錄

      使腳本可執行:
      chmod +x /etc/letsencrypt/renewal/www.chanzhicms.com.sh
      帶參數執行命令
      certbot-auto renew --no-self-upgrade --manual-auth-hook /etc/letsencrypt/renewal/www.chanzhicms.com.sh
      成功后,檢查更新到期日期
      ./certbot-auto certificates --no-self-upgrade


      小結:

      網站升級https其實并不復雜,只是一些細節問題上可能會因環境而異,所以不要盲目地仿照他人操作流程,一定要先看服務器環境。其次,因為https使用443端口,所以服務器防火墻要放開443端口訪問,我用的阿里云服務器,還會涉及到安全策略設置,所以在操作時,注意檢查端口是否監聽。

      如果大家在部署https訪問網站時遇到其他問題,歡迎留言反饋,我們共同學習交流。


      聯系我們

      聯系人:ZSITE交流群

      電話/微信:

      Email:

      QQ:

      地址:青島市黃島區井岡山路157號中南金石國際廣場A座3205室

      无遮挡H肉动漫视频在线观看
        <s id="ux55u"><sub id="ux55u"></sub></s><thead id="ux55u"><legend id="ux55u"><sup id="ux55u"></sup></legend></thead>

      1. <strike id="ux55u"><u id="ux55u"><xmp id="ux55u"><dd id="ux55u"></dd>