Let's Encrypt怎麼申請?讓我們加密SSL免費證書原理&安裝教程

Let's Encrypt怎麼申請?

讓我們加密SSL證書原理&安裝教程

SSL是什麼?陳溈亮在上一篇文章《http vs https 區別是什麼? SSL加密過程詳解》裡就有說到。

另外電子商務網站必須購買高級的加密SSL證書以外,用網站做微信公眾號推廣新媒體人,想要安裝SSL證書,其實可以免費安裝加密SSL證書,這樣對SEO有幫助,能提高網站關鍵詞在搜索引擎的排名。

Let's Encrypt怎麼申請?讓我們加密SSL免費證書原理&安裝教程

Let's Encrypt(讓我們加密)本身自己也寫了一套流程(https://certbot.eff.org/),使用Linux的朋友,可以參考該流程的同時,跟著本教程操作。

先下載certbot-auto 工具,然後運行工具的安裝依賴組件。

wget https://dl.eff.org/certbot-auto --no-check-certificate
chmod +x ./certbot-auto
./certbot-auto -n

生成SSL證書

接下來,以陳溈亮博客域名為例,請根據自身需要修改,SSH運行如下命令。

請務必修改命令中的:

  1. 郵箱
  2. 服務器路徑
  3. 網站域名

單域名單目錄,生成一個證書:

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com

多域名單目錄,生成一個證書:(即多個​​域名,單個目錄,使用同一個證書)

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com -d img.chenweiliang.com

生成的SSL證書會保存在:/etc/letsencrypt/live/www.chenweiliang.com/ 目錄下。


多域名多目錄,生成一個證書:(即多個域名,多個目錄,使用同一個證書)

./certbot-auto certonly --email [email protected] --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com -d img.chenweiliang.com -w /home/eloha/public_html/site/etufo.org -d www.etufo.org -d img.etufo.org

安裝Let's Encrypt 證書成功後,SSH會出現如下提示信息:

重要筆記:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/www.chenweiliang.com/fullchain.pem
您的密鑰文件已保存在:
/etc/letsencrypt/live/www.chenweiliang.com/privkey.pem
Your cert will expire on 2018-02-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
“certbot-auto renew”
- 如果您喜歡Certbot,請考慮通過以下方式支持我們的工作:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
捐贈給EFF: https://eff.org/donate-le

SSL證書續期

證書續期也非常方便,利用crontab中進行自動續期。有些Debian沒有安裝crontab的可以先手動安裝。

apt-get install cron

以下命令分別nginx跟apache是在 / etc / crontab中 的文件中輸入的命令,意思是每10天續期一次,90天的有效期足夠了。

Nginx的crontab 文件,請添加:

0 3 */10 * * /root/certbot-auto renew --renew-hook "/etc/init.d/nginx reload"

Apache 的crontab 文件,請添加:

0 3 */10 * * /root/certbot-auto renew --renew-hook "service httpd restart"

SSL證書Apache配置

現在,我們需要對Apache 的配置進行修改。

溫馨提示:

  • 假如你用CWP控制面板,在添加域名勾選自動生成SSL證書,就會自動給SSL證書Apache配置。
  • 若再多做以下步驟的話,重啟Apache後可能會出錯。
  • 如果出錯,請刪除你手動添加的配置。

編輯httpd.conf 文件 ▼

/usr/local/apache/conf/httpd.conf

查找 ▼

