Скрипт генерации ssl
сертификатов и ключей для nginx
:
#!/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 {
listen 443;
server_name YOUR_DOMAINNAME_HERE;
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
Ссылки по теме:
Comments
comments powered by Disqus