SSL/TLS-сертификаты для лентяев
Если в двух словах, то SSL/TLS-сертификат (SSL: Secure Sockets Layer, TLS: Transport Layer Security) – это уникальная цифровая подпись, необходимая для организации защищенного соединения между клиентом и сервером.
Создание SSL-сертификата условно можно разделить на следующие шаги:
- создание личного ключа (Private Key);
- создание запроса для получения сертификата (Certificate Signing Request);
- создание самоподписанного сертификата (Self-Signed Certificate).
Для создания сертификатов я написал небольшой скриптик:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
#!/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 |
В верхней части скрипта можно заполнить дефолтные значения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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" |
Тогда для создания ключа и самоподписанного сертификата, нужно будет выполнить:
1 2 3 4 5 6 7 8 |
$ ./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: Безотносительно скрипта, если при проверке любого сертификата пишется что-то типа:
1 2 3 |
/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
отсутствует необходимая информация для проверки. Необходимо убедиться, что в этой папке присутствует проверяемый сертификат, а так же присутствуем симлинк с хэшем вместо имени, на проверяемый сертификат. Если симлинка нет – его необходимо создать:
1 2 |
$ cd /etc/pki/tls/certs $ ln -s $CRT `openssl x509 -hash -noout -in $CRT`.0 |
Где вместо $CRT
– имя файла нашего сертификата.
Если планируется подписывать сертификат по-взрослому, на стороне – необходимо создать личный ключ и запроса для получения сертификата:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$ ./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
-файла необходимо будет отправлять в компанию, которая будет заверять ваш сертификат.
Так же, скриптом можно пользоваться вот таким образом:
1 2 3 4 5 |
$ 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, не забудьте сделать следующее:
1 2 3 |
$ 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 |
Иначе при верификации сертификата будете получать ошибку:
1 2 3 |
$ 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''
createconfig() {'home/centos/Desktop/1.sh: line 253:
Константин
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
.0rm -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» неизвестно кем выпущен.