#!/bin/bash
clear
path="$HOME/Desktop"
days=""
echo -ne "Hello. You must be hoping to create a SSL/TLS security certificate (and key).\n\nBy default, this key will be self-signed. However, you can decide instead to\ncreate an un-signed certificate request (.pem) file to be signed by a\nrecognized certificate authority.\n\nPlease choose from the following options.\n\n s: create a self-signed certificate .crt file (default)\n u: create an un-signed certificate request .pem file\n q: quit\n> "
read go
if [ "$go" = "u" ]; then
echo -ne "What is your country code?\n> "
read c
echo -ne "What is your state/province?\n> "
read st
echo -ne "What is your city?\n> "
read l
echo -ne "What is your organization name?\n> "
read o
elif [ "$go" = "q" ]; then
echo -e "\nHave a nice day."
exit 0
fi
echo -ne "What is your domain name?\n> "
read domain
if [ -z "$domain" ]; then
echo "No domain was given."
exit 0
fi
echo -ne "What is the path where your certificate files should be saved?\n> "
read path
echo -ne "For how many days will your certificate be valid?\n> "
read days
if [ -z "$path" ]; then path="."; fi
if [ -z "$c" ]; then c="US"; fi
if [ -z "$st" ]; then st="Arizona"; fi
if [ -z "$l" ]; then l="Phoenix"; fi
if [ -z "$o" ]; then o="PLUG"; fi
if [ -z "$days" ]; then days="365"; fi
if [ -d "$path" ]; then
echo -ne "\nCreating your certificate ..."
if [ "$go" = "u" ]; then
(echo -e "oid_section = new_oids\n[ new_oids ]\n[ req ]\ndefault_days = $days\ndefault_keyfile = $path/$domain.key\ndistinguished_name = req_distinguished_name\nencrypt_key = no\nstring_mask = nombstr\nreq_extensions = v3_req\n[ req_distinguished_name ]\ncommonName = Common Name (eg, YOUR name)\ncommonName_default = $domain\ncommonName_max = 64\n[ v3_req ]\nsubjectAltName=DNS:$domain,DNS:*.$domain" > deleteme.cfg) &> /dev/null;
(openssl req -batch -config deleteme.cfg -newkey rsa:2048 -out $path/$domain.pem) &> /dev/null;
(rm deleteme.cfg) &> /dev/null;
else
(echo -e "subjectAltName=DNS:$domain,DNS:*.$domain" > deleteme.cfg) &> /dev/null;
(openssl genrsa -out $path/$domain.key 2048) &> /dev/null;
(openssl req -new -key $path/$domain.key -subj "/C=$c/ST=$st/L=$l/O=$o/CN=$domain" -out deleteme.csr) &> /dev/null;
(openssl x509 -req -in deleteme.csr -signkey $path/$domain.key -days $days -text -extfile deleteme.cfg -out $path/$domain.crt) &> /dev/null;
(rm deleteme.cfg deleteme.csr) &> /dev/null;
fi
(chmod 400 $path/$domain.key) &> /dev/null;
echo " done."
else
echo "No such directory exists."
fi
echo -e "\nHave a nice day."
Это скрипт bash - так что вы можете сохранить его в файл (назовите его как угодно) на вашем BSD / Linux / Mac / UNIX / и т. Д. компьютер, где вы хотите. Затем вы открываете терминал и делаете что-то вроде этого:
$ cd wherever
$ chmod +x whatever
$ ./whatever
И тогда вы будете следовать инструкциям. Он скажет: «Вы хотите самозаверяющий сертификат или запрос сертификата, который может подписать кто-то другой?», А затем он скажет «Каково ваше доменное имя?» и «когда это истечет?» и т. д.
Когда это будет сделано, у вас будет два файла. У вас будет файл .key, защищенный от записи и содержащий ваш закрытый ключ. И у вас будет файл .crt, который содержит самозаверяющий сертификат, или файл .pem, который содержит не подписанный запрос сертификата. Сценарий позволит вам указать, где вы хотите сохранить файлы.
Если вы планируете использовать самозаверяющий сертификат, все готово. Идите вперед и настройте свой виртуальный хост на своем сервере (как вы, кажется, уже сделали). Если вы планируете использовать сторонние права подписи (например, Verisign и т. Д.), Вам нужно будет отправить им ваш файл .pem, и они ответят, отправив вам подписанный файл .crt.