автоматизируйте поколение сертификатов SSL

Как я могу автоматизировать поколение сам подписанные сертификаты, когда я знаю доменное имя?

Это работает, но это спрашивает меня относительно приглашения командной строки определенные вопросы.

Как я должен изменить его, чтобы проигнорировать вопросы и автоматически ввести FQDN?

#! /bin/bash

echo 01 > ca.srl
openssl genrsa -des3 -out ca-key.pem
openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem

openssl genrsa -des3 -out server-key.pem
openssl req -new -key server-key.pem -out server.csr

openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -out server-cert.pem

openssl genrsa -des3 -out client-key.pem
openssl req -new -key client-key.pem -out client.csr

echo extendedKeyUsage = clientAuth > extfile.cnf

openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem -out client-cert.pem -extfile extfile.cnf

openssl rsa -in server-key.pem -out server-key.pem
openssl rsa -in client-key.pem -out client-key.pem
1
задан 12 August 2015 в 00:35
3 ответа

Я думаю, что способ сделать это - создать отдельный каталог для вашего центра сертификации. Поместите туда свои сертификаты подписи CA и создайте файл конфигурации с большинством предварительно заполненных атрибутов (например, O, OU, DC, Alternative Subject и т. Д.). Затем сгенерируйте сертификат, содержащий желаемое имя профиля и полное доменное имя в командной строке.

У меня нет примера, но вы можете найти более подробную информацию в документации OpenSSL.

0
ответ дан 4 December 2019 в 00:02

Спасибо, я рассмеялся. Если вы знаете, что хотите создать несколько сертификатов, то настройте приватный CA.

Но если вы настаиваете, то создание самоподписанного сертификата - это всего лишь одна строка.

openssl req -newkey rsa:4096 -x509 -extensions x509_ca -keyout $HOME/ca.key -out $HOME/ca-$(date +%Y%m%d-%H%M).crt -days 3654

Это, если предположить, что вы правильно задали openssl.conf.

Вам нужно будет передать значения subjectAltName через переменные окружения, однако, их нельзя указать в командной строке.

Т.е.:

SSLSAN="email:copy,DNS:www.example.org" openssl req …

А в openssl.conf:

# Global:
SSLSAN = email:copy
…
[req]
subjectAltName = ${ENV::SSLSAN}
…
[ org1_policy ]
subjectAltName          = optional
1
ответ дан 4 December 2019 в 00:02

Вау, это намного больше, чем тебе нужно. Вот что я делаю:

openssl genrsa -out /etc/ssl/private/${name}.pem 2048
openssl req -new -key /etc/ssl/private/${name}.pem -subj /CN=${name}/ -out /etc/ssl/${name}.csr
openssl x509 -req -days 3650 -in /etc/ssl/${name}.csr -signkey /etc/ssl/private/${name}.pem -out /etc/ssl/certs/${name}.pem
0
ответ дан 4 December 2019 в 00:02

Теги

Похожие вопросы