Listen 443
  • (將前面的註釋號# 去掉)

或添加監聽端口443 ▼

Listen 443

SSH檢查Apache監聽端口 ▼

grep ^Listen /usr/local/apache/conf/httpd.conf

查找 ▼

mod_ssl
  • (將前面的註釋號# 去掉)

或添加▼

LoadModule ssl_module modules/mod_ssl.so

查找 ▼

httpd-ssl
  • (將前面的註釋號# 去掉)

然後,SSH執行以下命令(注意將路徑換你自己的):

at >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProxyCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
SSLProxyProtocol all -SSLv2 -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLMutex "file:/usr/local/apache/logs/ssl_mutex"
EOF

接著,在你創建的網站的Apache配置的最後下面。

添加上SSL部分的配置文件(注意去掉註釋,還有將路徑換你自己的):

<VirtualHost *:443>
DocumentRoot /home/admin/web/chenweiliang.com/public_html //网站目录
ServerName www.chenweiliang.com:443 //域名
ServerAdmin [email protected] //邮箱
ErrorLog "/var/log/www.chenweiliang.com-error_log" //错误日志
CustomLog "/var/log/www.chenweiliang.com-access_log" common //访问日志
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.chenweiliang.com/fullchain.pem //之前生成的证书
SSLCertificateKeyFile /etc/letsencrypt/live/www.chenweiliang.com/privkey.pem //之前生成的密钥
<Directory "/home/admin/web/chenweiliang.com/public_html"> //网站目录
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
suPHP_UserGroup eloha eloha //用户组(有些服务器配置需要,有些可能不需要,出错请删除此行)
Order allow,deny
Allow from all
DirectoryIndex index.html index.phps
</Directory>
</VirtualHost>

最後重啟Apache就可以了:

service httpd restart

Apache強制HTTP重定向HTTPS

  • 許多Web請求始終只能使用SSL運行。
  • 我們需要確保每次使用SSL時都必須通過SSL訪問網站。
  • 如果任何用戶嘗試使用非SSL URL訪問網站,他必須重定向到SSL網站。
  • 使用Apache mod_rewrite模塊重定向到SSL URL。
  • 如用LAMP一鍵安裝包,內置自動安裝SSL證書和強制重定向到HTTPS,重定向HTTPS已生效,就不用再增加HTTPS重定向。

添加重定向規則

  • 在Apache的配置文件中,編輯網站的虛擬主機,並添加以下設置。
  • 你也可以在.htaccess文件中,將相同的設置添加到網站上的文檔根目錄中。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如果你只想指定某個URL重定向到HTTPS:

RewriteEngine On
RewriteRule ^message$ https://www.etufo.org/message [R=301,L]
  • 如果有人試圖訪問 信息 ,該頁面將跳轉到https,用戶只能用SSL訪問URL。

重啟Apache,讓.htaccess文件生效:

service httpd restart

注意事項

  • 請將以上郵箱地址,改成你的郵箱地址。
  • 請記得將以上的網站域名,改成你的網站域名。

重定向規則位置問題

在偽靜態規則下,放置重定向跳轉規則時,通常會遇到 http 無法全站重定向到https 的問題。

最初我們將重定向代碼複製到.htaccess中,它將出現在以下情況 ▼

重定向規則[L] 在上面第2張

  • [L]表示當前規則是最後一條規則,停止分析後面重寫規則。
  • 因此在訪問重定向的文章頁面時,[L]停止了後面的規則,所以重定向規則不能起作用。

訪問http主頁時,我們希望觸發網址重定向,跳過偽靜態規則以執行重定向跳轉規則,以便可以實現全站http 重定向到https

不要將https重定向規則放在 [L] 規則的下面,要放在 [L] 規則上面 ▼

偽靜態SSL重定向規則[L] 在下面第3張

擴展閱讀:

希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《Let's Encrypt怎麼申請?讓我們加密SSL免費證書原理&安裝教程》,對您有幫助。

歡迎分享本文鏈接:https://www.chenweiliang.com/cwl-512.html

歡迎加入陳溈亮博客的Telegram 頻道,獲取最新更新!

🔔 率先在頻道置頂目錄獲取寶貴的《ChatGPT 內容行銷AI 工具使用指南》! 🌟
📚 這份指南蘊含價值巨大,🌟難逢的機遇,切勿錯失良機! ⏰⌛💨
喜歡就分享和按贊!
您的分享和按贊,是我們持續的動力!

 

發表評論

您的電子郵箱地址不會被公開。 必填項已用 * 標註

滾動到頂部