Let's Encrypt怎麼申請?
讓我們加密SSL證書原理&安裝教程
SSL是什麼?陳溈亮在上一篇文章《http vs https 區別是什麼? SSL加密過程詳解》裡就有說到。
另外電子商務網站必須購買高級的加密SSL證書以外,用網站做微信公眾號推廣的新媒體人,想要安裝SSL證書,其實可以免費安裝加密SSL證書,這樣對SEO有幫助,能提高網站關鍵詞在搜索引擎的排名。
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運行如下命令。
請務必修改命令中的:
- 郵箱
- 服務器路徑
- 網站域名
單域名單目錄,生成一個證書:
./certbot-auto certonly --email youemail@qq.com --agree-tos --no-eff-email --webroot -w /home/admin/web/chenweiliang.com/public_html -d www.chenweiliang.com
多域名單目錄,生成一個證書:(即多個域名,單個目錄,使用同一個證書)
./certbot-auto certonly --email youemail@qq.com --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 youemail@qq.com --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 youremail@qq.com //邮箱 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]表示當前規則是最後一條規則,停止分析後面重寫規則。
- 因此在訪問重定向的文章頁面時,[L]停止了後面的規則,所以重定向規則不能起作用。
訪問http主頁時,我們希望觸發網址重定向,跳過偽靜態規則以執行重定向跳轉規則,以便可以實現全站http 重定向到https 。
不要將https重定向規則放在 [L] 規則的下面,要放在 [L] 規則上面 ▼
擴展閱讀:
- http vs https 區別是什麼? SSL加密過程詳解
- CWP控制面板安裝Let's Encrypt加密SSL證書後出現錯誤500怎麼辦?
- 不帶www頂級域名自動跳轉訪問二級域名:根域名301重定向www
希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《Let's Encrypt怎麼申請?讓我們加密SSL免費證書原理&安裝教程》,對您有幫助。
歡迎分享本文鏈接:https://www.chenweiliang.com/cwl-512.html
解鎖AI 助力,告別低效工作! 🔓💼
🔔 立刻在頻道置頂目錄中,領取《DeepSeek 提示詞神器》! 🎯
📚 錯過= 永久落後!現在行動! ⏳💨
喜歡就分享和按讚!您的分享與按贊,是我們持續的動力!