ไคลเอ็นต์โปรโตคอล ACME เขียนด้วยภาษาเชลล์ (Unix เชลล์) เท่านั้น
การใช้โปรโตคอล ACME เต็มรูปแบบ
รองรับใบรับรอง ECDSA
รองรับใบรับรอง SAN และไวด์การ์ด
เรียบง่าย ทรงพลัง และใช้งานง่ายมาก คุณต้องใช้เวลาเพียง 3 นาทีในการเรียนรู้
รองรับ Bash, dash และ sh
เขียนด้วยเชลล์ล้วนๆ โดยไม่มีการพึ่งพา python
มีเพียงสคริปต์เดียวที่จะออก ต่ออายุ และติดตั้งใบรับรองของคุณโดยอัตโนมัติ
ไม่ต้องการการเข้าถึง root/sudoer
นักเทียบท่าพร้อมแล้ว
IPv6 พร้อมแล้ว
การแจ้งเตือนงาน Cron สำหรับการต่ออายุหรือข้อผิดพลาด ฯลฯ
อาจเป็นเชลล์สคริปต์ easiest & smartest
ในการออกและต่ออายุใบรับรองฟรีโดยอัตโนมัติ
วิกิ: https://github.com/acmesh-official/acme.sh/wiki
สำหรับแฟนนักเทียบท่า: acme.sh ? นักเทียบท่า
ทวิตเตอร์: @neilpangxa
FreeBSD.org
ruby-china.org
พร็อกม็อกซ์
pfsense
Loadbalancer.org
discourse.org
Centminmod
สลินซ์
opnsense.org
แผงเว็บ CentOS
lnmp.org
มากกว่า...
เลขที่ | สถานะ | แพลตฟอร์ม |
---|---|---|
1 | แมค โอเอสเอ็กซ์ | |
2 | Windows (รวม cygwin พร้อม curl, openssl และ crontab) | |
3 | ฟรีBSD | |
4 | โซลาริส | |
5 | อูบุนตู | |
6 | นา | pfsense |
7 | OpenBSD | |
8 | เน็ตบีเอสดี | |
9 | ดราก้อนฟลายBSD | |
10 | ออมนิออส | |
11 | เดเบียน | |
12 | CentOS | |
13 | openSUSE | |
14 | อัลไพน์ Linux (พร้อมขด) | |
15 | อาร์คลินุกซ์ | |
16 | หมวกฟาง | |
17 | กาลี ลินุกซ์ | |
18 | ออราเคิล ลินุกซ์ | |
19 | มาเกอา | |
10 | เจนทู ลินุกซ์ | |
11 | เคลียร์ลินุกซ์ | |
22 | - | คลาวด์ลินุกซ์ #111 |
23 | - | OpenWRT: ทดสอบและใช้งานได้แล้ว ดูหน้าวิกิ |
24 | Proxmox: ดู Proxmox VE วิกิ เวอร์ชัน 4.x, 5.0, 5.1, เวอร์ชัน 5.2 ขึ้นไป |
ตรวจสอบโครงการทดสอบของเรา:
https://github.com/acmesh-official/acmetest
ZeroSSL.com CA (ค่าเริ่มต้น)
Letsencrypt.org แคลิฟอร์เนีย
BuyPass.com แคลิฟอร์เนีย
SSL.com แคลิฟอร์เนีย
Google.com แคลิฟอร์เนียสาธารณะ
โหมดเข้มงวด Pebble
CA อื่นๆ ที่สอดคล้องกับ RFC8555
โหมดเว็บรูท
โหมดสแตนด์อโลน
โหมด tls-alpn แบบสแตนด์อโลน
โหมดอาปาเช่
โหมด Nginx
โหมด DNS
โหมดนามแฝง DNS
โหมดไร้สัญชาติ
ตรวจสอบโครงการนี้: https://github.com/acmesh-official/get.acme.sh
ขด https://get.acme.sh | sh -s อีเมล[email protected]
หรือ:
wget -O - https://get.acme.sh | sh -s อีเมล[email protected]
โคลนโปรเจ็กต์นี้และเปิดการติดตั้ง:
โคลนคอมไพล์ https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --ติดตั้ง -m [email protected]
คุณ don't have to be root
แม้ว่า it is recommended
การติดตั้งขั้นสูง: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
โปรแกรมติดตั้งจะดำเนินการ 3 อย่าง:
สร้างและคัดลอก acme.sh
ไปยังโฮมไดร์ของคุณ ( $HOME
): ~/.acme.sh/
ใบรับรองทั้งหมดจะถูกวางไว้ในโฟลเดอร์นี้ด้วย
สร้างนามแฝงสำหรับ: acme.sh=~/.acme.sh/acme.sh
สร้างงาน cron รายวันเพื่อตรวจสอบและต่ออายุใบรับรองหากจำเป็น
ตัวอย่างรายการ Cron:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
หลังจากการติดตั้ง คุณต้องปิดเทอร์มินัลปัจจุบันและเปิดใหม่อีกครั้งเพื่อให้นามแฝงมีผล
ตกลง คุณพร้อมที่จะออกใบรับรองแล้ว
แสดงข้อความช่วยเหลือ:
root@v1:~# acme.sh -h
ตัวอย่างที่ 1: โดเมนเดียว
acme.sh --issue -d example.com -w /home/wwwroot/example.com
หรือ:
acme.sh --issue -d example.com -w /home/username/public_html
หรือ:
acme.sh --issue -d example.com -w /var/www/html
ตัวอย่างที่ 2: หลายโดเมนในใบรับรองเดียวกัน
acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
พารามิเตอร์ /home/wwwroot/example.com
หรือ /home/username/public_html
หรือ /var/www/html
คือโฟลเดอร์รูทเว็บที่คุณโฮสต์ไฟล์เว็บไซต์ของคุณ คุณ ต้อง มี write access
โฟลเดอร์นี้
อาร์กิวเมนต์ที่สอง "example.com" คือโดเมนหลักที่คุณต้องการออกใบรับรอง คุณต้องมีโดเมนอย่างน้อยหนึ่งโดเมน
คุณต้องชี้และผูกโดเมนทั้งหมดเข้ากับ webroot dir เดียวกัน: /home/wwwroot/example.com
ใบรับรองจะถูกวางไว้ใน ~/.acme.sh/example.com/
ใบรับรองจะต่ออายุโดยอัตโนมัติทุกๆ 60 วัน
ตัวอย่างเพิ่มเติม: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
หลังจากสร้างใบรับรองแล้ว คุณอาจต้องการติดตั้ง/คัดลอกใบรับรองไปยัง Apache/Nginx หรือเซิร์ฟเวอร์อื่นๆ คุณ ต้อง ใช้คำสั่งนี้เพื่อคัดลอกใบรับรองไปยังไฟล์เป้าหมาย ห้าม ใช้ไฟล์ใบรับรองในโฟลเดอร์ ~/.acme.sh/ เนื่องจากมีไว้สำหรับใช้ภายในเท่านั้น โครงสร้างโฟลเดอร์อาจมีการเปลี่ยนแปลงในอนาคต
ตัวอย่าง อาปาเช่ :
acme.sh --install-cert -d example.com --cert-file /path/to/certfile/in/apache/cert.pem --key-file /path/to/keyfile/in/apache/key.pem --fullchain-ไฟล์ /path/to/fullchain/certfile/apache/fullchain.pem --reloadcmd "บริการ apache2 บังคับให้โหลดซ้ำ"
ตัวอย่าง Nginx :
acme.sh --install-cert -d example.com --key-ไฟล์ /path/to/keyfile/in/nginx/key.pem --fullchain-ไฟล์ /path/to/fullchain/nginx/cert.pem --reloadcmd "บริการ nginx บังคับให้โหลดซ้ำ"
ต้องใช้โดเมนเท่านั้น ส่วนพารามิเตอร์อื่นๆ ทั้งหมดจะเป็นทางเลือก
ข้อมูลความเป็นเจ้าของและการอนุญาตของไฟล์ที่มีอยู่จะถูกเก็บรักษาไว้ คุณสามารถสร้างไฟล์ล่วงหน้าเพื่อกำหนดความเป็นเจ้าของและการอนุญาตได้
ติดตั้ง/คัดลอกใบรับรอง/คีย์ไปยังเส้นทาง Apache หรือ Nginx ที่ใช้งานจริง
ใบรับรองจะต่ออายุทุกๆ 60 วันตามค่าเริ่มต้น (ซึ่งสามารถกำหนดค่าได้) เมื่อต่ออายุใบรับรองแล้ว บริการ Apache/Nginx จะถูกโหลดซ้ำโดยอัตโนมัติด้วยคำสั่ง: service apache2 force-reload
หรือ service nginx force-reload
โปรดดูแล: reloadcmd มีความสำคัญมาก สามารถต่ออายุใบรับรองได้โดยอัตโนมัติ แต่หากไม่มี 'reloadcmd' ที่ถูกต้อง ใบรับรองอาจไม่ถูกล้างไปยังเซิร์ฟเวอร์ของคุณ (เช่น nginx หรือ apache) จากนั้นเว็บไซต์ของคุณจะไม่สามารถแสดงใบรับรองที่ต่ออายุได้ภายใน 60 วัน
(คุณต้องเป็น root/sudoer หรือได้รับอนุญาตให้ฟังบนพอร์ต 80 (TCP))
พอร์ต 80
(TCP) จะต้อง ว่างในการฟัง มิฉะนั้นคุณจะได้รับแจ้งให้ปล่อยและลองอีกครั้ง
acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
ตัวอย่างเพิ่มเติม: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(คุณต้องเป็น root/sudoer หรือได้รับอนุญาตให้ฟังบนพอร์ต 443 (TCP))
พอร์ต 443
(TCP) จะต้อง ว่างในการฟัง มิฉะนั้นคุณจะได้รับแจ้งให้ปล่อยและลองอีกครั้ง
acme.sh --issue --alpn -d example.com -d www.example.com -d cp.example.com
ตัวอย่างเพิ่มเติม: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(คุณต้องเป็น root/sudoer เนื่องจากจำเป็นต้องโต้ตอบกับเซิร์ฟเวอร์ Apache)
หากคุณใช้งานเว็บเซิร์ฟเวอร์ ขอแนะนำให้ใช้ Webroot mode
โดยเฉพาะอย่างยิ่งหากคุณใช้งานเซิร์ฟเวอร์ Apache คุณสามารถใช้โหมด Apache แทนได้ โหมดนี้จะไม่เขียนไฟล์ใดๆ ลงในโฟลเดอร์รูทเว็บของคุณ
เพียงตั้งค่าสตริง "apache" เป็นอาร์กิวเมนต์ที่สองและมันจะบังคับให้ใช้ปลั๊กอิน apache โดยอัตโนมัติ
acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
โหมด apache นี้ใช้เพื่อออกใบรับรองเท่านั้น แต่จะไม่เปลี่ยนไฟล์กำหนดค่า apache ของคุณ คุณจะต้องกำหนดค่าไฟล์กำหนดค่าเว็บไซต์ของคุณเพื่อใช้ใบรับรองด้วยตัวเอง เราไม่ต้องการยุ่งกับเซิร์ฟเวอร์ apache ของคุณ ไม่ต้องกังวล
ตัวอย่างเพิ่มเติม: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(คุณต้องเป็น root/sudoer เนื่องจากจำเป็นต้องโต้ตอบกับเซิร์ฟเวอร์ Nginx)
หากคุณใช้งานเว็บเซิร์ฟเวอร์ ขอแนะนำให้ใช้ Webroot mode
โดยเฉพาะอย่างยิ่ง หากคุณใช้งานเซิร์ฟเวอร์ nginx คุณสามารถใช้โหมด nginx แทนได้ โหมดนี้จะไม่เขียนไฟล์ใดๆ ลงในโฟลเดอร์รูทเว็บของคุณ
เพียงตั้งค่าสตริง "nginx" เป็นอาร์กิวเมนต์ที่สอง
มันจะกำหนดค่าเซิร์ฟเวอร์ nginx โดยอัตโนมัติเพื่อตรวจสอบโดเมน จากนั้นคืนค่าการกำหนดค่า nginx เป็นเวอร์ชันดั้งเดิม
ดังนั้นการกำหนดค่าจึงไม่เปลี่ยนแปลง
acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
โหมด nginx นี้ใช้เพื่อออกใบรับรองเท่านั้น แต่จะไม่เปลี่ยนไฟล์กำหนดค่า nginx ของคุณ คุณจะต้องกำหนดค่าไฟล์กำหนดค่าเว็บไซต์ของคุณเพื่อใช้ใบรับรองด้วยตัวเอง เราไม่ต้องการยุ่งกับเซิร์ฟเวอร์ nginx ของคุณ ไม่ต้องกังวล
ตัวอย่างเพิ่มเติม: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
หากผู้ให้บริการ DNS ของคุณรองรับการเข้าถึง API เราสามารถใช้ API นั้นเพื่อออกใบรับรองโดยอัตโนมัติ
คุณไม่จำเป็นต้องทำอะไรด้วยตนเอง!
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
ดู: https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode ก่อน
หากผู้ให้บริการ DNS ของคุณไม่รองรับการเข้าถึง API คุณสามารถเพิ่มระเบียน txt ด้วยตนเองได้
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
คุณควรได้รับผลลัพธ์ดังนี้:
เพิ่มระเบียน txt ต่อไปนี้: โดเมน:_acme-challenge.example.com ค่า Txt:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c เพิ่มระเบียน txt ต่อไปนี้: โดเมน:_acme-challenge.www.example.com ค่า Txt:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx โปรดเพิ่มระเบียน txt เหล่านั้นลงในโดเมน กำลังรอให้ DNS มีผล
จากนั้นให้รันใหม่ด้วยอาร์กิวเมนต์ renew
:
acme.sh --ต่ออายุ -d example.com
โอเค เสร็จแล้ว
ระวัง นี่คือโหมด DNS ด้วยตนเอง ไม่สามารถต่ออายุได้โดยอัตโนมัติ คุณจะต้องเพิ่มระเบียน txt ใหม่ให้กับโดเมนของคุณด้วยมือของคุณเมื่อคุณต่ออายุใบรับรอง
โปรดใช้โหมด DNS API แทน
เพียงตั้งค่าพารามิเตอร์ keylength
ด้วยคำนำหน้า ec-
ตัวอย่างเช่น:
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
โปรดดูพารามิเตอร์ keylength
ด้านบน
ค่าที่ถูกต้องคือ:
ec-256 (prime256v1, "ECDSA P-256" ซึ่งเป็นประเภทคีย์เริ่มต้น)
ec-384 (secp384r1, "ECDSA P-384")
ec-521 (secp521r1, "ECDSA P-521" ซึ่ง Let's Encrypt ยังไม่รองรับ)
2048 (RSA2048)
3072 (RSA3072)
4096 (RSA4096)
ง่ายมาก เพียงกำหนดโดเมนตัวแทนเป็นพารามิเตอร์ -d
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
ไม่ คุณไม่จำเป็นต้องต่ออายุใบรับรองด้วยตนเอง ใบรับรองทั้งหมดจะได้รับการต่ออายุโดยอัตโนมัติทุกๆ 60 วัน
อย่างไรก็ตาม คุณสามารถบังคับให้ต่ออายุใบรับรองได้:
acme.sh --ต่ออายุ -d example.com --force
หรือสำหรับใบรับรอง ECC:
acme.sh --ต่ออายุ -d example.com --force --ecc
หากต้องการหยุดการต่ออายุใบรับรอง คุณสามารถดำเนินการต่อไปนี้เพื่อลบใบรับรองออกจากรายการต่ออายุ:
acme.sh --ลบ -d example.com [--ecc]
ไฟล์ใบรับรอง/คีย์จะไม่ถูกลบออกจากดิสก์
คุณสามารถลบไดเร็กทอรีที่เกี่ยวข้อง (เช่น ~/.acme.sh/example.com
) ได้ด้วยตัวเอง
acme.sh
acme.sh มีการพัฒนาอย่างต่อเนื่อง ดังนั้นจึงขอแนะนำอย่างยิ่งให้ใช้โค้ดล่าสุด
คุณสามารถอัปเดต acme.sh เป็นโค้ดล่าสุดได้:
acme.sh --อัพเกรด
คุณยังสามารถเปิดใช้งานการอัปเกรดอัตโนมัติได้:
acme.sh --อัปเกรด --อัปเกรดอัตโนมัติ
จากนั้น acme.sh จะถูกอัปเดตโดยอัตโนมัติ
ปิดการใช้งานการอัพเกรดอัตโนมัติ:
acme.sh --อัปเกรด --อัปเกรดอัตโนมัติ 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
พูดภาษา ACME โดยใช้เชลล์ โดยตรงกับ "มาเข้ารหัสกันเถอะ"
สิ่งที่ต้องทำ:
Acme-tiny: https://github.com/diafygi/acme-tiny
โปรโตคอล ACME: https://github.com/ietf-wg-acme/acme
โครงการนี้เกิดขึ้นได้ต้องขอบคุณทุกคนที่มีส่วนร่วม
ร่วมเป็นผู้บริจาคทางการเงินและช่วยเรารักษาชุมชนของเรา [มีส่วนช่วย]
สนับสนุนโครงการนี้กับองค์กรของคุณ โลโก้ของคุณจะแสดงที่นี่พร้อมลิงก์ไปยังเว็บไซต์ของคุณ [มีส่วนช่วย]
ใบอนุญาตคือ GPLv3
ได้โปรดติดดาวและแยกฉันด้วย
ยินดีรับประเด็นและคำขอดึง
การบริจาคของคุณทำให้ acme.sh ดีขึ้น:
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
รายการบริจาค