Скрипт генерации ssl сертификатов и ключей для nginx:
Ссылки по теме:
1. openssl req - создание CSR-запроса
2. openssl genrsa - создание файла ключей
#!/bin/sh error() { echo 'ERROR detected! Exiting...' exit 1 } ################################################# DOMAIN='domain.com' EMAIL='admin@domain.com' ORGANISATION='Organisation' CITY='you city' RSA_BIT=2048 DAYS=99365 ################################################# # Генерируем пароль для ключей. PASS=$(tr -cd A-Za-z < /dev/urandom | head -c8) echo 'Generated Password: '${PASS} # Проверим, если не существует каталог для домена, то создаем его. [ ! -d ${DOMAIN} ] && mkdir ${DOMAIN} && echo 'Create directory: '${DOMAIN} #http://linuxcmd.ru/openssl-genrsa-sozdanie-fayla-klyuchey echo "Now create the server private key, you'll be asked for a passphrase:" openssl genrsa -des3 -out ${DOMAIN}/${DOMAIN}.key -passout pass:${PASS} ${RSA_BIT} [ $? -eq 1 ] && error #http://linuxcmd.ru/openssl-req-sozdanie-csr-zaprosa #В пункте Common Name (eg, YOUR name) []: надо указать именно имя домена (без http, https, /): имя.домена echo 'Create the Certificate Signing Request (CSR):' openssl req -out ${DOMAIN}/${DOMAIN}.csr -new -newkey rsa:${RSA_BIT} \ -subj /C=RU/ST=${CITY}/L=${CITY}/O=${ORGANISATION}/OU=${ORGANISATION}/CN=*.${DOMAIN}/emailAddress=${EMAIL} \ -nodes -keyout ${DOMAIN}/${DOMAIN}.key -passout pass:${PASS} [ $? -eq 1 ] && error # Starting up nginx with SSL using the above private key: echo 'Remove the necessity of entering a passphrase for:' cp ${DOMAIN}/${DOMAIN}.key ${DOMAIN}/${DOMAIN}.key.org openssl rsa -in ${DOMAIN}/${DOMAIN}.key.org -out ${DOMAIN}/${DOMAIN}.key [ $? -eq 1 ] && error echo 'Finally sign the certificate using the above private key and CSR:' openssl x509 -req -days ${DAYS} -in ${DOMAIN}/${DOMAIN}.csr -signkey ${DOMAIN}/${DOMAIN}.key -out ${DOMAIN}/${DOMAIN}.crt [ $? -eq 1 ] && error #http://wiki.nginx.org/HttpSslModule cat <<_EOF Update Nginx configuration by including the newly signed certificate and private key: server { server_name YOUR_DOMAINNAME_HERE; listen 443; ssl on; ssl_certificate /usr/local/nginx/conf/server.crt; ssl_certificate_key /usr/local/nginx/conf/server.key; } _EOF #Убедиться в том, что сервер присылает полную цепочку сертификатов, #можно при помощи утилиты командной строки openssl, например: #openssl s_client -connect www.godaddy.com:443
Ссылки по теме:
1. openssl req - создание CSR-запроса
2. openssl genrsa - создание файла ключей
2 комментария:
Спасибо за статью. Правда, еще можно немного добавить команд по генерации csr,key и crt в разных ситуациях (на лету без вопросом, с готовым ключом, с ключом без пароля, и тп.), как пишут здесь - http://sysadm.pp.ua/internet/pound-apache-nginx-ssl-setup.html
Скрипт генерирует только самоподписанные сертификаты, об этом забыл написать в заголовке, будет исправлено :)
Но многие части скрипта можно смело использовать для своих нужд, например я использовал секцию с генерацией csr запроса для получения сертификата на сайте https://login.wosign.com/reg.html (подробнее http://habrahabr.ru/post/249529/)
Код скрипта:
DOMAIN=example.com
PASS=$(tr -cd A-Za-z < /dev/urandom | head -c8)
echo 'Generated Password: '${PASS} | tee ${DOMAIN}.pass
openssl req -out ${DOMAIN}.csr -new -sha256 -newkey rsa:2048 -subj "/C=RU/CN=$DOMAIN" -nodes -keyout ${DOMAIN}.key -passout pass:$PASS
Отправить комментарий