กำลังสร้าง
คุณสามารถใช้ไฟล์นามสกุลขนาดเล็ก (utf-8) เพื่อตั้งค่าล่วงหน้ารายการที่คุณต้องการและสร้าง CSR ได้ง่ายขึ้น รายการ DNS ต้องเป็น punycode หากไม่ใช่ ASCII (https://www.rfc-editor.org/rfc/rfc3492)
[ต้องการ]
default_bits = 2048
พรอมต์ = ไม่
default_md = sha256
Distributed_name = dn
req_extensions = ต่อ
[ ต่อ ]
subjectKeyIdentifier=แฮช
keyUsage=digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = mysite.local
DNS.2 = www.mysite.local
[ ดีเอ็นเอ ]
O=ACME
OUT=การทดสอบ
อีเมลแอดเดรส[email protected]
CN = mysite.local
คุณสามารถบันทึกสิ่งนี้เป็น sslcert.cnf
ตัวอย่างเช่น.
ข้อสังเกตเกี่ยวกับสัญลักษณ์แทน
คุณสามารถใช้ไวด์การ์ด เช่น *.example.com พวกเขาทำงานในระดับเดียวเท่านั้น foo.bar.example.com จะไม่ครอบคลุมโดย *.example.com นอกจากนี้ *example.com ยังใช้งานไม่ได้ เครื่องหมายดอกจันจะต้องอยู่ในองค์ประกอบโดเมนของตนเอง
จากนั้น หากคุณยังไม่มีคีย์ส่วนตัว:
openssl req -nodes -newkey rsa:2048 -keyout sslcert.key -ออก sslcert.csr -config sslcert.cnf -utf8
หรือถ้าคุณมีคีย์ส่วนตัวอยู่แล้ว sslcert.key
opensl req -key sslcert.key -out sslcert.csr -config sslcert.cnf -utf8
sslcert.csr
จะเป็นเอาต์พุต (และ sslcert.key
ในตัวอย่างแรก)
คุณยังสามารถเพิ่มหัวข้อ subjectAltName ด้วย -addext
opensl req -nodes -newkey rsa:2048 -keyout sslcert.key -out sslcert.csr -addext 'subjectAltName = DNS:example.com' -utf8
การเช็คชื่อ
คุณสามารถใช้คำสั่ง opensl เพื่อตรวจสอบว่าใบรับรองอาจตรงกับโดเมนที่คุณใช้ในการเรียกดูหรือไม่
opensl x509 - ใน sslcert.crt -noout -checkhost example.com
ในอดีตรายการ CN ในชื่อเฉพาะของ เรื่อง ใช้ในการตรวจสอบชื่อโฮสต์ SSL และยังคงเต็มไปด้วยหนึ่งในโดเมนตามธรรมเนียม แต่เช่น Chrome จะไม่ยอมรับใบรับรองที่ไม่ได้ใช้ส่วน Subject Alternative Names (SAN) และนี่คือส่วนที่ใช้สำหรับใบรับรองแบบหลายชื่อ (แม้ว่าคุณจะใช้เพียงโดเมนที่มีและไม่มี www นั่นคือใบรับรองแบบหลายชื่อแล้ว) ตามบรรทัดฐานของ CA/Browser ชื่อใดๆ ที่คุณตั้งใน CN จะต้องรวมอยู่ในส่วน altnames ด้วย
คุณสามารถดูได้ในผลลัพธ์ของ
opensl x509 -text -noout -in cert.crt | grep -F 'ชื่อเรื่องอื่น:' -A 1
น่าเสียดายที่ไม่มีสวิตช์เอาต์พุตสำเร็จรูปสำหรับเฉพาะส่วน SAN
ดูเหมือนว่า:
X509v3 ชื่อสำรองของหัวเรื่อง:
DNS:cert.local, DNS:cert.example.com
ตรวจสอบเว็บเซิร์ฟเวอร์
หากต้องการดูว่าเว็บเซิร์ฟเวอร์ของคุณส่งคืนใบรับรองและสายโซ่ (หากคุณมีตัวกลาง) ที่คุณตั้งค่าไว้หรือไม่ คุณสามารถใช้คำสั่ง openssl (อาจมาจากเครื่องของเว็บเซิร์ฟเวอร์เอง)
openssl s_client -เชื่อมต่อ example.com:443 -ชื่อเซิร์ฟเวอร์ example.com -showcerts
หากคุณใช้ CA ที่ไม่ได้รวมอยู่ในเครื่องที่ดำเนินการคำสั่ง openssl คุณจะได้รับข้อผิดพลาดในการตรวจสอบ แต่อย่างน้อยคุณก็สามารถเห็นใบรับรองที่ส่งคืนได้
ในการเชื่อมต่อ คุณยังสามารถใช้ที่อยู่ IP ดังนั้นหากเว็บเซิร์ฟเวอร์อยู่ในเครื่องเดียวกันและฟังการย้อนกลับด้วย คุณสามารถพูดได้ว่า
openssl s_client -เชื่อมต่อ localhost:443 -ชื่อเซิร์ฟเวอร์ example.com -showcerts
-ชื่อเซิร์ฟเวอร์
มีไว้สำหรับเลือก vhost ที่เหมาะสมหากเว็บเซิร์ฟเวอร์มี vhost หลายตัวบนพอร์ต 443