SSL/TLS-сертификаты для лентяев
Если в двух словах, то SSL/TLS-сертификат (SSL: Secure Sockets Layer, TLS: Transport Layer Security) – это уникальная цифровая подпись, необходимая для организации защищенного соединения между клиентом и сервером.
Создание SSL-сертификата условно можно разделить на следующие шаги:
- создание личного ключа (Private Key);
- создание запроса для получения сертификата (Certificate Signing Request);
- создание самоподписанного сертификата (Self-Signed Certificate).
Для создания сертификатов я написал небольшой скриптик:
#!/bin/sh #-------------------------------------------------------------------------- # certroutine.sh: script for creating SSL Certificates # $Revision: 1.00 (CentOS Edition by Wakko Warner) $ # $Comment: Any comments please send to wakko@acmelabs.spb.ru $ #-------------------------------------------------------------------------- ################# # User Settings # ################# # Country Name (2 letter code) C_="RU" # State or Province Name (full name) ST_="North-West" # Locality Name (eg, city) L_="Saint-Petersburg" # Organizational Name (eg, company) O_="" # Organizational Unit Name (eg, section) OU_="" # Common Name (eg, YOUR name, domain or host name, don't add *. for wildcards) CN_="" # Email Address EM_="" # Subject Alternative Names (enter * for wildcard certificate) SAN_="" [ "$C" == "" ] && C="$C_"; [ "$ST" == "" ] && ST="$ST_"; [ "$L" == "" ] && L="$L_" [ "$O" == "" ] && O="$O_"; [ "$OU" == "" ] && OU="$OU_"; [ "$CN" == "" ] && CN="$CN_" [ "$EM" == "" ] && EM="$EM_"; [ "$SAN" == "" ] && SAN="$SAN_" if [ "$CN" == "" ]; then echo "This script allows you to create:" echo " o public/private key pairs" echo " o SSL certificate signing requests (CSRs)" echo " o self-signed SSL certificates" echo echo "Edit settings in the script before beginning!" exit 0 fi OPENSSL=/usr/bin/openssl UTF8=`locale -c LC_CTYPE -k | grep -q charmap.*UTF-8 && echo -utf8` KEYLEN=2048 TYPE=rsa:${KEYLEN} [ "$SERIAL" == "" ] && SERIAL=0 [ "$DAYS" == "" ] && DAYS=365 TLSROOT=/etc/pki/tls KEY=${TLSROOT}/private/$CN.key CSR=${TLSROOT}/certs/$CN.csr CRT=${TLSROOT}/certs/$CN.crt PEM=${TLSROOT}/certs/$CN.pem if [ "$SAN" == "*" ]; then CN="*.$CN" SAN="" fi createconfig() { CNF=`/bin/mktemp /tmp/openssl.XXXXXX` CONFIG="-batch -config $CNF" cat <<EOF >$CNF [req] default_bits = $KEYLEN default_md = sha256 distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] countryName = Country Name (2 letter code) countryName_default = $C stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = $ST localityName = Locality Name (eg, city) localityName_default = $L organizationName = Organizational Name (eg, company) organizationName_default = $O organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = $OU commonName = Common Name (eg, YOUR name) commonName_default = $CN commonName_max = 64 emailAddress = Email Address emailAddress_default = $EM [v3_ca] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment EOF if [ ! "$SAN" == "" ]; then echo "subjectAltName = @alt_names" >>$CNF echo "" >>$CNF echo "[alt_names]" >>$CNF i=0 for AN in $SAN do ((i++)) echo "DNS.$i = $AN" >>$CNF done fi } usage() { echo "This script allows you to create:" echo " o public/private key pairs" echo " o SSL certificate signing requests (CSRs)" echo " o self-signed SSL certificates" echo echo Usage: echo " To create a KEY file, run \"$0 genkey\";" echo " To create a CSR file, run \"$0 gencsr\";" echo " To create a CRT file, run \"$0 gencrt\";" echo " To create a PEM file, run \"$0 genpem\";" echo " To verify a CSR file, run \"$0 verifycsr\";" echo " To verify a CRT file, run \"$0 verifycrt\"." echo echo "${TLSROOT}/private/ is output directory for key files" echo "${TLSROOT}/certs/ is output directory for CSR, CRT and PEM files" echo echo "To create a test certificate with serial number other than zero, add SERIAL=num" echo "You can also specify key length with KEYLEN=n and expiration in days with DAYS=n" echo "Also you can specify C=, ST=, L=, O=, OU=, CN=, EM=, SAN=..." echo echo Examples: echo " CN=www.example.com $0 genkey" echo " CN=www.example.com SAN=\"mail.example.com blog.example.com\" $0 gencsr" echo " CN=www.example.com SAN=\"mail.example.com blog.example.com\" $0 gencrt" return 0 } genkey() { umask 77 $OPENSSL genrsa $KEYLEN -sha256 -nodes >$KEY return 0 } gencsr() { umask 77 [ ! -f $KEY ] && genkey createconfig $OPENSSL req $UTF8 -new -key $KEY -out $CSR $CONFIG rm -f $CNF return 0 } verifycsr() { $OPENSSL req -in $CSR -text -verify -noout return 0 } gencrt() { umask 77 [ ! -f $KEY ] && genkey createconfig $OPENSSL req $UTF8 -new -key $KEY -x509 -days $DAYS -out $CRT $CONFIG -set_serial $SERIAL rm -f $CNF CRTHASH=`openssl x509 -hash -noout -in $CRT`.0 rm -f ${TLSROOT}/certs/$CRTHASH ln -s $CN.crt ${TLSROOT}/certs/$CRTHASH return 0 } verifycrt() { $OPENSSL verify $CRT return 0 } genpem() { umask 77 PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` createconfig $OPENSSL req $UTF8 -newkey $TYPE -keyout $PEM1 -nodes -x509 -days $DAYS -out $PEM2 \ $CONFIG -set_serial $SERIAL rm -f $CNF cat $PEM1 > $PEM echo "" >> $PEM cat $PEM2 >> $PEM rm -f $PEM1 $PEM2 return 0 } case $1 in genkey | gencsr | gencrt | genpem | verifycsr | verifycrt) $1 exit $? ;; *) usage exit $? ;; esac
В верхней части скрипта можно заполнить дефолтные значения:
# Country Name (2 letter code) C_="RU" # State or Province Name (full name) ST_="North-West" # Locality Name (eg, city) L_="Saint-Petersburg" # Organizational Name (eg, company) O_="Example Organization" # Organizational Unit Name (eg, section) OU_="" # Common Name (eg, YOUR name, domain or host name, don't add *. for wildcards) CN_="www.example.com" # Email Address EM_="hostmaster@example.com" # Subject Alternative Names (enter * for wildcard certificate) SAN_="mail.example.com"
Тогда для создания ключа и самоподписанного сертификата, нужно будет выполнить:
$ ./certroutine.sh genkey Generating RSA private key, 2048 bit long modulus ............................................+++ .....................................+++ e is 65537 (0x10001) $ ./certroutine.sh gencrt $ ./certroutine.sh verifycrt /etc/pki/tls/certs/www.example.com.crt: OK
Первая команда создаст приватный ключ /etc/pki/tls/private/www.example.com.key
, вторая команда создаст самоподписанный сертификат /etc/pki/tls/certs/www.example.com.crt
, а третья команда проверит валидность этого сертификата.
Note: Безотносительно скрипта, если при проверке любого сертификата пишется что-то типа:
/etc/pki/tls/certs/www.example.com.crt: C = RU, ST = North-West, L = Saint-Petersburg, O = ACME Networks, CN = www.example.com, emailAddress = admin@acmenet.ru error 18 at 0 depth lookup:self signed certificate OK
Это означает, что для этого сертификата, в папке /etc/pki/tls/certs
отсутствует необходимая информация для проверки. Необходимо убедиться, что в этой папке присутствует проверяемый сертификат, а так же присутствуем симлинк с хэшем вместо имени, на проверяемый сертификат. Если симлинка нет – его необходимо создать:
$ cd /etc/pki/tls/certs $ ln -s $CRT `openssl x509 -hash -noout -in $CRT`.0
Где вместо $CRT
– имя файла нашего сертификата.
Если планируется подписывать сертификат по-взрослому, на стороне – необходимо создать личный ключ и запроса для получения сертификата:
$ ./certroutine.sh genkey Generating RSA private key, 2048 bit long modulus ............................................+++ .....................................+++ e is 65537 (0x10001) $ ./certroutine.sh gencsr $ ./certroutine.sh verifycsr verify OK Certificate Request: Data: Version: 0 (0x0) Subject: C=RU, ST=North-West, L=Saint-Petersburg, O=ACME Networks, CN=www.example.com/emailAddress=admin@acmenet.ru Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: [...] Exponent: 65537 (0x10001) Attributes: Requested Extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment Signature Algorithm: sha256WithRSAEncryption [...] $ cat /etc/pki/tls/certs/www.example.com.csr -----BEGIN CERTIFICATE REQUEST----- [...] -----END CERTIFICATE REQUEST-----
Содержимое этого csr
-файла необходимо будет отправлять в компанию, которая будет заверять ваш сертификат.
Так же, скриптом можно пользоваться вот таким образом:
$ CN="www.example.com" ./certroutine.sh genkey $ C="RU" ST="North-West" L="Saint-Petersburg" O="Example Org" CN="www.example.com" \ EM="hostmaster@example.com" SAN="mail.example.com" ./certroutine.sh gencsr $ C="RU" ST="North-West" L="Saint-Petersburg" O="Example Org" CN="www.example.com" \ EM="hostmaster@example.com" SAN="mail.example.com" ./certroutine.sh gencrt
Если будете использовать бесплатные сертификаты от StartSSL, не забудьте сделать следующее:
$ cd /etc/pki/tls/certs $ wget https://www.startssl.com/certs/sub.class1.server.ca.pem $ ln -s sub.class1.server.ca.pem `openssl x509 -hash -noout -in sub.class1.server.ca.pem`.0
Иначе при верификации сертификата будете получать ошибку:
$ openssl verify mail.example.com.crt mail.example.com.crt: C = RU, CN = mail.example.com, emailAddress = hostmaster@example.com error 20 at 0 depth lookup:unable to get local issuer certificate
Andrey
08.04.2015 - 08:37
При выполнении скрипта!
/home/centos/Desktop/1.sh: line 1: $’3\r’: команда не найдена
/home/centos/Desktop/1.sh: line 2: $’4\r’: команда не найдена
/home/centos/Desktop/1.sh: line 3: $’5\r’: команда не найдена
/home/centos/Desktop/1.sh: line 4: $’6\r’: команда не найдена
/home/centos/Desktop/1.sh: line 5: $’7\r’: команда не найдена
/home/centos/Desktop/1.sh: line 6: $’8\r’: команда не найдена
/home/centos/Desktop/1.sh: line 7: $’9\r’: команда не найдена
/home/centos/Desktop/1.sh: line 8: $’10\r’: команда не найдена
/home/centos/Desktop/1.sh: line 9: $’11\r’: команда не найдена
/home/centos/Desktop/1.sh: line 10: $’12\r’: команда не найдена
/home/centos/Desktop/1.sh: line 11: $’13\r’: команда не найдена
/home/centos/Desktop/1.sh: line 12: $’14\r’: команда не найдена
/home/centos/Desktop/1.sh: line 13: $’15\r’: команда не найдена
/home/centos/Desktop/1.sh: line 14: $’16\r’: команда не найдена
/home/centos/Desktop/1.sh: line 15: $’17\r’: команда не найдена
/home/centos/Desktop/1.sh: line 16: $’18\r’: команда не найдена
/home/centos/Desktop/1.sh: line 17: $’19\r’: команда не найдена
/home/centos/Desktop/1.sh: line 18: $’20\r’: команда не найдена
/home/centos/Desktop/1.sh: line 19: $’21\r’: команда не найдена
/home/centos/Desktop/1.sh: line 20: $’22\r’: команда не найдена
/home/centos/Desktop/1.sh: line 21: $’23\r’: команда не найдена
/home/centos/Desktop/1.sh: line 22: $’24\r’: команда не найдена
/home/centos/Desktop/1.sh: line 23: $’25\r’: команда не найдена
/home/centos/Desktop/1.sh: line 24: $’26\r’: команда не найдена
/home/centos/Desktop/1.sh: line 25: $’27\r’: команда не найдена
/home/centos/Desktop/1.sh: line 26: $’28\r’: команда не найдена
/home/centos/Desktop/1.sh: line 27: $’29\r’: команда не найдена
/home/centos/Desktop/1.sh: line 28: $’30\r’: команда не найдена
/home/centos/Desktop/1.sh: line 29: $’31\r’: команда не найдена
/home/centos/Desktop/1.sh: line 30: $’32\r’: команда не найдена
/home/centos/Desktop/1.sh: line 31: $’33\r’: команда не найдена
/home/centos/Desktop/1.sh: line 32: $’34\r’: команда не найдена
/home/centos/Desktop/1.sh: line 33: $’35\r’: команда не найдена
/home/centos/Desktop/1.sh: line 34: $’36\r’: команда не найдена
/home/centos/Desktop/1.sh: line 35: $’37\r’: команда не найдена
/home/centos/Desktop/1.sh: line 36: $’38\r’: команда не найдена
/home/centos/Desktop/1.sh: line 37: $’39\r’: команда не найдена
/home/centos/Desktop/1.sh: line 38: $’40\r’: команда не найдена
/home/centos/Desktop/1.sh: line 39: $’41\r’: команда не найдена
/home/centos/Desktop/1.sh: line 40: $’42\r’: команда не найдена
/home/centos/Desktop/1.sh: line 41: $’43\r’: команда не найдена
/home/centos/Desktop/1.sh: line 42: $’44\r’: команда не найдена
/home/centos/Desktop/1.sh: line 43: $’45\r’: команда не найдена
/home/centos/Desktop/1.sh: line 44: $’46\r’: команда не найдена
/home/centos/Desktop/1.sh: line 45: $’47\r’: команда не найдена
/home/centos/Desktop/1.sh: line 46: $’48\r’: команда не найдена
/home/centos/Desktop/1.sh: line 47: $’49\r’: команда не найдена
/home/centos/Desktop/1.sh: line 48: $’50\r’: команда не найдена
/home/centos/Desktop/1.sh: line 49: $’51\r’: команда не найдена
/home/centos/Desktop/1.sh: line 50: $’52\r’: команда не найдена
/home/centos/Desktop/1.sh: line 51: $’53\r’: команда не найдена
/home/centos/Desktop/1.sh: line 52: $’54\r’: команда не найдена
/home/centos/Desktop/1.sh: line 53: $’55\r’: команда не найдена
/home/centos/Desktop/1.sh: line 54: $’56\r’: команда не найдена
/home/centos/Desktop/1.sh: line 55: $’57\r’: команда не найдена
/home/centos/Desktop/1.sh: line 56: $’58\r’: команда не найдена
/home/centos/Desktop/1.sh: line 57: $’59\r’: команда не найдена
/home/centos/Desktop/1.sh: line 58: $’60\r’: команда не найдена
/home/centos/Desktop/1.sh: line 59: $’61\r’: команда не найдена
/home/centos/Desktop/1.sh: line 60: $’62\r’: команда не найдена
/home/centos/Desktop/1.sh: line 61: $’63\r’: команда не найдена
/home/centos/Desktop/1.sh: line 62: $’64\r’: команда не найдена
/home/centos/Desktop/1.sh: line 63: $’65\r’: команда не найдена
/home/centos/Desktop/1.sh: line 64: $’66\r’: команда не найдена
/home/centos/Desktop/1.sh: line 65: $’67\r’: команда не найдена
/home/centos/Desktop/1.sh: line 66: $’68\r’: команда не найдена
/home/centos/Desktop/1.sh: line 67: $’69\r’: команда не найдена
/home/centos/Desktop/1.sh: line 68: $’70\r’: команда не найдена
/home/centos/Desktop/1.sh: line 69: $’71\r’: команда не найдена
/home/centos/Desktop/1.sh: line 70: $’72\r’: команда не найдена
/home/centos/Desktop/1.sh: line 71: $’73\r’: команда не найдена
/home/centos/Desktop/1.sh: line 72: $’74\r’: команда не найдена
/home/centos/Desktop/1.sh: line 73: $’75\r’: команда не найдена
/home/centos/Desktop/1.sh: line 74: $’76\r’: команда не найдена
/home/centos/Desktop/1.sh: line 75: $’77\r’: команда не найдена
/home/centos/Desktop/1.sh: line 76: $’78\r’: команда не найдена
/home/centos/Desktop/1.sh: line 77: $’79\r’: команда не найдена
/home/centos/Desktop/1.sh: line 78: $’80\r’: команда не найдена
/home/centos/Desktop/1.sh: line 79: $’81\r’: команда не найдена
/home/centos/Desktop/1.sh: line 80: $’82\r’: команда не найдена
/home/centos/Desktop/1.sh: line 81: $’83\r’: команда не найдена
/home/centos/Desktop/1.sh: line 82: $’84\r’: команда не найдена
/home/centos/Desktop/1.sh: line 83: $’85\r’: команда не найдена
/home/centos/Desktop/1.sh: line 84: $’86\r’: команда не найдена
/home/centos/Desktop/1.sh: line 85: $’87\r’: команда не найдена
/home/centos/Desktop/1.sh: line 86: $’88\r’: команда не найдена
/home/centos/Desktop/1.sh: line 87: $’89\r’: команда не найдена
/home/centos/Desktop/1.sh: line 88: $’90\r’: команда не найдена
/home/centos/Desktop/1.sh: line 89: $’91\r’: команда не найдена
/home/centos/Desktop/1.sh: line 90: $’92\r’: команда не найдена
/home/centos/Desktop/1.sh: line 91: $’93\r’: команда не найдена
/home/centos/Desktop/1.sh: line 92: $’94\r’: команда не найдена
/home/centos/Desktop/1.sh: line 93: $’95\r’: команда не найдена
/home/centos/Desktop/1.sh: line 94: $’96\r’: команда не найдена
/home/centos/Desktop/1.sh: line 95: $’97\r’: команда не найдена
/home/centos/Desktop/1.sh: line 96: $’98\r’: команда не найдена
/home/centos/Desktop/1.sh: line 97: $’99\r’: команда не найдена
/home/centos/Desktop/1.sh: line 98: $’100\r’: команда не найдена
/home/centos/Desktop/1.sh: line 99: $’101\r’: команда не найдена
/home/centos/Desktop/1.sh: line 100: $’102\r’: команда не найдена
/home/centos/Desktop/1.sh: line 101: $’103\r’: команда не найдена
/home/centos/Desktop/1.sh: line 102: $’104\r’: команда не найдена
/home/centos/Desktop/1.sh: line 103: $’105\r’: команда не найдена
/home/centos/Desktop/1.sh: line 104: $’106\r’: команда не найдена
/home/centos/Desktop/1.sh: line 105: $’107\r’: команда не найдена
/home/centos/Desktop/1.sh: line 106: $’108\r’: команда не найдена
/home/centos/Desktop/1.sh: line 107: $’109\r’: команда не найдена
/home/centos/Desktop/1.sh: line 108: $’110\r’: команда не найдена
/home/centos/Desktop/1.sh: line 109: $’111\r’: команда не найдена
/home/centos/Desktop/1.sh: line 110: $’112\r’: команда не найдена
/home/centos/Desktop/1.sh: line 111: $’113\r’: команда не найдена
/home/centos/Desktop/1.sh: line 112: $’114\r’: команда не найдена
/home/centos/Desktop/1.sh: line 113: $’115\r’: команда не найдена
/home/centos/Desktop/1.sh: line 114: $’116\r’: команда не найдена
/home/centos/Desktop/1.sh: line 115: $’117\r’: команда не найдена
/home/centos/Desktop/1.sh: line 116: $’118\r’: команда не найдена
/home/centos/Desktop/1.sh: line 117: $’119\r’: команда не найдена
/home/centos/Desktop/1.sh: line 118: $’120\r’: команда не найдена
/home/centos/Desktop/1.sh: line 119: $’121\r’: команда не найдена
/home/centos/Desktop/1.sh: line 120: $’122\r’: команда не найдена
/home/centos/Desktop/1.sh: line 121: $’123\r’: команда не найдена
/home/centos/Desktop/1.sh: line 122: $’124\r’: команда не найдена
/home/centos/Desktop/1.sh: line 123: $’125\r’: команда не найдена
/home/centos/Desktop/1.sh: line 124: $’126\r’: команда не найдена
/home/centos/Desktop/1.sh: line 125: $’127\r’: команда не найдена
/home/centos/Desktop/1.sh: line 126: $’128\r’: команда не найдена
/home/centos/Desktop/1.sh: line 127: $’129\r’: команда не найдена
/home/centos/Desktop/1.sh: line 128: $’130\r’: команда не найдена
/home/centos/Desktop/1.sh: line 129: $’131\r’: команда не найдена
/home/centos/Desktop/1.sh: line 130: $’132\r’: команда не найдена
/home/centos/Desktop/1.sh: line 131: $’133\r’: команда не найдена
/home/centos/Desktop/1.sh: line 132: $’134\r’: команда не найдена
/home/centos/Desktop/1.sh: line 133: $’135\r’: команда не найдена
/home/centos/Desktop/1.sh: line 134: $’136\r’: команда не найдена
/home/centos/Desktop/1.sh: line 135: $’137\r’: команда не найдена
/home/centos/Desktop/1.sh: line 136: $’138\r’: команда не найдена
/home/centos/Desktop/1.sh: line 137: $’139\r’: команда не найдена
/home/centos/Desktop/1.sh: line 138: $’140\r’: команда не найдена
/home/centos/Desktop/1.sh: line 139: $’141\r’: команда не найдена
/home/centos/Desktop/1.sh: line 140: $’142\r’: команда не найдена
/home/centos/Desktop/1.sh: line 141: $’143\r’: команда не найдена
/home/centos/Desktop/1.sh: line 142: $’144\r’: команда не найдена
/home/centos/Desktop/1.sh: line 143: $’145\r’: команда не найдена
/home/centos/Desktop/1.sh: line 144: $’146\r’: команда не найдена
/home/centos/Desktop/1.sh: line 145: $’147\r’: команда не найдена
/home/centos/Desktop/1.sh: line 146: $’148\r’: команда не найдена
/home/centos/Desktop/1.sh: line 147: $’149\r’: команда не найдена
/home/centos/Desktop/1.sh: line 148: $’150\r’: команда не найдена
/home/centos/Desktop/1.sh: line 149: $’151\r’: команда не найдена
/home/centos/Desktop/1.sh: line 150: $’152\r’: команда не найдена
/home/centos/Desktop/1.sh: line 151: $’153\r’: команда не найдена
/home/centos/Desktop/1.sh: line 152: $’154\r’: команда не найдена
/home/centos/Desktop/1.sh: line 153: $’155\r’: команда не найдена
/home/centos/Desktop/1.sh: line 154: $’156\r’: команда не найдена
/home/centos/Desktop/1.sh: line 155: $’157\r’: команда не найдена
/home/centos/Desktop/1.sh: line 156: $’158\r’: команда не найдена
/home/centos/Desktop/1.sh: line 157: $’159\r’: команда не найдена
/home/centos/Desktop/1.sh: line 158: $’160\r’: команда не найдена
/home/centos/Desktop/1.sh: line 159: $’161\r’: команда не найдена
/home/centos/Desktop/1.sh: line 160: $’162\r’: команда не найдена
/home/centos/Desktop/1.sh: line 161: $’163\r’: команда не найдена
/home/centos/Desktop/1.sh: line 162: $’164\r’: команда не найдена
/home/centos/Desktop/1.sh: line 163: $’165\r’: команда не найдена
/home/centos/Desktop/1.sh: line 164: $’166\r’: команда не найдена
/home/centos/Desktop/1.sh: line 165: $’167\r’: команда не найдена
/home/centos/Desktop/1.sh: line 166: $’168\r’: команда не найдена
/home/centos/Desktop/1.sh: line 167: $’169\r’: команда не найдена
/home/centos/Desktop/1.sh: line 168: $’170\r’: команда не найдена
/home/centos/Desktop/1.sh: line 169: $’171\r’: команда не найдена
/home/centos/Desktop/1.sh: line 170: $’172\r’: команда не найдена
/home/centos/Desktop/1.sh: line 171: $’173\r’: команда не найдена
/home/centos/Desktop/1.sh: line 172: $’174\r’: команда не найдена
/home/centos/Desktop/1.sh: line 173: $’175\r’: команда не найдена
/home/centos/Desktop/1.sh: line 174: $’176\r’: команда не найдена
/home/centos/Desktop/1.sh: line 175: $’177\r’: команда не найдена
/home/centos/Desktop/1.sh: line 176: $’178\r’: команда не найдена
/home/centos/Desktop/1.sh: line 177: $’179\r’: команда не найдена
/home/centos/Desktop/1.sh: line 178: $’180\r’: команда не найдена
/home/centos/Desktop/1.sh: line 179: $’181\r’: команда не найдена
/home/centos/Desktop/1.sh: line 180: $’182\r’: команда не найдена
/home/centos/Desktop/1.sh: line 181: $’183\r’: команда не найдена
/home/centos/Desktop/1.sh: line 182: $’184\r’: команда не найдена
/home/centos/Desktop/1.sh: line 183: $’185\r’: команда не найдена
/home/centos/Desktop/1.sh: line 184: $’186\r’: команда не найдена
/home/centos/Desktop/1.sh: line 185: $’187\r’: команда не найдена
/home/centos/Desktop/1.sh: line 186: $’188\r’: команда не найдена
/home/centos/Desktop/1.sh: line 187: $’189\r’: команда не найдена
/home/centos/Desktop/1.sh: line 188: $’190\r’: команда не найдена
/home/centos/Desktop/1.sh: line 189: $’191\r’: команда не найдена
/home/centos/Desktop/1.sh: line 190: $’192\r’: команда не найдена
/home/centos/Desktop/1.sh: line 191: $’193\r’: команда не найдена
/home/centos/Desktop/1.sh: line 192: $’194\r’: команда не найдена
/home/centos/Desktop/1.sh: line 193: $’195\r’: команда не найдена
/home/centos/Desktop/1.sh: line 194: $’196\r’: команда не найдена
/home/centos/Desktop/1.sh: line 195: $’\r’: команда не найдена
/home/centos/Desktop/1.sh: line 202: $’\r’: команда не найдена
/home/centos/Desktop/1.sh: line 222: $’\r’: команда не найдена
/home/centos/Desktop/1.sh: line 253: syntax error near unexpected token `$'{\r»
‘home/centos/Desktop/1.sh: line 253: `createconfig() {
Константин
10.04.2015 - 15:36
Спасибо! А как теперь его нужно применить в консоли?
sergey
12.04.2015 - 12:22
доброго времени!
./certroutine.sh genkey проходит нормально, а ./certroutine.sh gencsr выдаёт следущее
[v3_req]
basicConstraints= CA:FALSE
keyUsage= nonRepudiation, digitalSignature, keyEncipherment
unable to find ‘distinguished_name’ in config
problems making Certificate Request
139891754239904:error:0E06D06C:configuration file routines:NCONF_get_string:no value:conf_lib.c:335:group=req name=distinguished_name
Error opening Certificate /etc/pki/tls/certs/free-adm.ru.crt
140250715817888:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen(‘/etc/pki/tls/certs/free-adm.ru.crt’,’r’)
140250715817888:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load certificate
я как понимаю ещё чего-то не хватает, а вот чего не совсем понятно
Wakko
12.04.2015 - 12:32
Есть подозрение что у вас старый openssl, который не понимает формат нового конфига.
Можете попробовать изменить формат конфига в скрипте используя второй каммент вот этого бага.
sergey
12.04.2015 - 19:53
yum list installed | grep openssl
openssl.x86_64 1:1.0.1e-42.el7.4 @updates
openssl-libs.x86_64 1:1.0.1e-42.el7.4 @updates
По приведённой вами ссылке у меня ничего не вышло (может руки кривоваты, и кривизны извилин не хватает). Система недавно поставлена и обновлена. А точно не нужно настраивать openssl перед использованием этого скрипта?
Vladimir
25.08.2015 - 23:06
спасибо отлично работает
QDe$Nik
12.10.2015 - 00:54
Скрипт не проходит. Пишет команда не найдена — $’\r’ в 7 и 27 строке. Ошибка синтаксиса — ‘$'{\r» ‘createconfig() { в 58 строке.
QDe$Nik
12.10.2015 - 02:03
line 7: $’\r’: команда не найдена
line 27: $’\r’: команда не найдена
line 58: syntax error near unexpected token $'{\r»
line 58: createconfig() {
выскакивают такие ошибки при выполнении скрипта.
openssl.x86_64 1:1.0.1e-42.el7.9 @updates
openssl-libs.x86_64 1:1.0.1e-42.el7.9 @updates
j3149010@trbvm.com
26.01.2016 - 21:41
У Вас отсутсвует одна строка
# ./certroutine.sh genpem
QDesNik
21.04.2016 - 23:27
Где её прописать?
QDesNik
22.04.2016 - 00:43
Команда ./certroutine.sh genkey прокатила.
Команда ./certroutine.sh gencrt выдаёт ошибку.
QDesNik
03.05.2016 - 21:06
Ругается на параметры команды rm и ln в тексте:
gencrt() {
umask 77
[ ! -f $KEY ] && genkey
createconfig
$OPENSSL req $UTF8 -new -key $KEY -x509 -days $DAYS -out $CRT $CONFIG -set_serial $SERIAL
rm -f $CNF
CRTHASH=`openssl x509 -hash -noout -in $CRT`.0
rm -f ${TLSROOT}/certs/$CRTHASH
ln -s $CN.crt ${TLSROOT}/certs/$CRTHASH
return 0
Здесь всё верно прописано?
QDesNik
23.05.2016 - 23:11
Сайт хоть живой?
Wakko
23.05.2016 - 23:12
Когда как.
QDesNik
23.05.2016 - 23:40
Подскажи, если не сложно по скрипту, в нем всё верно? На Centos 7 не проходит команда /certroutine.sh gencrt .
Ругается на параметры команды rm и ln в тексте:
gencrt() {
umask 77
[ ! -f $KEY ] && genkey
createconfig
$OPENSSL req $UTF8 -new -key $KEY -x509 -days $DAYS -out $CRT $CONFIG -set_serial $SERIAL
rm -f $CNF
CRTHASH=openssl x509 -hash -noout -in $CRT.0
rm -f ${TLSROOT}/certs/$CRTHASH
ln -s $CN.crt ${TLSROOT}/certs/$CRTHASH
return 0
Если в коде все верно прописано буду ковыряться с правами.
Возможно система блокирует эти 2 команды.
Из-за них всё дело встало.
Wakko
23.05.2016 - 23:42
А блок User Settings весь заполнен?
QDesNik
23.05.2016 - 23:47
Да, весь.
Wakko
23.05.2016 - 23:49
Хорошо, завтра проверю скрипт ещё раз.
QDesNik
23.05.2016 - 23:50
Команда ./certroutine.sh genkey прокатила.
Команда ./certroutine.sh gencrt выдаёт ошибку.
Wakko
24.05.2016 - 21:28
https://www.dropbox.com/s/8854iikssqatwsu/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202016-05-24%20%D0%B2%2021.27.08.png?dl=0
Ещё раз проверил – всё работает.
QDesNik
24.05.2016 - 21:40
Буду ковырять дальше, видимо дело в правах доступа.
Ругается на параметры команды rm и ln
Wakko
24.05.2016 - 21:42
Я из под рута выполнял.
QDesNik
24.05.2016 - 21:44
Я тоже из-под рута.
Wakko
24.05.2016 - 21:46
Добавьте в скрипт echo перед командой, которая выполняется с ошибкой. Будет понятно что там пытается выполниться.
QDesNik
24.05.2016 - 21:47
В какой папке должен находится скрипт во время запуска?
Может что-то с правами доступа на папку.
Wakko
24.05.2016 - 21:48
Не важно в какой.
QDesNik
24.05.2016 - 22:08
Может в настройках ~/.bashrc что-то неверное прописано, настраивал с этого сайта.
QDesNik
25.05.2016 - 00:01
rm: invalid option — ‘x’
Try ‘rm —help’ for more information.
ln: invalid option — ‘x’
Try ‘ln —help’ for more information.
QDesNik
24.05.2016 - 22:05
[root@art-computers `]# ./certroutine.sh gencrt
-bash: ./certroutine.sh: Perrmission denied
Доступ запрещён
QDesNik
25.05.2016 - 00:18
Перед CRTHASH знак $ не должен стоять?
./certroutine.sh: line 162: =openssl -x509 -hash -noout -in $CRT.0: command not found
rm: cannot remove ‘/etc/pki/tls/certs/’: Is a directory
ln: failed to create symbolic link ‘/etc/pki/tls/certs/www.art-computers.ru.crt’: File exists
[root@art-computers home]#
Wakko
27.05.2016 - 12:04
Не должен, потому что мы переменной присваиваем значение, а не используем его. Писать нужно:
TEMP="bla-bla-bla"
но
echo $TEMP
QDe$Nik
27.05.2016 - 12:54
Понял, спасибо.
QDesNik
25.05.2016 - 00:38
Если не сложно скинь файл скрипта чтобы я выявил в чем ошибка.
art.computers@yandex.ru
QDesNik
23.05.2016 - 23:50
Может в SELINUX надо что-нить поправить?
QDesNik
23.05.2016 - 23:53
Большое спасибо.
Игорь
25.08.2016 - 14:33
Предлагаю добавить в статью про letsencrypt, так будет и по взрослому и просто))
Автору спасибо!
Viktr
04.10.2017 - 14:23
wget https://www.startssl.com/certs/sub.class1.server.ca.pem
—2017-10-04 14:19:09— https://www.startssl.com/certs/sub.class1.server.ca.pem
Распознаётся http://www.startssl.com (www.startssl.com)… 104.192.110.234
Подключение к http://www.startssl.com (www.startssl.com)|104.192.110.234|:443… соединение установлено.
ОШИБКА: Нет доверия сертификату для «www.startssl.com».
ОШИБКА: Сертификат «www.startssl.com» неизвестно кем выпущен.