Чтобы создать файл сертификата SSL для Apache, Я использую следующую команду:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert
И я его вручную кормлю с такими параметрами:
Название страны (двухбуквенный код) [AU]:Австралия
Название штата или провинции (полное название): Мое имя
[Некоторое государство]:Некоторое государство
Название населенного пункта (например, город) []:город
Название организации (например, компания) [Internet Widgits Pty Ltd]:Интернет
Название организационной единицы (например, раздел) []:Раздел
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:ваше имя
Адрес электронной почты []:email@gmail.com
Можно ли ввести их из файла или прямо из командной строки OpenSSL с помощью параметров?
На страницах руководства OpenSSL нет никаких подсказок.
Где-то в вашем конфигурационном файле вам понадобится следующее:
[ req ]
prompt = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName = GB
stateOrProvinceName = Provinceshire
localityName = Locationsville
organizationName = Example Ltd
organizationalUnitName = PKI
commonName = www.example.com
В prompt = no
в [ req ]
останавливает отображение запросов и изменяет формат, ожидаемый в distinguished_name
раздел. Если у вас нет этой опции, OpenSSL будет ожидать формат подсказок, который у вас есть в данный момент.
Обратите внимание, что порядок полей можно изменять и определяет порядок в сертификате.
Вы можете создать файл конфигурации и использовать его в своей команде. Например, вы можете создать файл конфигурации с именем openssl.cnf
и используйте это так:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert -config ./openssl.cnf
В вашем случае вы можете установить следующие параметры:
[ req_distinguished_name ]
# Variable name Prompt string
#------------------------- ----------------------------------
0.organizationName = Organization Name (company)
organizationalUnitName = Organizational Unit Name (department, division)
emailAddress = Email Address
emailAddress_max = 40
localityName = Locality Name (city, district)
stateOrProvinceName = State or Province Name (full name)
countryName = Country Name (2 letter code)
countryName_min = 2
countryName_max = 2
commonName = Common Name (hostname, IP, or your name)
commonName_max = 64
Больше можно найти на http://www.flatmtn.com/article/setting-openssl-create-certificates#SSLCert-4
Его также можно запустить из сценария:
#!/bin/bash
country=WORLD
state=mystate
locality=Mycity
organization=myorg
organizationalunit=IT
email=email@gmail.com
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
/etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.cert -subj
"/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalunit/CN=$commonname/emailAddress=$email"
Нашел по адресу: http://www.jamescoyle.net/how-to/1073-bash-script-to-create-an-ssl-certificate-key-and-request-csr