ฉันสามารถติดตั้งกุญแจสาธารณะได้หรือไม่เมื่อฉันตั้งค่า cronjob เพื่อต่ออายุใบรับรอง LetsEncrypt ทุก ๆ 30 วัน?
หากต่ออายุใบรับรองใหม่คีย์สาธารณะจะได้รับการต่ออายุด้วยหรือไม่
ฉันสามารถติดตั้งกุญแจสาธารณะได้หรือไม่เมื่อฉันตั้งค่า cronjob เพื่อต่ออายุใบรับรอง LetsEncrypt ทุก ๆ 30 วัน?
หากต่ออายุใบรับรองใหม่คีย์สาธารณะจะได้รับการต่ออายุด้วยหรือไม่
คำตอบ:
คำเตือนบางคำเริ่มต้นด้วย:
ฉันสามารถใช้หมุดสาธารณะกับ LetsEncrypt ได้หรือไม่
หากต่ออายุใบรับรองใหม่คีย์สาธารณะจะได้รับการต่ออายุด้วยหรือไม่
จะสะท้อนทุกอย่างที่ gf_ พูด
อย่างไรก็ตามเพื่อตอบคำถามคุณสามารถทำได้
โดยค่าเริ่มต้น Let's Encrypt จะสร้างคีย์และใบรับรองเมื่อต่ออายุ สิ่งนี้ทำให้การติดตั้ง HPKP ทำได้ยากหากคุณต้องการปักหมุดที่ใบไม้ซึ่งคุณควรทำในกรณีที่มีการเปลี่ยนแปลงระดับกลาง ( เหมือนที่ทำในเดือนมีนาคม 2016 )
ดังนั้นคุณมีตัวเลือกมากมายรอบตัวคุณหากคุณยังต้องการทำ HPKP:
ฉันเพิ่งใช้สิ่งนี้โดยใช้ไคลเอนต์ที่ขาดน้ำซึ่งมีการตรวจสอบความถูกต้อง dns01 เบ็ด dns01 เป็นใบรับรองเพราะ DNS ของเราโฮสต์ใน Azure
แก้ไข: เมื่อฉันพูดถึงกุญแจส่วนตัวเห็นได้ชัดว่าฉันมักจะหมายความว่าคุณจะเปลี่ยนส่วนของรหัสสาธารณะเป็นพินเท่านั้น คีย์ส่วนตัวเป็นชื่อแนะนำควรเสมอยังคงเป็นส่วนตัว ดูเบ็ดของตัวเองสำหรับรายละเอียดการใช้งาน
คุณต้องใช้การโรลโอเวอร์คีย์ส่วนตัวเพื่อทำให้เป็นไปได้ นั่นคือคุณมีรหัสส่วนตัวปัจจุบัน (เรียกว่า A) และรหัสส่วนตัวในอนาคต (เรียกว่า B) อยู่ในมือเพื่อให้คุณสามารถเพิ่มทั้งสองลงในพินของคุณได้ ดังนั้น ณ จุดนี้หมุดของคุณคือ A และ B เมื่อถึงวันที่ต่ออายุใบรับรองคีย์ส่วนตัว A จะล้าสมัยและ B กลายเป็นจริง ในขณะเดียวกันคุณจะได้รับคีย์ส่วนตัวในอนาคตใหม่เรียกว่า C คุณสร้างรายการพินใหม่ดังนั้นตอนนี้มันจะมี B และ C นั่นคือวิธีที่คุณหมุนคีย์ส่วนตัวของคุณ แห้งสนับสนุนในขณะนี้
นอกจากนี้คุณต้องมีตะขอที่เรียกว่าทุกครั้งที่คุณต่ออายุใบรับรองและหมุนกุญแจส่วนตัวของคุณ ผมดำเนินการนี้ด้วยตัวเอง
ในที่สุดถ้าฉันได้รับสิทธินี้คุณต้องแน่ใจว่า:
HPKP age x 2 < days between cert renewals
ตัวอย่างเช่นหากอายุ HPKP ของคุณคือ 50 วันและคุณต่ออายุใบรับรองทุกๆ 30 วันลูกค้าที่เข้าชมไซต์ของคุณในวันแรกจะติดอยู่กับคีย์ส่วนตัว A และ B และคุณหมุนไปที่ B และ C ในวันที่ 31 เซิร์ฟเวอร์มี B และ C ลูกค้ามี A และ B มีการแข่งขันแม้ในวันที่ 50 และลูกค้าเปิดเว็บไซต์ได้อย่างถูกต้อง
แต่มาดูกันว่าอายุ HPKP เป็น 70 วัน คุณต่ออายุใบรับรองทุก 30 วันและลูกค้าเข้าเยี่ยมชมเว็บไซต์ของคุณในวันแรกดังนั้นอีกครั้งจะมีเฉพาะคีย์ส่วนตัว A และ B คุณเลื่อนไปที่ B และ C ในวันที่ 31 และกลิ้งไปที่ C และ D ในวันที่ 61 . เซิร์ฟเวอร์ของคุณมี C และ D ลูกค้ามี A และ B ไม่มีการจับคู่และไคลเอ็นต์จะได้รับนิ้วกลางตั้งแต่วันที่ 61 จนถึงวันที่ 71 เมื่อนโยบาย HPKP หมดอายุ
ตัวเลือกอื่นอาจปลอดภัยกว่าและง่ายกว่ามากแน่นอนคือการใช้กุญแจส่วนตัวเดียวกันทุกครั้งและสร้างคีย์ส่วนตัวสำรองหนึ่งหรือหลายตัวจากนั้นทำการเข้ารหัสเหล่านี้ในการกำหนดค่า HPKP ของคุณ
ใช่มันเป็นเรื่องยุ่งยากและอาจมีข้อแม้ที่ฉันไม่เคยนึกถึง แต่เราจะเห็นในระยะยาว เห็นได้ชัดว่าฉันติดตั้งไว้ในโดเมนย่อยที่ไม่น่าสนใจด้วยอายุ HPKP สั้น ๆ (15 วัน) เพื่อที่จะไม่ก่อให้เกิดปัญหาใหญ่
แก้ไข: ฉันได้เขียนสคริปต์บางอย่างเพื่อช่วยคุณตั้งค่า HPKP ด้วย Let's Encrypt และขาดน้ำโดยใช้ Nginx: