摘要:在今年月份就已經推出泛域名證書支持了,以前我一直是使用的單域名證書,加上站點開啟了支持,當新增網站應用時不得不為其多帶帶申請證書,十分不便。
Let"s Encrypt 在今年 3 月份就已經推出泛域名證書支持了,以前我一直是使用的單域名證書,加上站點開啟了 HSTS 支持,當新增網站應用時不得不為其多帶帶申請證書,十分不便。
目前比較常用的為 Let"s Encrypt 生成證書的工具比較多,如
acme-tiny
certbot
acme.sh
這里我們將使用 acme.sh 這個工具來安裝 Let"s Encrypt 證書。acme.sh 是一個非常優秀的證書生成工具,其 官網 更是有詳細的中文文檔支持 。
安裝你可以通過下面的腳本來安裝 acme.sh
curl https://get.acme.sh | sh
該操作需要服務器支持 socat 及 curl 模塊。(apt install socat curl)
安裝成功后,會在當前文件夾下生成 .acme.sh 文件夾。
生成證書acme.sh 實現了 acme 協議支持的所有驗證協議,一般有兩種方式驗證: http 和 dns 驗證。由于泛域名證書的解析目前僅支持 DNS 方式驗證,下面我們將通過 DNS 方式來驗證你的域名所有權。
acme.sh --issue --dns -d godruoyi.com -d *.godruoyi.com
這種方式會將相應的解析記錄顯示出來,然后你需要在你的域名管理面板中添加這條 txt 記錄。并等待解析完成之后,重新用下面命令生成證書:
acme.sh --renew -d mydomain.com
注意第二次這里用的是 --renew,當然我們并不想這么麻煩,dns 方式的真正強大之處在于可以使用域名解析商提供的 api 自動添加 txt 記錄完成驗證。
根據你的域名服務商類型,選擇對應的 DNS API。如
1、騰訊云
在 這里申請 API Token,獲取到 ID 及 Token 后執行:
export DP_Id="id" export DP_Key="token"
2、阿里云
在 這里申請阿里云 Accesskey
獲取到 KEY 及 Secret 后執行下面命令:
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
3、生成證書
在配置好上述設置后,就可通過
.acme.sh/acme.sh --issue --dns dns_dp -d godruoyi.com -d *.godruoyi.com
來生成證書,注意這里第一個域名為頂級域名,后面個為泛域名。
這種方式將自動為你的域名添加一條 txt 解析,驗證成功后,這條解析記錄會被刪除,所以對你來說是無感的,就是要等 120秒。
證書生成成功后,默認保存在 .acme.sh/你的頂級域名 中。
配置 Nginx下面我們來為 Nginx 配置 SSL 證書支持。
1、移動下列證書到 /etc/nginx/ssl 文件夾,若無該文件夾,自行創建。
cp ~/.acme.sh/godruoyi.com/fullchain.cer /etc/nginx/ssl/fullchain.cer cp ~/.acme.sh/godruoyi.com/godruoyi.com.key /etc/nginx/ssl/godruoyi.key
2、新建 ssl-params.conf 并把它放到 Nginx 的 snippets 目錄中。
下面的這些配置來自 提高安全性的最佳 Nginx 配置,建議參考。
# /etc/nginx/snippets/ssl-params.conf server_tokens off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 60m; ssl_session_tickets on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.4.4 8.8.8.8 valid=300s; resolver_timeout 10s; ssl_prefer_server_ciphers on; # 證書路徑 絕對地址 ssl_certificate /etc/nginx/ssl/fullchain.cer; ssl_certificate_key /etc/nginx/ssl/godruoyi.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; add_header Strict-Transport-Security "max-age=31536000;includeSubDomains;preload"; add_header X-Frame-Options deny; add_header X-Content-Type-Options nosniff; add_header x-xss-protection "1; mode=block"; add_header Content-Security-Policy "default-src "self"; script-src "self" "unsafe-inline" "unsafe-eval" blob: https:; connect-src "self" https:; img-src "self" data: https: blob:; style-src "unsafe-inline" https:; font-src https:";
3、接下來在 Nginx 主配置文件中開啟 SSL 支持
# /etc/nginx/nginx.conf http { .... ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }
完整的 Nginx 配置文件請參考 我的 Nginx 配置
4、配置虛擬主機
# /etc/nginx/sites-available/godruoyi.com server { listen 80 default_server; listen [::]:80 default_server; server_name godruoyi.com www.godruoyi.com; return 301 https://$server_name$request_uri; } server { # 注意我們設置該站點為默認站點,并移除了 nginx 默認的 default 配置 listen 443 ssl http2 fastopen=3 reuseport default_server; listen [::]:443 ssl http2 fastopen=3 reuseport default_server; server_name www.godruoyi.com godruoyi.com; # 引入 SSL 及 PHP 配置 include snippets/fastcgi-php.conf; include snippets/ssl-params.conf; root /home/godruoyi/websites/godruoyi.com/public; access_log /home/godruoyi/websites/godruoyi.com/storage/logs/nginx-access.log; error_log /home/godruoyi/websites/godruoyi.com/storage/logs/nginx-error.log error; index index.php; # 當訪問域名是不 godruoyi.com 強制跳轉到 https://godruoyi.com if ($host != "godruoyi.com" ) { rewrite ^/(.*)$ https://godruoyi.com/$1 permanent; } }
再來看一個 admin.godruoyi.com 的配置
# /etc/nginx/sites-available/admin.godruoyi.com server { listen 80; listen [::]:80; server_name admin.godruoyi.com; return 301 https://$server_name$request_uri; } server { # 如果多個域名配置在同一主機,這里只需要監聽到 433 就可以了, # 不需要再添加 ssl http2 fastopen=3 reuseport default_server 之類的了 listen 443; listen [::]:443; root /home/godruoyi/websites/admin.godruoyi.com/public-admin; access_log /home/godruoyi/websites/admin.godruoyi.com/storage/logs/nginx-access.log; error_log /home/godruoyi/websites/admin.godruoyi.com/storage/logs/nginx-error.log error; server_name admin.godruoyi.com; index index.php; client_max_body_size 20M; include snippets/fastcgi-php.conf; include snippets/ssl-params.conf; if ($host != "admin.godruoyi.com" ) { rewrite ^/(.*)$ https://admin.godruoyi.com/$1 permanent; } }
4、虛擬主機配置完成,接下來為其配置軟連接測試成功后就可以重啟 Nginx 啦。
sudo ln -s /etc/nginx/sites-available/godruoyi.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/admin.godruoyi.com /etc/nginx/sites-enabled/ # 測試配置是否成功 sudo nginx -t sudo service nginx restart
以上所有配置你都可以在 這里 找到,別忘了點顆小星星喲
文章首發于 二楞的閑談雜魚
參考鏈接
騰訊云DNSPod API申請Let’s Encrypt泛域名證書
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39988.html
摘要:官網安裝安裝非常簡單直接克隆就可以了生成通配符證書期間需要根據提示設置記錄用作你對判斷你是否擁有域名使用權其中換成你的一級域名即可參數說明表示安裝模式,有安裝模式和驗證模式兩種類型的插件。 官網:https://letsencrypt.org/ 安裝Lets Encrypt 安裝非常簡單直接克隆就可以了 git clone https://github.com/letsencrypt/...
摘要:為了推廣協議,電子前哨基金會成立了,提供免費證書。部署,包含申請域名部署應用,并開啟服務。安裝使用獲取證書對于,使用的插件獲取。 為了推廣HTTPS協議,電子前哨基金會EFF成立了 Lets Encrypt,提供免費證書。 Lets Encrypt一個于2015年三季度推出的數字證書認證機構,將通過旨在消除當前手動創建和安裝證書的復雜過程的自動化流程,為安全網站提供免費的SSL/TLS...
摘要:四操作步驟使用自動生成證書注意使用該命令,可以自動改變配置文件如果下圖中沒有合適的,需要指定證書對應的如下配置更新自動更新注意需要重新添加阿里云證書使用查看是否成功 一、參考鏈接 1. HTTP 協議入門, by 阮一峰2. HTTPS 升級指南, by 阮一峰3. let encrypt, getting start4. certbot5. SSL Server Test 二、環境...
閱讀 1579·2021-09-26 09:46
閱讀 2664·2021-09-07 09:59
閱讀 2750·2021-09-07 09:59
閱讀 1855·2019-08-30 14:20
閱讀 922·2019-08-26 13:39
閱讀 3172·2019-08-26 12:24
閱讀 770·2019-08-26 11:55
閱讀 1211·2019-08-23 16:49