作者:小傅哥
部落格:https://bugstack.cn
沉澱、分享、成長,讓自己和他人都能有所收穫!😄
大家好,我是技術UP主小傅哥。
兄弟👬🏻,當你手裡有不少域名,每個域名又配置子域名,那麼ssl將是一筆不小的費用。當然各個雲廠商,也都有提供免費的ssl證書,但這裡有一個問題,就是基本都不提供免費的泛域名證書(免費20個單域名證書),比如 x.gaga.plus
、b.gaga.plus
這就要申請2個域名證書了!並且3個月就過期,一年就折騰這,都能折騰哭😭!那咋辦?
像我這樣做技術分享的,再把一些學習專案部署上線讓大家學習體驗,站點;https://gaga.plus 就會拆分出不少的子域名,做獨立的專案展示。那麼就非常需要一款好用的、免費的、泛域名證書,最好還能支援到期自動續期,否則有時候都容易忘記哪個域名忘記更換證書。好在後來找到了一款 https://freessl.cn/ 不過這東西很多夥伴可能不會部署,所以今天給大家分享下,如何配置和使用這塊免費的ssl。
文末還有實戰專案學習,早早的積累一些各類場景的程式設計經驗,讓自己立於不敗之地,面試也就不心慌了!
一、產品介紹
freessl.cn 一個提供免費HTTPS證書申請的網站。已實測體驗,確實挺好用。
二、ssl證書
1. 泛域名證書建立
*.xiaofuge.tech
不匹配xiaofuge.tech
如果有根域名訪問,需要單獨再申請。
2. dcv 驗證(cname)
2.1 獲取驗證標識
- 選擇 cname 方式進行驗證。
2.2 域名驗證配置
- 進入你的域名,配置解析。選擇 CNAME 記錄型別,填寫 freessl 提供給你的記錄值進行填寫。
2.3 獲得部署命令
- 點選【配置完成,立即檢測】即可獲得到部署命令。如果驗證失敗一種是域名時間未生效,另外就是手殘黨複製錯了。
- 這裡主要會用到
acme.sh
指令碼進行部署。下文部署會進行操作
3. 證書部署
3.1 acme.sh 安裝
acme.sh 是一個用於自動化管理和獲取SSL/TLS證書的UNIX shell指令碼。它使用ACME協議(自動證書管理環境)與證書頒發機構(如Let's Encrypt)進行互動,以便為網站自動頒發、續簽和安裝SSL/TLS證書。
文件:https://blog.freessl.cn/acme-quick-start/
[root@lavm-aqhgp9nber ~]# curl https://get.acme.sh | sh -s email=xiaofuge@qq.com % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1032 0 1032 0 0 1337 0 --:--:-- --:--:-- --:--:-- 1336
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 218k 100 218k 0 0 1338 0 0:02:46 0:02:46 --:--:-- 8442
[Wed Apr 24 22:52:39 CST 2024] Installing from online archive.
[Wed Apr 24 22:52:39 CST 2024] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Wed Apr 24 22:52:46 CST 2024] Extracting master.tar.gz
[Wed Apr 24 22:52:46 CST 2024] It is recommended to install socat first.
[Wed Apr 24 22:52:46 CST 2024] We use socat for standalone server if you use standalone mode.
[Wed Apr 24 22:52:46 CST 2024] If you don't use standalone mode, just ignore this warning.
[Wed Apr 24 22:52:46 CST 2024] Installing to /root/.acme.sh
[Wed Apr 24 22:52:46 CST 2024] Installed to /root/.acme.sh/acme.sh
[Wed Apr 24 22:52:46 CST 2024] Installing alias to '/root/.bashrc'
[Wed Apr 24 22:52:46 CST 2024] OK, Close and reopen your terminal to start using acme.sh
[Wed Apr 24 22:52:46 CST 2024] Installing alias to '/root/.cshrc'
[Wed Apr 24 22:52:46 CST 2024] Installing alias to '/root/.tcshrc'
[Wed Apr 24 22:52:46 CST 2024] Installing cron job
no crontab for root
no crontab for root
[Wed Apr 24 22:52:46 CST 2024] Good, bash is found, so change the shebang to use bash as preferred.
[Wed Apr 24 22:52:48 CST 2024] OK
[Wed Apr 24 22:52:48 CST 2024] Install success!
- 注意安裝完成後執行;
source ~/.bashrc
這樣才能生效 acme.sh 配置 - 安裝過程有點慢,需要等待下 Install success! 安裝完成。目前官網提供的映象地址不太好用。
3.2 證書安裝
用你在 2.3 步驟獲取的命令進行安裝。
acme.sh --issue -d *.xiaofuge.tech --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/ko9v932ceuu2kr06pe68
- 執行命令後,完成安裝即可獲得
*.cer
、*.key
兩個檔案地址。這個就是用於配置 ssl 域名證書的。
三、域名配置
- 配置域名解析,把你要使用的域名和雲伺服器配置上A記錄。這樣請求到域名的時候就會解析到伺服器的IP了,以及對應的 Nginx 轉發。
四、Nginx 配置
1. 指令碼工程
- 工程:https://gitcode.net/KnowledgePlanet/road-map/xfg-dev-tech-ssl
- 說明:工程中提供了Nginx配置的初始資訊,你只需要參考修改為自己的域名後,執行
docker-compose.yml
即可安裝 Nginx
1.1 修改域名
server {
listen 80;
listen [::]:80;
server_name ssl01.xiaofuge.tech;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name ssl01.xiaofuge.tech;
ssl_certificate /root/.acme.sh/*.xiaofuge.tech_ecc/*.xiaofuge.tech.cer;
ssl_certificate_key /root/.acme.sh/*.xiaofuge.tech_ecc/*.xiaofuge.tech.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
- 首先,修改
ssl01.xiaofuge.tech
為你的域名。 - 之後,修改 ssl 地址資訊。這個地址是 docker-compose 對映的地址。如果你是 linux 直接安裝,則可以直接使用 acme.sh 安裝的時候生成的地址。
- 注意,更多 Nginx 配置 https://bugstack.cn/md/road-map/nginx.html
1.2 修改ssl
version: '3'
# docker-compose -f docker-compose.yml up -d
services:
nginx:
image: nginx:1.25.3
container_name: nginx
ports:
- '443:443'
- '80:80'
volumes:
- './nginx/logs:/var/log/nginx'
- './nginx/html:/usr/share/nginx/html'
- './nginx/conf/nginx.conf:/etc/nginx/nginx.conf'
- './nginx/conf/conf.d:/etc/nginx/conf.d'
- '/root/.acme.sh/*.xiaofuge.tech_ecc/*.xiaofuge.tech.cer:/root/.acme.sh/*.xiaofuge.tech_ecc/*.xiaofuge.tech.cer'
- '/root/.acme.sh/*.xiaofuge.tech_ecc/*.xiaofuge.tech.key:/root/.acme.sh/*.xiaofuge.tech_ecc/*.xiaofuge.tech.key'
privileged: true
restart: always
- 修改 docker-compose 檔案中 cer和 key 的地址。基本就是
xiaofuge.tech
名稱的變化
2. 上傳檔案
- 配置資訊全部修改後,上傳到你的雲伺服器上。有些東西還是要雲伺服器鍛鍊,這裡推薦 https://yun.xfg.plus 2c2g 50元一年。
3. 執行指令碼
[root@lavm-aqhgp9nber ~]# cd dev-ops/
[root@lavm-aqhgp9nber dev-ops]# chmod +x docker-compose.yml
[root@lavm-aqhgp9nber dev-ops]# docker-compose -f docker-compose.yml up -d
[+] Running 1/1
✔ Container nginx Started
- 安裝完成後,可以看到 443、80 埠正常啟動。如果安裝失敗,則可以檢查下日誌。
五、訪問驗證
- 訪問地址;
https://ssl01.xiaofuge.tech/
、https://ssl02.xiaofuge.tech/
驗證證書是否部署成功。 - 如圖,驗證結果符合預期。
六、推薦閱讀
- 營銷系統設計
- MVC2DDD - 架構重構
- 我把DDD腳手架,釋出到了Maven倉庫,大家都能用了
- 方案設計:基於庫表分段掃描和資料Redis預熱,最佳化分散式延遲任務觸達時效性