自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一起聊聊如何使用ACME申請SSL證書

安全 應(yīng)用安全
折騰一番后,我找到了一個(gè)免費(fèi)且優(yōu)雅的方案,只需要在服務(wù)器上安裝相關(guān)腳本,就能申請到免費(fèi)的域名證書,它會定期檢查證書的有效期,實(shí)現(xiàn)到期自動(dòng)續(xù)期與更新,從而有效地獲得了一個(gè)“永久”的證書。

前言

通過https協(xié)議訪問網(wǎng)站時(shí),SSL證書確保了數(shù)據(jù)傳輸?shù)陌踩?。目前,大多?shù)云服務(wù)提供商提供的免費(fèi)證書有效期只有90天,想要更長時(shí)間的證書則需要付費(fèi)。這意味著每隔90天就需要重新簽發(fā)并替換證書文件。

折騰一番后,我找到了一個(gè)免費(fèi)且優(yōu)雅的方案,只需要在服務(wù)器上安裝相關(guān)腳本,就能申請到免費(fèi)的域名證書,它會定期檢查證書的有效期,實(shí)現(xiàn)到期自動(dòng)續(xù)期與更新,從而有效地獲得了一個(gè)“永久”的證書。

本文就跟大家詳細(xì)分享下這個(gè)方案,歡迎各位感興趣的開發(fā)者閱讀本文。

環(huán)境搭建

我們需要用到ACME[1]這個(gè)程序來完成證書的申請與簽發(fā)。

程序安裝

首先,我們需要通過SSH連接到服務(wù)器,通過以下命令來安裝:

curl  https://get.acme.sh | sh

安裝程序會自動(dòng)做以下操作:

? 自動(dòng)把a(bǔ)cme.sh安裝到你的 home 的.acme.sh目錄下,即~/.acme.sh/

? 自動(dòng)創(chuàng)建一個(gè) bash的別名,方便命令行的直接使用: alias acme.sh=~/.acme.sh/acme.sh

? 自動(dòng)為你創(chuàng)建 cron任務(wù), 每天 0:00 點(diǎn)自動(dòng)檢測所有的證書, 如果快過期了, 需要更新,則會自動(dòng)更新證書。

更改默認(rèn)證書

因?yàn)閍cme已經(jīng)被ZeroSSL收購,其默認(rèn)的證書方式為ZeroSSL,但此證書生成時(shí)會攜帶郵箱,因此需要更換為letsencrypt[2]

acme.sh --set-default-ca  --server  letsencrypt

申請泛域名證書

泛域名證書是一種能夠?yàn)橥粋€(gè)主域名(例如kaisir.cn)下的所有子域名(如www.kaisir.com、resource.kaisir.cn等)提供安全加密的數(shù)字證書。能夠通過一個(gè)單一的證書來保護(hù)主域名及其所有子域名的數(shù)據(jù)傳輸,使得網(wǎng)站管理者無需為每個(gè)子域名分別購買和管理多個(gè)SSL證書。[3]

通過acme申請的證書,可以綁定滿足該通配符型規(guī)則的任意三級子域名,例如:

www.kaisir.cn
test.kaisir.cn
aaa.kaisir.cn
bb.kaisir.cn
...

如果你對數(shù)字證書比較感興趣,可以移步我的另一篇文章:數(shù)字證書的理解[4]

獲取 DNS API 參數(shù)

acme提供的泛域名證書只能通過dns的形式來做驗(yàn)證,因此我們需要進(jìn)入域名解析控制臺(你可以在此處[5]找到你的域名解析提供商)創(chuàng)建API ID 和 API Key。

我這里以阿里云為例,登錄成功后,去到阿里云的RAM訪問控制面板[6]來創(chuàng)建用戶。

圖片圖片

? 創(chuàng)建完用戶之后,點(diǎn)擊添加權(quán)限按鈕

圖片圖片

? 勾選第一頁的所有權(quán)限

圖片圖片

? 復(fù)制AccessKey ID和AccessKey Secret下來,保存好。

圖片圖片

配置環(huán)境變量

由于每個(gè)平臺的環(huán)境變量名稱是不一樣的,因此你需要去acme-dnsapi網(wǎng)站[7]里找到你平臺的變量名。我這里以阿里云為例,將key和secret換成上一步創(chuàng)建的即可。

export Ali_Key="key"
export Ali_Secret="secret"

生成證書

做完上述操作后,我們的準(zhǔn)備工作就做完了,可以使用acme.sh腳本來創(chuàng)建證書了。

acme.sh --issue --dns dns_ali -d kaisir.cn -d '*.kaisir.cn' --dnssleep 300 --debug

? --dns 用于指定dns校驗(yàn)平臺,我這里是阿里云

