Я генерую самопідписаний сервер SSL:
$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'
Я хотів би вказати subjectAltName також під час створення, але я не можу знайти інформацію на сторінці opensl про те, як це зробити.
Я генерую самопідписаний сервер SSL:
$ openssl req -x509 -newkey rsa:2048 -subj 'CN=example.com'
Я хотів би вказати subjectAltName також під час створення, але я не можу знайти інформацію на сторінці opensl про те, як це зробити.
Відповіді:
Спробуйте записати 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
openssl
Команда не забезпечує спосіб включити розширення , наприклад , в SubjectAltName без запису файлу конфігурації першого. Я написав просту утиліту, яка робить все автоматично. Доступний на 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.
Створіть самопідписаний сертифікат за допомогою 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
Тут я використав інформацію, але витончив її до тієї самої інформації, яка необхідна для задоволення веб-браузера.
Файл опцій розширень x509 v3:
echo "subjectAltName = @alt_names
[alt_names]
DNS.1 = www.example.com" > v3.ext
Зовнішній ключ файлу:
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
Підпишіть запит на створення cert та додайте дані розширення 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