ฉันจะระบุ subjectAltName ใน openssl cli ได้อย่างไร


9

ฉันกำลังสร้างใบรับรอง SSL ที่ลงชื่อด้วยตนเอง:

$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'

ฉันต้องการระบุหัวเรื่องAltNameในขณะที่สร้าง แต่ฉันไม่สามารถหาข้อมูลใน openssl manpage เกี่ยวกับวิธีการทำเช่นนี้ได้


2
ไม่มีสวิตช์บรรทัดคำสั่ง คุณต้องเขียนมันลงในไฟล์ปรับแต่งแล้วใช้ไฟล์ปรับแต่งนี้
Steffen Ullrich

คำตอบ:


4

ลองเขียน subjectAltName ไปยังไฟล์ชั่วคราว (ฉันจะตั้งชื่อhostextfile ) เช่น

basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=email:my@other.address,RID:1.2.3.4

และลิงก์ไปยังคำสั่ง openssl ผ่านตัวเลือก "-extfile" ตัวอย่างเช่น:

openssl ca -days 730 -in hostreq.pem -out -hostcert.pem -extfile hostextfile

1
ฉันเชื่อว่าถูกต้อง X509v3 หัวเรื่องทางเลือกชื่อ: DNS: kb.example.com, DNS: helpdesk.example.com
quadruplebucky

ฉันใช้นี้คำอธิบาย
Viktor

3

opensslคำสั่งไม่ได้ให้วิธีการรวมส่วนขยายเช่น SubjectAltName ได้โดยไม่ต้องเขียนไฟล์ config แรก ฉันได้เขียนยูทิลิตี้ง่าย ๆ ที่ทำโดยอัตโนมัติทั้งหมด มีให้ที่ github: https://github.com/rtts/certify

ตัวอย่างการใช้:

./certify example.com www.example.com mail.example.com

สิ่งนี้จะสร้างไฟล์ชื่อexample.com.crtที่มีใบรับรองที่มีหัวเรื่องทางเลือกชื่อของ example.com, www.example.com และ mail.example.com


0

สร้างใบรับรองที่ลงนามเองด้วย SubjectAltName

cd /etc/ssl

cat > my.conf <<- "EOF"
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=UA
ST=Dnepropetrovskaya
L=Kamyanske
O=DMK
OU=OASUP
emailAddress=webmaster@localhost
CN = www.dmkd.dp.ua

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.0 = www.dmkd.dp.ua
DNS.1 = dmkd.dp.ua

EOF

# Create key
openssl genrsa -des3 -out server.key.secure 2048
# Disable secret phrase for key
openssl rsa -in server.key.secure -out server.insecure.key
# Create request certificate file with params from file my.conf
openssl req -new -key server.insecure.key -out server.csr -config my.conf
# Create certificate with params from file my.conf
openssl x509 -req -days 365 -in server.csr -signkey server.insecure.key -out server.crt -extensions req_ext -extfile my.conf
# Check request file and certificate for SubjectAltName precense
openssl req -text -noout -in server.csr
openssl x509 -in server.crt -text -noout

0

ฉันใช้ข้อมูลที่นี่ แต่ผอมลงเป็นข้อมูลที่จำเป็นเพื่อตอบสนองผู้เรียกดู

ไฟล์ตัวเลือก x509 v3 ส่วนขยาย:

echo "subjectAltName = @alt_names

[alt_names]
DNS.1 = www.example.com" > v3.ext

Keyfile ภายนอก:

openssl genrsa -out www.example.com.key 2048

คำขอลงนาม CA: (สมมติว่าคุณมีคีย์ CA และใบรับรอง)

openssl req -new -key www.example.com.key -subj "/CN=www.example.com" -out www.example.com.csr

ลงนามคำขอเพื่อสร้างใบรับรองและรวมข้อมูลส่วนขยาย x509:

openssl x509 -req -in www.example.com.csr -CA ca.example.com.crt -CAkey ca.example.com.key -CAcreateserial -out www.example.com.crt -days 500 -sha256 -extfile v3.ext
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.