? 第一個(gè)-d是你的網(wǎng)站主域名,第二個(gè)是泛域名

?  --dnssleep用于等待操作,因?yàn)榘裻xt添加到后臺,解析不一定能做到立刻生效,所以需要延時(shí)一下,此處我設(shè)置了300秒的延時(shí),執(zhí)行命令的過程會有個(gè)等待倒計(jì)時(shí)。

?  --debug開啟調(diào)試模式,創(chuàng)建過程中會打印詳細(xì)的日志出來,方便定位錯(cuò)誤。

創(chuàng)建成功后,你將看到如下所示的內(nèi)容:

圖片圖片

安裝證書

最后,我們只需要找到創(chuàng)建好的證書,將其在服務(wù)器上的路徑填寫到nginx中即可。腳本會在證書快到期時(shí),自動(dòng)續(xù)期并創(chuàng)建相關(guān)文件。

本章節(jié)將以我的服務(wù)器為例,跟大家分享下如何去做相關(guān)的配置。

配置路徑映射

如果你的服務(wù)是直接運(yùn)行在宿主機(jī)上的,請?zhí)^這一步。

我的服務(wù)是運(yùn)行在docker容器里的,因此需要先把服務(wù)器的證書路徑映射進(jìn)容器中,此處我以docker-compose為例,在volumes節(jié)點(diǎn)下添加映射即可。

nginx-server:
        image: nginx:1.18.0
        container_name: local_nginx
        volumes:
            - /root/.acme.sh/kaisir.cn_ecc:/usr/share/acme

注意:如果你只使用了docker,則需要在運(yùn)行docker run指令時(shí),通過添加-v參數(shù)來添加路徑映射,例如docker run -v /root/.acme.sh/kaisir.cn_ecc:/usr/share/acme。

? /root/.acme.sh/kaisir.cn_ecc 是宿主機(jī)上的路徑

? /usr/share/acme是容器內(nèi)部的路徑

如果你對docker不是很了解,可以移步我的另一篇文章:使用docker來編排Web應(yīng)用[8]

配置nginx

隨后,我們就可以打開nginx的配置文件,指定ssl證書的位置即可。

? /usr/share/acme/就是我們上一步所映射出來的路徑

? fullchain.cer就是我們申請到的泛域名證書

server {
    # 配置ssl證書
    ssl_certificate   /usr/share/acme/fullchain.cer;
    ssl_certificate_key  /usr/share/acme/kaisir.cn.key;
}

實(shí)現(xiàn)效果

最后,我們重啟nginx,通過瀏覽器訪問網(wǎng)站就能看到證書信息了??

圖片圖片

? 訪問子域名的服務(wù)也是正常的

圖片圖片

? 證書詳情如下所示

圖片圖片

引用鏈接

[1] ACME: https://letsencrypt.org/zh-cn/docs/client-options/

[2] letsencrypt: https://letsencrypt.org/

[3] www.kaisir.com、resource.kaisir.cn等)提供安全加密的數(shù)字證書。能夠通過一個(gè)單一的證書來保護(hù)主域名及其所有子域名的數(shù)據(jù)傳輸,使得網(wǎng)站管理者無需為每個(gè)子域名分別購買和管理多個(gè)SSL證書。: http://www.kaisir.com、resource.kaisir.cn等)提供安全加密的數(shù)字證書。能夠通過一個(gè)單一的證書來保護(hù)主域名及其所有子域名的數(shù)據(jù)傳輸,使得網(wǎng)站管理者無需為每個(gè)子域名分別購買和管理多個(gè)SSL證書。

[4] 數(shù)字證書的理解: https://www.kaisir.cn/post/58

[5] 此處: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

[6] RAM訪問控制面板: https://ram.console.aliyun.com/users

[7] acme-dnsapi網(wǎng)站: https://github.com/acmesh-official/acme.sh/wiki/dnsapi

[8] 使用docker來編排Web應(yīng)用: https://www.kaisir.cn/post/175

[9] 個(gè)人網(wǎng)站: https://www.kaisir.cn/

責(zé)任編輯:武曉燕 來源: 神奇的程序員
相關(guān)推薦

2021-09-11 19:02:34

Hook使用版本

2024-09-30 09:33:31

2024-11-27 16:07:45

2023-04-03 00:09:13

2024-09-09 00:00:00

編寫技術(shù)文檔

2025-01-09 07:54:03

2024-01-01 08:46:32

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-09-21 08:16:56

JDK 21向量計(jì)算計(jì)算

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2022-12-07 09:01:14

布局容器VStack?

2021-07-12 11:35:13

Go協(xié)程Goroutine

2021-12-10 07:45:48

字節(jié)音頻視頻

2024-12-10 00:00:25

2021-11-04 06:58:31

CSS性能設(shè)備
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號