มันเป็นความสามารถที่ค่อนข้างแปลก แต่บรรทัดคำสั่ง OpenSSL สามารถแน่นอน "ลงนามใหม่" ใบรับรองที่มีอยู่
openssl x509 -in oldcert -CA cacertfile [-CAkey capkeyfile] -out newcert -days N
ใบรับรอง CA และคีย์ส่วนตัวต้อง (ทั้งคู่) อยู่ในรูปแบบ PEM คุณสามารถรวมคีย์ส่วนตัวในไฟล์ใบรับรองและไม่ใช้-CAkey file
ตัวเลือก หากคุณละเว้น-days N
ค่าเริ่มต้นที่ถูกต้องเป็น 30 วัน oldcert และ newcert เป็น PEM โดยค่าเริ่มต้น แต่สามารถเปลี่ยนแปลงได้ด้วย-inform
และ-outform
ตามลำดับ
หากคุณเป็นเพียงการทำเช่นนี้แล้วก็ง่ายที่สุดที่จะใช้-set_serial S
สำหรับการใหม่แบบอนุกรม หากคุณจะทำหรืออาจทำหลาย ๆ ครั้งสำหรับหนึ่ง CA เพื่อให้แน่ใจว่าแต่ละรายการได้รับอนุกรมที่ไม่ซ้ำกันให้ OpenSSL ใช้ไฟล์ serial-counter โดยระบุ-CAcreateserial
ในรายการแรกอย่างน้อยที่สุด
โดยค่าเริ่มต้นส่วนขยายจะไม่มีการเปลี่ยนแปลง หาก oldcert มีส่วนขยาย AuthorityKeyIdentifier ที่ชี้ไปที่ CA เก่าและ CA ใหม่นั้นแตกต่างกันสิ่งนี้จะทำให้ใบรับรองผลลัพธ์ไม่สามารถใช้งานได้เนื่องจากไม่สามารถตรวจสอบได้ ส่วนขยายที่เกี่ยวข้องกับ CA อื่น ๆ เช่น CRLDP และ AIA อาจทำให้เกิดปัญหาเช่นกัน ใช้-clrext
เพื่อลบนามสกุลเก่า หากคุณต้องการส่วนขยาย (ใด ๆ ) ในใบรับรองใหม่คุณต้องกำหนดค่าส่วนขยาย (ทั้งหมด) ในไฟล์ที่ระบุด้วย-extfile
และทางเลือก-extensions
(ส่วน)
ดูhttps://www.openssl.org/docs/apps/x509.html#SIGNING-OPTIONS (และไปที่ลิงก์ไปยัง x509v3_config หากคุณต้องการส่วนขยาย) คำเตือนภายใต้-CA
"... โดยไม่มีตัวเลือก -req ข้อมูลที่ป้อน ... จะต้องลงทะเบียนด้วยตนเอง" เกินกำหนด; ถ้าไม่ openssl ให้ข้อความแสดงข้อผิดพลาดเกี่ยวกับ "ไม่สามารถยืนยันได้" แต่สร้างใบรับรองใหม่ตามที่ต้องการ นอกจากนี้รีลีส1.0.1 ก่อนที่ f จะมีข้อผิดพลาดที่ทำให้เคสนี้ผิดเอาต์พุต ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้หนึ่งในเวอร์ชันเหล่านั้น
และตามที่ระบุไว้แล้วเว้นแต่ว่าคุณมี privatekey ที่ตรงกันบางแห่ง (อาจเป็นระบบ / แอพ / สิ่งที่แตกต่างกัน) ใบรับรองที่ได้นั้นมีความ จำกัด มาก