最近很火的免費SSL 使用教程

2021-02-20 黑白之道

 
      2015年10月份,微博上偶然看到Let's Encrypt 推出了beta版,作為一個曾經被https虐出血的碼農來說,這無疑是一個重磅消息。並且在全站Https的大趨勢下,Let's Encrypt 脫穎而出,無疑會對傳統SSL證書提供商造成不小的打擊,並將Https的應用和推廣上升到一個空前火熱的階段。

 

      Let’s Encrypt是由ISRG(Internet Security Research Group)提供的免費SSL項目,現由Linux基金會託管,他的來頭很大,由Mozilla、思科、Akamai、IdenTrust和EFF等組織發起,現在已經得到Google、Facebook等大公司的支持和贊助,目的就是向網站免費籤發和管理證書,並且通過其自身的自動化過程,消除了購買、安裝證書的複雜性,只需幾行命令,就可以完成證書的生成並投入使用,甚至十幾分鐘就可以讓自己的http站點華麗轉變成Https站點。

 

Let's Encrypt背後的力量

 

 

下面從實戰的角度,為大家詳細地介紹Let's Encrypt的使用過程

 

1、安裝Let's Encrypt

 

第一步:執行以下命令

git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto certonly --email xxx@xx.com

   

提示:

1、如果提示git命令無效的話,需要安裝一下GIt,直接執行命令 yum install git-all 完成安裝,

2、如果是RedHat/CentOs6系統的話,需要提前安裝EPEL(Extra Packages for Enterprise Linux),執行命令  yum install epel-release

3、 整個過程需要主機連接外網,否則會導致報以下錯誤

IMPORTANT NOTES:     - The following errors were reported by the server:           Domain: on-img.com           Type:   urn:acme:error:connection   Detail: Failed to connect to host for DVSNI challenge           Domain: www.on-img.com           Type:   urn:acme:error:connection           Detail: Failed to connect to host for DVSNI challenge

4、Let's encrypt 是由python編寫的開源項目,基於python2.7環境,如果系統安裝的是python2.6,會提示升級

    也可以執行以下命令(官方不推薦)./letsencrypt-auto certonly --email xxx@xx.com --debug

 

第二步:接下來提示輸入域名 多個用空格隔開

   

出現以下提示說明證書生成成功

 

2、使用證書

     進入/etc/letsencrypt/live/on-img.com/下,on-img.com是第二部中填寫的域名,到時候換成自己的域名即可。

  cert.pem 伺服器證書

  privkey.pem 是證書私鑰

  如果是雲伺服器+負載均衡的話,直接添加以上證書,綁定負載均衡,直接訪問https:// xxx.com

  如果是自己配置的Nginx的,需要以下配置

