精品軟體與實用教程
在Linux伺服器上申請免費的SSL憑證
無論是製作什麼類型的網站,第一步都需要申請 SSL憑證 ,如果沒有有效的網域名稱證書,就只能以80埠的HTTP方式訪問,現在主流的網站訪問方式都是HTTPS訪問,申請SSL網域證書勢在必行!下面介紹如何申請網域證書,以及幾種不同的方式申請網域證書。
首先了解一下什麼是TSL/ SSL
免費申請SSL憑證 SSL 是「Secure Sockets Layer」的縮寫,中文叫做「安全通訊端層」。它是在1990年代中期,由網景公司設計的。 (順便插一句,網景公司不光發明了SSL,還發明了許多Web 的基礎設施——例如「CSS 樣式表」和「JS 腳本」)
為啥要發明SSL 這個協定捏?因為原先網路上使用的HTTP 協定是明文的,所以有許多缺點──例如傳輸內容會被偷窺(嗅探)和竄改。發明SSL 協議,就是為了解決這些問題。
到了1999年,SSL 因為應用廣泛,已經成為網路上的事實標準。 IETF 就在那年把SSL 標準化。標準化之後的名稱改為TLS(是「Transport Layer Security」的縮寫),中文叫做「傳輸層安全協定」。
許多相關的文章都把這兩者並列稱呼(SSL/TLS),因為這兩者可以視為同一個東西的不同階段。如何讓網域支援TSL?簡單點說就是申請網域的SSL/TSL憑證!
申請SSL/TSL證書,請參考:
免費申請TSL/ SSL證書
SSL憑證有兩種,一種是ECC 憑證(內建公鑰是ECDSA 公鑰),一種是RSA 憑證(內建RSA 公鑰)。簡單來說,同等長度ECC 比RSA 更安全,也就是說在具有同樣安全性的情況下,ECC 的金鑰長度比RSA 短得多(加密解密會更快)。但問題是ECC 的兼容性會差一些,Android 4.x 以下和Windows XP 不支援。只要您的設備不是非常舊的老古董,強烈建議使用ECC 證書。
下面使用 acme.sh 腳本,在Linux伺服器上申請TSL/ SSL憑證的方法:
curl https://get.acme.sh | sh
提示需要先安裝SOCAT,安裝socat後重新啟動伺服器再執行申請憑證的腳本,Centos8下提示80埠被佔用,卸載SOCAT後申請憑證又提示需要安裝SOCAT,死循環! reboot解決問題!
dnf -y install socat reboot
下面產生證書,如果你的伺服器上已經安裝了nginx或apache等web伺服器的話,你需要暫時關閉。申請證書期間會佔用80端口,請確保你伺服器上的80端口沒有被佔用。
關於連接埠方面的幾個小命令:
netstat -tln #查看伺服器上連接埠使用。 netstat -tln | grep 80 #查看80連接埠是否被佔用,輸入指令如果命令列沒反應,則是連接埠沒有被佔用,如果被佔用會顯示對應的連接埠lsof -i :80 #檢視埠屬於哪個程式?埠被哪個程序佔用kill -9 進程數#殺掉佔用埠的進程
下面開始申請SSL憑證,如果出錯的話,可以在後面增加--debug參數,查看詳細錯誤。
acme.sh --issue -d gogobox.tk --standalone -k ec-256
沒有發生什麼意外的話,TSL/SSL憑證已經產生成功了!
TSL/SSL免費憑證的有效期限是90天,90天內需要更新憑證。腳本會60天更新一次,理論上講免費證書是可以無限更新使用的,當然你也可以透過下面指令手動更新。
acme.sh --renew -d gogobox.tk --force --ecc
如果需要產生www開頭的或是二級域名,請在網域前面加上-d參數,--force參數是強制更新憑證!例如:
acme.sh --issue -d gogobox.tk -d www.gogobox.tk -d m.gogobox.tk --standalone -k ec-256 --force
安裝證書,SSL證書申請後,預設保存在root目錄內,需要進行證書安裝,將證書安裝在指定位置
acme.sh --installcert -d gogobox.tk --ecc --key-file /home/ssl/gogobox.tk.key --fullchain-file /home/ssl/fullchain.cer --reloadcmd "systemctl force-reload nginx"
這裡還有另外一種SSL憑證的申請方式:
先安裝socat
dnf install socat
安裝acme.sh
curl https://get.acme.sh | sh
腳本安裝後reboot,在nginx設定好網域後,再進行憑證申請
acme.sh --issue -d gogobox.tk -d www.gogobox.tk --webroot /var/wwwroot/
也可以使用讀取nginx配置的指令,前提是nginx已經設定好網域的指向路徑。
acme.sh --issue -d gogobox.tk --nginx
證書申請成功後,需要把證書安裝一下:
證書申請成功後,進行證書安裝。 acme.sh --installcert -d gogobox.tk --key-file /home/ssl/gogobox.tk.key --fullchain-file /home/ssl/fullchain.cer --reloadcmd "systemctl force-reload nginx"
副檔名cer和crt的的憑證有什麼差別?
副檔名是CRT的憑證是DER編碼,也可以是PEM編碼。副檔名CER和CRT幾乎是同義詞。這種情況在各種unix/linux系統中很常見。
CER是CRT憑證的微軟型式。可以用微軟的工具把CRT檔案轉換為CER檔案(CRT和CER必須是相同編碼的,DER或PEM)。副檔名為CER的檔案可以被IE辨識並作為指令呼叫微軟的cryptoAPI。
Windows中的憑證副檔名有好幾種,例如.cer和.crt。通常而言,.cer檔案是二進位數據,而.crt檔案包含的是ASCII資料。
cer文件包含依據DER(Distinguished Encoding Rules)規則編碼的證書數據,這是x.690標準中指定的編碼格式。
X.509是一個最基本的公鑰格式標準,裡面規定了憑證需要包含的各種資訊。通常我們提到的證書,都是這個格式的,裡麵包含了公鑰、發布者的數位簽章、有效期限等內容。要強調的是,它只裡面是不包含私鑰的。相關的格式有:DER、PEM、CER、CRT。
SSL網域憑證已經申請完畢了!
線上免費申請SSL證書
FreeSSL:FreeSSL是一個免費提供HTTPS 憑證申請、HTTPS 憑證管理和HTTPS 憑證到期提醒服務的網站,旨在推進HTTPS 憑證的普及與應用,簡化憑證申請的流程。
SSL憑證申請網址:https://freessl.org
certbot:certbot是腳本類型的Let's Encrypt憑證申請客戶端,需要一定的命令列使用經驗方可操作,如需自動更新,還需要新增插件,使用起來比較困難。如有自動更新和自動部署需求,建議使用以下介紹的acme.sh和ohttps。
SSL憑證申請網址:https://certbot.eff.org
acme.sh:是一個知名的用於申請Let's Encrypt證書的開源項目,也是屬於腳本類型,有比較詳細的文檔,支援自動化更新和自動化部署。唯一缺點,如果有更新後自動部署至多個節點的需求的話,acme.sh無法滿足。如果你有一定的命令列使用經驗,acme.sh使用起來還是非常方便,強烈推薦!關於更新後自動部署至多個節點的需求,建議使用下面介紹的ohttps。
SSL憑證申請網址:https://github.com/acmesh-official/acme.sh
提供了類似acme.sh的功能,不過提供了友善的管理介面,可申請Let's Encrypt免費通配符類型證書,還提供了證書吊銷、到期前提醒、自動更新、自動部署功能。另外比acme.sh增加了一些非常實用的功能,主要包括可自動部署至阿里雲、騰訊雲、七牛雲的負載平衡、內容分發CDN、SSL憑證清單等,並可自動部署至多個nginx容器中。如果你有在憑證更新後自動部署至多個不同節點的需求,使用http://ohttps.com就對了,在這裡強烈建議大家使用http://ohttps.com申請和管理Let's Encrypt頒發的免費HTTPS憑證。
SSL憑證申請網址:http://ohttps.com