server{listen 443 ssl; /server_name xxx.com;     //這裡是你的域名index index.html index.htm index.php default.html default.htm default.php;root /opt/wwwroot/ //網站目錄ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem; //前面生成的證書,改一下裡面的域名就行,不建議更換路徑ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem; //前面生成的密鑰,改一下裡面的域名就行,不建議更換路徑 ...}

  

  最後 別忘了重載Nginx

  執行 /etc/init.d/nginx reload 使其生效。

Nginx虛擬主機的設置

接下來進行配置Nginx虛擬主機文件,完整配置如下:

server
{
listen 443 ssl;   //如果需要spdy也可以加上,lnmp1.2及其後版本都默認支持spdy,lnmp1.3 nginx 1.9.5以上版本默認支持http2
server_name www.vpser.net;     //這裡是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.77169.net;            //網站目錄
ssl_certificate /etc/letsencrypt/live/www.77169.net/fullchain.pem;    //前面生成的證書,改一下裡面的域名就行,不建議更換路徑
ssl_certificate_key /etc/letsencrypt/live/www.77169.net/privkey.pem;   //前面生成的密鑰,改一下裡面的域名就行,不建議更換路徑
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

include wordpress.conf;  //這個是偽靜態根據自己的需求改成其他或刪除
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;     //lnmp 1.0及之前版本替換為include fcgi.conf;
#include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log off;
}

需將上述配置根據自己的實際情況修改後,添加到虛擬主機配置文件最後面。

添加完需要執行:/etc/init.d/nginx reload 重新載入配置使其生效。

如果需要HSTS,可以加上add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

Apache虛擬主機上的設置

Apache在生成證書後也需要修改一下apache的配置文件 /usr/local/apache/conf/httpd.conf ,查找httpd-ssl將前面的#去掉。

然後再執行:
cat >/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虛擬主機配置文件的最後</VirtualHost>下面添加上SSL部分的配置文件:

<VirtualHost *:443>
DocumentRoot /home/wwwroot/www.vpser.net   //網站目錄
ServerName www.77169.net:443   //域名
ServerAdmin licess@77169.net      //郵箱
ErrorLog "/home/wwwlogs/www.vpser.net-error_log"   //錯誤日誌
CustomLog "/home/wwwlogs/www.vpser.net-access_log" common    //訪問日誌
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.77169.net/fullchain.pem   //改一下裡面的域名就行,不建議更換路徑
SSLCertificateKeyFile /etc/letsencrypt/live/www.77169.net/privkey.pem    //改一下裡面的域名就行,不建議更換路徑
<Directory "/home/wwwroot/www.vpser.net">   //網站目錄
SetOutputFilter DEFLATE
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
</VirtualHost>

需將上述配置根據自己的實際情況修改後,添加到虛擬主機配置文件最後面。注意要重啟apache使其實現。執行:/etc/init.d/httpd restart 重啟Apache使其生效。

下面說一下可能會遇到的問題:1、國內DNS服務商可能會不行,目前已知dnspod、cloudxns不行

Namecheap、Route 53的都可以。

2、Linode福利或IPv6用戶福利

可能目前Linode用戶應該遇到了
An unexpected error occurred:
There were too many requests of a given type :: Error creating new registration :: Too many registrations from this IP
Please see the logfiles in /var/log/letsencrypt for more details.
這個不一定是因為IP註冊的次數過多,可能是因為IPv6的事,具體解決方法如下:
執行:sysctl -w net.ipv6.conf.all.disable_ipv6=1 來臨時禁用IPv6
再生成證書後執行:sysctl -w net.ipv6.conf.all.disable_ipv6=0 再來解除禁用IPv6

證書續期

最後要說的是續期,因為證書只有90天,所以建議60左右的時候進行一次續期,續期很簡單可以交給crontab進行完成,執行:

cat >/root/renew-ssl.sh<<EOF
#!/bin/bash
mkdir -p /網站目錄完整路徑/.well-known/acme-challenge
/root/letsencrypt/letsencrypt-auto --renew-by-default certonly --email 郵箱 -d 域名 --webroot -w /網站目錄完整路徑 --agree-tos
EOF
chmod +x /root/renew-ssl.sh

注意要修改上面letsencrypt-auto的路徑為你自己的,並且裡面的郵箱和域名也要修改。
再crontab裡添加上:0 3 */60 * * /root/renew-ssl.sh 具體crontab教程點擊查看

2015.12.13更新
官網更新了參數,對本文進行了部分參數的調整。原-a webroot --webroot-path=/網站目錄完整路徑替換為--webroot -w;--renew替換為--renew-by-default;增加--agree-tos參數。

同時這裡提醒一下如果設置了http 301跳到https的用戶,再續期前還需要在nginx設置如下:
80埠的虛擬主機上需要添加上,不加的話會無法驗證的

location /.well-known/ {
add_header Content-Type 'text/plain;';
root /網站目錄完整路徑;
}

附完整的nginx下301 http跳到https的配置:

server
{
listen 80;
server_name www.vpser.net;
location /.well-known/ {
add_header Content-Type 'text/plain;';
root /網站目錄完整路徑;
}
location / {
return 301 https://www.77169.com$request_uri;
}
}

 



 3、最後

      以上配置無誤,就直接可以使用https,我的測試環境是 虛擬主機 + 負載均衡,整體搭建到上線使用,不到二十分鐘,各大瀏覽器測試均正常

比特幣贊助打賞地址:13sbdFRyFBeqmXY9GJQf66s5cwmvLvWaAD

----

要聞、乾貨、原創、專業
關注「黑白之道」 微信:i77169
華夏黑客同盟我們堅持,自由,免費,共享!

相關焦點

  • SSLScan:SSL版本檢測與密碼套件
    ssl版本和加密套件(包括TLS),可以檢查心臟滴血漏洞和POODLE漏洞。特別是當你所處網際網路環境有限,不能使用在線工具(如優秀的Qualsys SSL實驗室 – https://www.ssllabs.com/ssltest/)時顯得特別有用。特徵sslscan有相當完整的支持來檢測SSL和TLS的所有版本和密碼,包括漏洞(如Heartbleed和Poodle)。在輸出中突出高亮SSLv2和SSLv3密碼。
  • 使用 Let's Encrypt 生成免費的 SSL 證書
    Let's Encrypt 是由網際網路安全研究小組(ISRG,一個公益組織)於 2015 年末推出的數字證書認證機構,將通過旨在消除當前手動創建和安裝證書的複雜過程的自動化流程,為安全網站提供免費的 SSL/TLS 證書。Let's Encrypt 的使用相對簡單,並且完全免費,是很多中小網站的首先。certbot 是什麼?
  • 免費SSL證書服務排行榜-國內外免費SSL申請與使用點評
    最近部落也分享了不少的免費SSL證書服務,很多朋友都已經按照SSL相關文檔成功部署安裝,但是仍然有一些新手朋友對於如何選擇免費SSL證書有疑問,所以本文就從自己這些年來試用各類免費SSL證書服務,分析點評各個免費SSL的優劣之處。
  • Let's Encrypt 免費通配符 SSL 證書申請教程
    這就意外味著用戶可以在 Let’s Encrypt 上免費申請支持通配符的 SSL 證書。什麼是 Let’s EncryptLet’s Encrypt 是國外一個公共的免費 SSL 項目,由 Linux 基金會託管。它的來頭不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等組織發起,目的就是向網站自動籤發和管理免費證書。
  • 在 Ubuntu 上使用 SSL/TLS 搭建一個安全的 FTP 伺服器
    在本教程中,我們將介紹如何使用 Ubuntu 16.04 / 16.10 中的 SSL / TLS 保護 FTP 伺服器(FTPS)。
  • 手把手教你免費申請支持通配符的 SSL 證書
    大部分傳統 CA 機構籤發證書是需要收費的,這不利於推動 HTTPS 協議的使用。Let’s Encrypt 是一個國外的非盈利的 CA 證書機構,旨在以自動化流程消除手動創建和安裝證書的複雜流程,並推廣使全球資訊網伺服器的加密連接無所不在,為安全網站提供免費的 SSL/TLS 證書。
  • HTTPS 簡介及使用官方工具 Certbot 配置 Let's Encrypt SSL 安全證書詳細教程
    這個免費證書不僅免費,而且還相當好用,所以我們就可以利用 Let’s Encrypt 提供的免費證書部署 https 了。那麼怎麼獲得 Let’s Encrypt 安全證書,並且將它部署在自己的網站伺服器上呢?這就是這篇文章要講的內容了。註:對 https  、數字證書及 CA 的工作原理感興趣的同學可以閱讀編程隨想的系列文章。
  • 使用ssl_exporter監控K8S集群證書
    使用kubeadm搭建的集群默認證書有效期是1年,續費證書其實是一件很快的事情。但是就怕出事了才發現,畢竟作為專業搬磚工程師,每天都很忙的。鑑於此,監控集群證書有效期是一件不得不做的事情。安裝apiVersion: v1kind: Servicemetadata:  labels:    name: ssl-exporter  name: ssl-exporterspec:  ports:    - name: ssl-exporter      protocol
  • 增強 nginx 的 SSL 安全性
    這樣我們就擁有了一個健壯而可經受考驗的 SSL 配置,並可以在 Qually Labs 的 SSL 測試中得到 A 級評分。如果不求甚解的話,可以從 https://cipherli.st 上找到 nginx 、Apache 和 Lighttpd 的安全設置,複製粘帖即可。本教程在 Digital Ocean 的 VPS 上測試通過。
  • 加強 Nginx 的 SSL 安全
    確保你的OpenSSl是最近更新過的版本而且你的客戶端也要使用最新的軟體。Heartbleed(心臟出血)Hearbleed是一個在2014年四月OpenSSL密碼庫裡被發現的安全漏洞,它被廣泛用在運輸層(TLS)協議的實施中。Heartbleed可能被使用不管是否使用了一個易受攻擊的OpenSSL,比如說在一個伺服器或者客戶端使用。
  • 最近很火的 iPhone 透明手機製作教程,一學就會
  • 如何在Node.js中使用SSL / TLS
    在本教程中,我將引導您通過一個實際示例,說明如何將Let's Encrypt生成的證書添加到Express.js伺服器。但是,僅使用HTTPS保護我們的網站和應用程式還不夠。我們還應該要求正在與之通信的伺服器進行加密連接。我們將看到有可能激活SSL / TLS層,即使默認情況下未啟用它也是如此。
  • Nginx+SSL+Tomcat+CDN 部署總結
    軟體版本如下:SystemCentos 6.5NginxTengine/2.1.2 (nginx/1.6.2)SSL證書Let's Encrypt 免費SSL證書TomcatApache-tomcat-8.0.47CDNCloudflare.com
  • Https超文本傳輸協議-SSL證書
    申請免費證書(以上都是在實名認證的情況下)騰訊雲: https://console.cloud.tencent.com/ssl阿里雲:https://www.aliyun.com/sswd/458133-1.html
  • TLS/SSL 高級進階
    不過,看價格,比如我這個就是騰訊雲給的一個免費的 DV 證書,所以,就支持一個 3 級域名(https://www.villainhr.com)。如果是收費的,單/多域名應該都支持。OV:就比較牛逼,面向企業的,多域名/泛域名都支持。EV:屬於貴族用的,一般人也搞不到,主要它還需要去買個保險。。。那我們的證書在芸芸證書中,是處於哪一個層級呢?
  • 基於SSL的Client模型
    在計算機網絡上,OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。同時,OpenSSL也是一個開放原始碼的軟體庫包。任何一個強大複雜的功能庫,都可能會被裁剪設計為適合小型嵌入式設備開發的功能庫。本文使用到的mbedtls,使得開發人員可以非常輕鬆地在嵌入式產品中加入加密和SSL/TLS功能。
  • 如何在 CentOS 7 中使用 SSL/TLS 加固 FTP 伺服器進行安全文件傳輸
    在一開始的設計中,FTP(文件傳輸協議)就是不安全的,意味著它不會加密兩臺機器之間傳輸的數據以及用戶的憑據。
  • 亞馬遜免費開店教程,亞馬遜免費開店詳細教程
    亞馬遜免費開店教程亞馬遜開店需要準備資料如下1、郵箱(多個站點請提供不同郵箱)2、收款帳號(部分可以個人名義註冊):連連支付(可以加微信1756139811申請)、WF、Payoneer(需公司)等3、國際信用卡:visa或master信用卡(歐洲站必須法人信用卡)4、營業執照照片(多數個體戶不支持註冊
  • 網紅「電流粒子」動態桌面,最近很火!
    ❐ 最近有一款十分炫酷的動態壁紙在抖音上特別火,只要在手機裝上這款壁紙,當手機靜止不動的時桌面的彩色粒子會以射線狀向外無限運動,有一種玩貪食蛇的感受
  • SSL_TLS 攻擊原理解析
    連接建立完成,使用加密傳輸詳細敘述:1、瀏覽器將自己支持的加密規則(也就是 CipherSuite )發給伺服器2、伺服器端收到請求,然後從客戶支持的 CipherSuite 中選出一個應答,並發送給客戶端公鑰證書和選用的 HASH 算法3、客戶端收到公鑰之後,利用自己的信任的根證書對收到的公鑰進行驗證.若通過,客戶端隨機生成對稱密鑰 (Pre-Master secret),通過伺服器發給客戶端,然後使用公鑰對對稱密鑰進行加密,並計算連接中全部報文信息的